cancel
Showing results for 
Search instead for 
Did you mean: 

SPWF01SA firmware update

akravchenko9
Associate II
Posted on December 26, 2014 at 17:50

After firmware update, module does not working.

I was using a cople firmware versions:

-- SPWF01S-140512-703c969-RELEASE-main.bin

-- SPWF01S-140805-3f58d6b-RELEASE-main.bin

each one is does not working.

As start address  I used 0x8008200.

After couple tests I decided to read hex flash data from the second Wi-Fi module and write it to the old one. As result - > The old one is working.

On the next step I was using STM32 ST-LINK Utility for the flash programing, start from the 0x8008200 address. But module is still does not working...

Could somebody explain me what I am  doing wrong?

9 REPLIES 9
akravchenko9
Associate II
Posted on December 27, 2014 at 16:02

If I trying to use OTA for the FW upgrading, I see:

''F/W update model 'SPWF' not matching local 'SPWF01SA'

===

Ok... How should I understand this? Does it mean that my WiFi module is different from the SPWF01SA?

Posted on December 28, 2014 at 10:32

Hi Artem,

could you please share the content of AT&V command?

A couple of questions:

- which FW version is the working one?

- which FW version was inside the module, before any update?

- what does it happens when a not working FW run? UART, LEDs, etc...

Sorry for this.

jerry
akravchenko9
Associate II
Posted on December 28, 2014 at 15:31

I guess, the firmware version for the working module is: 1203-121218_01-30-gf756599-stm_demo

After ''upgrading'' I don't see any blinking on the leds side (leds are OFF) and no answer from the UART.

AT&V

=========

+WIND:2:RESET\0xff\0x00

+WIND:1:Poweron (1203-121218_01-30-gf756599-stm_demo)

+WIND:13:Sagrad IWM: Copyright (c) 2012 Sagrad, Inc. All rights Reserved.

+WIND:3:Watchdog Running

+WIND:0:Console active

+WIND:46:WPA: Crunching PSK...

+WIND:32:WiFi Hardware Started

+WIND:21:WiFi Scanning

+WIND:35:WiFi Scan Complete (0x0)

+WIND:19:WiFi Join: 6C:62:6D:24:99:4D

+WIND:25:WiFi Association with 'Unknow' successful

+WIND:51:WPA Handshake Complete

+WIND:24:WiFi Up: 192.168.1.8

# Dumping All Configuration Keys:

# nv_manuf = ST

# nv_model = SPWF01SA

# nv_serial = 1613D28033

# nv_wifi_macaddr = 00:80:E1:FF:8D:10

# user_desc = (unset)

# localecho1 = 0

# console_uart = 1

# console1_speed = 115200

# console1_hwfc = 0

# console1_enabled = 1

# console2_speed = 115200

# console2_enabled = 0

# localecho2 = 1

# console3_enabled = 0

# console3_speed = 115200

# localecho3 = 1

# sleep_enabled = 0

# wifi_tx_msdu_lifetime = 0

# wifi_rx_msdu_lifetime = 0

# wifi_opr_rate_mask = 0xFFFFFFFF

# wifi_bas_rate_mask = 0x0000000F

# wifi_beacon_interval = 100

# wifi_rts_threshold = 3000

# wifi_ssid = 55:6E:6B:6E:6F:77:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00

# wifi_ssid_len = 6

# wifi_channelnum = 6

# wifi_mode = 1

# wifi_auth_type = 0

# wifi_atim_window = 0

# wifi_listen_interval = 3

# wifi_powersave = 0

# wifi_tx_power = 30

# wifi_rssi_thresh = 0

# wifi_rssi_hyst = 0

# wifi_beacon_loss_thresh = 10

# wifi_print_scan_results = 0

# wifi_priv_mode = 2

# wifi_wep_keys[0] = 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00

# wifi_wep_keys[1] = 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00

# wifi_wep_keys[2] = 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00

# wifi_wep_keys[3] = 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00

# wifi_wep_key_lens = 00:00:00:00

# wifi_wep_default_key = 0

# wifi_wpa_psk_raw = 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00

# wifi_wpa_psk_text = Gogo

# wifi_eap_identity =

# wifi_eap_anon_identity =

# wifi_eap_passwd =

# wifi_eap_subject_match =

# wifi_eap_altsubject_match =

# wifi_eap_peap_options =

# wifi_eap_type = 0

# ip_use_dhcp = 0

# ip_use_httpd = 1

# ip_mtu = 1500

# ip_hostname = sagrad1203

# ip_ipaddr = 192.168.1.8

# ip_netmask = 255.255.255.0

# ip_gw = 192.168.1.3

# ip_dns = 192.168.1.3

# ip_http_get_recv_timeout = 1000

# ip_dhcp_timeout = 232

OK

Posted on December 28, 2014 at 18:31

Hi Artem,

I try to figure out what's happening.

