Skip to main content
akravchenko9
Associate
December 26, 2014
Question

SPWF01SA firmware update

  • December 26, 2014
  • 9 replies
  • 1490 views
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?

    This topic has been closed for replies.

    9 replies

    akravchenko9
    Associate
    December 27, 2014
    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?

    Gerardo GALLUCCI
    ST Employee
    December 28, 2014
    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
    December 28, 2014
    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

    Gerardo GALLUCCI
    ST Employee
    December 28, 2014
    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
    December 28, 2014
    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
    February 23, 2015
    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?

    Gerardo GALLUCCI
    ST Employee
    February 24, 2015
    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
    February 25, 2015
    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

    Gerardo GALLUCCI
    ST Employee
    February 26, 2015
    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.