&You are moving from a 2012 release (the oldest). There is a big big difference from latest releases to that one: usage of low speed external oscillator. After upgrading you should see no LED blinking, and no activity over UART, This ''bad but know'' behavior should stop with a simple power off/on of the module. There is a sort of inner fine-tuning inside the module, needed to be performed on the very first power on of the module after upgrade.

This is a one-shot process. Once in a module's lifetime.

I assume:

- you already powered off (and on again) the module after update from 2012 release?

- 0x8008200 is wrong. 0x8002800 is the right one. It was a typo, wasn't it?

Thanks for details.

Sorry but I'm really far from offices, and I can not test your issue.

jerry

akravchenko9
Associate II
Posted on December 28, 2014 at 19:22

Thanks indeed!

As usual, simple solution which need to be know 🙂

After upgrading, power OFF-ON and some time waiting -- helped me.

danielkorbes
Associate II
Posted on February 23, 2015 at 12:23

I´m having the same problem, but after power off/on, there is no uart response and no blinking LED´s.

Using Flash Loader and FW_update (prompt) I can write any version without error.

Can I ''bricked'' my module anyhow?

Posted on February 24, 2015 at 08:45

Hi Daniel,

I need some info:

- which Flash Loader (ST software) version did you use? Please note that, if you specified a wrong starting address (different from 0x08002800), module is ''broken''. You'll need to contact your local ST support, and ask for a ''full image''.

- which ''original'' FW version?

- which ''target'' FW version?

I'll try to replicate your issue.

Thanks

jerry

ps: blink led is, by default, disabled. Check WiFi led (or UART) to be sure that module is alive.

danielkorbes
Associate II
Posted on February 25, 2015 at 17:46

I solved my problem!

I got another module and copied all the flash content using FlashLoader.

Then I used this ''full'' file and, again using FlashLoader, rewrite all flash memory, starting on 0x8000000 address.

After this, I had uart communication again. But in an old version.

I only could update to a new version using OTA update.

This is the AT&V response from the ''alive'' module:

# Dumping All Configuration Keys:

#  nv_manuf = ST

#  nv_model = SPWF01SA

#  nv_serial = 3513D41048

#  nv_wifi_macaddr = 00:80:E1:FF:90:E1

#  blink_led = 0

#  wind_off_low = 0x00000000

#  wind_off_medium = 0x00000000

#  wind_off_high = 0x00000000

#  user_desc = anonymous

#  escape_seq = at+s.

#  localecho1 = 0

#  console1_speed = 115200

#  console1_hwfc = 0

#  console1_enabled = 1

#  sleep_enabled = 0

#  standby_enabled = 0

#  standby_time = 10

#  wifi_tx_msdu_lifetime = 0

#  wifi_rx_msdu_lifetime = 0

#  wifi_operational_mode = 0x00000011

#  wifi_beacon_wakeup = 1

#  wifi_beacon_interval = 100

#  wifi_listen_interval = 0

#  wifi_rts_threshold = 3000

#  wifi_ssid = 53:54:54:65:73:74:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00

#  wifi_ssid_len = 6

#  wifi_channelnum = 6

#  wifi_opr_rate_mask = 0x00003FCF

#  wifi_bas_rate_mask = 0x0000000F

#  wifi_mode = 1

#  wifi_auth_type = 0

#  wifi_atim_window = 0

#  wifi_powersave = 0

#  wifi_tx_power = 18

#  wifi_rssi_thresh = 0

#  wifi_rssi_hyst = 0

#  wifi_ap_idle_timeout = 120

#  wifi_beacon_loss_thresh = 10

#  wifi_priv_mode = 0

#  wifi_wep_keys[0] = 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00

#  wifi_wep_keys[1] = 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00

#  wifi_wep_keys[2] = 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00

#  wifi_wep_keys[3] = 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00

#  wifi_wep_key_lens = 00:00:00:00

#  wifi_wep_default_key = 0

#  wifi_wpa_psk_raw = 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00

#  wifi_wpa_psk_text =

#  ip_use_dhcp = 1

#  ip_use_httpd = 1

#  ip_mtu = 1500

#  ip_hostname =

#  ip_apdomainname = captiveportal.net

#  ip_ipaddr = 192.168.0.50

#  ip_netmask = 255.255.255.0

#  ip_gw = 192.168.0.1

#  ip_dns = 192.168.0.1

#  ip_http_get_recv_timeout = 3000

#  ip_dhcp_timeout = 20

and from AT+S.STS:

# Status & Statistics:

#  version = 140805-3f58d6b-SPWF01S

#  reset_reason = 4

#  conf_flag = 5

#  system_uptime = 3284

#  system_sleeptime = 0

#  gpio_enable = 0

#  captiveportal = 0

#  wifi_state = 5

#  wifi_bssid = 00:00:00:00:00:00

#  wifi_aid = 0

#  wifi_channelnum = 0

#  wifi_sup_rate_mask = 0x003FFFCF

#  wifi_bas_rate_mask = 0x00000000

#  wifi_chan_activity2 = 0x00000112

#  wifi_max_tx_power = 18

#  wifi_reg_country =

#  wifi_dtim_period = 0

#  wifi_sleeping = 0

#  wifi_num_assoc = 0

#  ip_ipaddr = 0.0.0.0

#  ip_netmask = 0.0.0.0

#  ip_gw = 0.0.0.0

#  ip_dns = 0.0.0.0

#  ip_sock_open = 0

#  ip_sockd_port = 0

#  free_heap = 24432

#  min_heap = 23608

#  current_time = 3302

This is from the ''alive'' and updated module:

# Dumping All Configuration Keys:

#  nv_manuf = ST

#  nv_model = SPWF01SA1

#  nv_serial = 2914D34704

#  nv_wifi_macaddr = 00:80:E1:FF:CC:D3

#  blink_led = 0

#  wind_off_low = 0x00000000

#  wind_off_medium = 0x00000000

#  wind_off_high = 0x00000000

#  user_desc = anonymous

#  escape_seq = at+s.

#  localecho1 = 0

#  console1_speed = 115200

#  console1_hwfc = 0

#  console1_enabled = 1

#  sleep_enabled = 0

#  standby_enabled = 0

#  standby_time = 10

#  wifi_tx_msdu_lifetime = 0

#  wifi_rx_msdu_lifetime = 0

#  wifi_operational_mode = 0x00000011

#  wifi_beacon_wakeup = 1

#  wifi_beacon_interval = 100

#  wifi_listen_interval = 0

#  wifi_rts_threshold = 3000

#  wifi_ssid = 54:45:53:54:45:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00

#  wifi_ssid_len = 5

#  wifi_txfail_thresh = 5

#  wifi_channelnum = 6

#  wifi_opr_rate_mask = 0x00003FCF

#  wifi_bas_rate_mask = 0x0000000F

#  wifi_mode = 1

#  wifi_auth_type = 0

#  wifi_atim_window = 0

#  wifi_powersave = 0

#  wifi_tx_power = 18

#  wifi_rssi_thresh = 0

#  wifi_rssi_hyst = 0

#  wifi_ap_idle_timeout = 120

#  wifi_beacon_loss_thresh = 10

#  wifi_priv_mode = 2

#  wifi_wep_keys[0] = 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00

#  wifi_wep_keys[1] = 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00

#  wifi_wep_keys[2] = 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00

#  wifi_wep_keys[3] = 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00

#  wifi_wep_key_lens = 00:00:00:00

#  wifi_wep_default_key = 0

#  wifi_wpa_psk_raw = 5D:56:4F:E5:DE:15:25:34:BE:7C:66:69:31:01:CD:0F:52:79:B6:F4:E8:0A:98:20:DD:A5:93:F2:05:E3:D5:38

#  wifi_wpa_psk_text = senha123

#  ip_use_dhcp = 1

#  ip_use_httpd = 1

#  ip_mtu = 1500

#  ip_hostname = iwm-FF-CC-D3

#  ip_apdomainname = captiveportal.net

#  ip_ipaddr = 255.255.255.255

#  ip_netmask = 255.255.255.255

#  ip_gw = 255.255.255.255

#  ip_dns = 255.255.255.255

#  ip_http_get_recv_timeout = 3000

#  ip_dhcp_timeout = 20

#  ip_sockd_timeout = 250

and its AT+S.STS:

# Status & Statistics:

#  version = 150130-bab3232-SPWF01S

#  reset_reason = 0

#  conf_flag = 5

#  system_uptime = 286

#  system_sleeptime = 0

#  gpio_enable = 0

#  captiveportal = 0

#  wifi_state = 10

#  wifi_bssid = 18:33:9D:5F:9A:70

#  wifi_aid = 1

#  wifi_channelnum = 8

#  wifi_sup_rate_mask = 0x003FFFCF

#  wifi_bas_rate_mask = 0x0000000F

#  wifi_chan_activity2 = 0x00000000

#  wifi_max_tx_power = 18

#  wifi_reg_country =

#  wifi_dtim_period = 2

#  wifi_sleeping = 1

#  wifi_num_assoc = 0

#  ip_ipaddr = 172.16.1.6

#  ip_netmask = 255.255.255.0

#  ip_gw = 172.16.1.1

#  ip_dns = 172.16.1.1

#  ip_sock_open = 0

#  ip_sockd_port = 0

#  free_heap = 21184

#  min_heap = 20272

#  current_time = 412

Posted on February 26, 2015 at 08:34

It's fine for SPWF01Sx.1y

Do not repeat these steps using a module without integrated external flash (SPWF01Sx.2y). All production data (MAC address, for example) are lost.