Skip to main content
zabel
Associate III
Mar 2, 2023 12:48 PM UTC
Question

Cannot load Wireless firmware into STM32WB55 Nucleo board

Hi, am using the STM32WB55 Nucleo board. My problem is, currently I

seem not to have a CPU2 wireless stack loaded and I fail to load file

stm32wb5x_BLE_Stack_full_fw.bin loaded into the Flash. I am using the

STM32CubeProgrammer V2.12.0. When selecting on the Firmware Upgrade

Service Button and clicking on "Read FUS infos", I get:

FUS State: FUS_IDLE

FUS Status: FUS_NO_ERROR

FUS Version: v0.0.0.0

FUS Operator: v3.1.0

When I click on "Start Wireless Stack", this happens:

 13:20:53 : Warning: Option Byte: nSWboot0, value: 0x0, was not modified.

 13:20:53 : Warning: Option Byte: nboot0, value: 0x1, was not modified.

 13:20:53 : Warning: Option Byte: nboot1, value: 0x1, was not modified.

 13:20:53 : Warning: Option Bytes are unchanged, Data won't be downloaded

 13:20:53 : Time elapsed during option Bytes configuration: 00:00:00.000

 13:20:53 : Succeeded to set nSWboot0=0 nboot1=1 nboot0=1

 13:20:53 : Memory Programming ...

 13:20:53 : Opening and parsing file: 0x495_FUS_Operator.bin

 13:20:53 :  File         : 0x495_FUS_Operator.bin

 13:20:53 :  Size         : 8.00 KB

 13:20:53 :  Address      : 0x08000000

 13:20:53 : Erasing memory corresponding to segment 0:

 13:20:53 : Erasing internal memory sectors [0 1]

 13:20:53 : Download in Progress:

 13:20:53 : File download complete

 13:20:53 : Time elapsed during download operation: 00:00:00.532

 13:20:54 : Application is running, Please Hold on...

 13:20:55 : Reconnecting...

 13:20:55 : Reconnected !

 13:20:55 : Error: FUS_STATE_ERR_UNKNOWN: Unknown error

 13:20:55 : Start Wirless Stack failed

 13:20:55 : Warning: Option Byte: nSWboot0, value: 0x0, was not modified.

 13:20:55 : Warning: Option Byte: nboot0, value: 0x1, was not modified.

 13:20:55 : Warning: Option Byte: nboot1, value: 0x1, was not modified.

 13:20:55 : Warning: Option Bytes are unchanged, Data won't be downloaded

 13:20:55 : Time elapsed during option Bytes configuration: 00:00:00.000

 13:20:55 : Succeeded to set nSWboot0=0 nboot1=1 nboot0=1

 13:20:55 : Memory Programming ...

 13:20:55 : Opening and parsing file: 0x495_FUS_Operator.bin

 13:20:55 :  File         : 0x495_FUS_Operator.bin

 13:20:55 :  Size         : 8.00 KB

 13:20:55 :  Address      : 0x08000000

 13:20:55 : Erasing memory corresponding to segment 0:

 13:20:55 : Erasing internal memory sectors [0 1]

 13:20:55 : Download in Progress:

 13:20:55 : File download complete

 13:20:55 : Time elapsed during download operation: 00:00:00.542

 13:20:55 : Application is running, Please Hold on...

 13:20:56 : Reconnecting...

 13:20:56 : Reconnected !

 13:20:56 : Error: FUS_STATE_ERR_UNKNOWN: Unknown error

 13:20:56 : Start Wireless Stack Operation Failure! Please, try again

So it seems, there is no Wireless Stack present. And if I try to load

it, this also fails: I want to use stm32wb5x_BLE_Stack_full_fw.bin

(V1.15). From the release note, I learn that the correct start address

is 0x080CE000. I have the

"First install" checkbox deselected, and the "Verify download"

selected. The Start Address field is set to 0x080CE000. On clicking

"Firmware Upgrade", I get this log:

 13:23:58 : Old Firmware delete ...

 13:23:58 : Warning: Option Byte: nSWboot0, value: 0x0, was not modified.

 13:23:58 : Warning: Option Byte: nboot0, value: 0x1, was not modified.

 13:23:58 : Warning: Option Byte: nboot1, value: 0x1, was not modified.

 13:23:58 : Warning: Option Bytes are unchanged, Data won't be downloaded

 13:23:58 : Time elapsed during option Bytes configuration: 00:00:00.001

 13:23:58 : Succeeded to set nSWboot0=0 nboot1=1 nboot0=1

 13:23:58 : Memory Programming ...

 13:23:58 : Opening and parsing file: 0x495_FUS_Operator.bin

 13:23:58 :  File         : 0x495_FUS_Operator.bin

 13:23:58 :  Size         : 8.00 KB

 13:23:58 :  Address      : 0x08000000

 13:23:58 : Erasing memory corresponding to segment 0:

 13:23:58 : Erasing internal memory sectors [0 1]

 13:23:58 : Download in Progress:

 13:23:59 : File download complete

 13:23:59 : Time elapsed during download operation: 00:00:00.532

 13:23:59 : Application is running, Please Hold on...

 13:24:06 : Reconnecting...

 13:24:06 : Reconnected !

 13:24:06 : Warning: FUS_STATE_ERR_UNKNOWN

And when trying to start the firmware, I still get 2 dialog boxes

 "Error: FUS_STATE_ERR_UNKNOWN error", and the log window shows:

 13:26:37 : Warning: Option Byte: nSWboot0, value: 0x0, was not modified.

 13:26:37 : Warning: Option Byte: nboot0, value: 0x1, was not modified.

 13:26:37 : Warning: Option Byte: nboot1, value: 0x1, was not modified.

 13:26:37 : Warning: Option Bytes are unchanged, Data won't be downloaded

 13:26:37 : Time elapsed during option Bytes configuration: 00:00:00.000

 13:26:37 : Succeeded to set nSWboot0=0 nboot1=1 nboot0=1

 13:26:37 : Memory Programming ...

 13:26:37 : Opening and parsing file: 0x495_FUS_Operator.bin

 13:26:37 :  File         : 0x495_FUS_Operator.bin

 13:26:37 :  Size         : 8.00 KB

 13:26:37 :  Address      : 0x08000000

 13:26:37 : Erasing memory corresponding to segment 0:

 13:26:37 : Erasing internal memory sectors [0 1]

 13:26:37 : Download in Progress:

 13:26:38 : File download complete

 13:26:38 : Time elapsed during download operation: 00:00:00.533

 13:26:38 : Application is running, Please Hold on...

 13:26:39 : Reconnecting...

 13:26:39 : Reconnected !

 13:26:39 : Error: FUS_STATE_ERR_UNKNOWN: Unknown error

 13:26:39 : Start Wirless Stack failed

 13:26:39 : Warning: Option Byte: nSWboot0, value: 0x0, was not modified.

 13:26:39 : Warning: Option Byte: nboot0, value: 0x1, was not modified.

 13:26:39 : Warning: Option Byte: nboot1, value: 0x1, was not modified.

 13:26:39 : Warning: Option Bytes are unchanged, Data won't be downloaded

 13:26:39 : Time elapsed during option Bytes configuration: 00:00:00.001

 13:26:39 : Succeeded to set nSWboot0=0 nboot1=1 nboot0=1

 13:26:39 : Memory Programming ...

 13:26:39 : Opening and parsing file: 0x495_FUS_Operator.bin

 13:26:39 :  File         : 0x495_FUS_Operator.bin

 13:26:39 :  Size         : 8.00 KB

 13:26:39 :  Address      : 0x08000000

 13:26:39 : Erasing memory corresponding to segment 0:

 13:26:39 : Erasing internal memory sectors [0 1]

 13:26:39 : Download in Progress:

 13:26:39 : File download complete

 13:26:39 : Time elapsed during download operation: 00:00:00.534

 13:26:39 : Application is running, Please Hold on...

 13:26:40 : Reconnecting...

 13:26:40 : Reconnected !

 13:26:40 : Error: FUS_STATE_ERR_UNKNOWN: Unknown error

 13:26:40 : Start Wireless Stack Operation Failure! Please, try again

I have found some similar questions:

  • Issue: Attempting to flash firmware onto coprocessor on STM32WB55RGV6

results in Error: FUS_STATE_ERR_UNKNOWN

  • [STM32WB55 Nucleo] Unable to update FUS or the wireless stack

(FUS_STATE_ERR_UNKNOWN)

but both threads do not seem to have a solution.

I also read the AN5185 as well as the STM32WB_FUS wiki I am not allowed to post a link here, so I will split it:

"stm32mcu/wiki/Connectivity:STM32WB_FUS"

on

wiki.st.com/

but to no avail.

I tried to identify the FUS version. IPCCDBA option byte is 0, but the whole

memory starting at 02x0030000 contains only 0x000000, so I don't find

the Device info table.

The SBRV option bytes contain 0x3d800, so this seems to indicate I

have FUS V0.5.3 loaded.

These seem to be the relevant option bytes on my board:

RDP: 0xAA (nor read protection)

nBOOT0: 1

nBOOT1: 1

ESE: unchecked

SFSA: 0xd4

FSD, DDS, C2OPT, NBRSD: checked

SNBRSA: 0x13

BRSD: checked

SBRSA: 0x0a

SBRV: 0x3d800

Any help would by nice!

Regards

 Dirk

This topic has been closed for replies.

12 replies

MM..1
Super User
Mar 2, 2023 3:02 PM UTC

On left side release html info is step by step howto update. Primary first need update FUS.

zabel
zabelAuthor
Associate III
Mar 2, 2023 3:50 PM UTC

The problem is, that step 4 of that instruction does not work, i.e. I have no reliable information about the current FUS version (0.0.0.0 is not mentioned as possible value). I only assume it is 0.5.3 from the SBRV value, but I am not sure. And I don't want to brick my board.

[D:\work]STM32_Programmer_CLI.exe -c port=swd -startfus
 -------------------------------------------------------------------
 STM32CubeProgrammer v2.12.0
 -------------------------------------------------------------------
 
ST-LINK SN : 066FFF545057717867055444
ST-LINK FW : V2J40M27
Board : P-NUCLEO-WB55
Voltage : 3.26V
SWD freq : 4000 KHz
Connect mode: Normal
Reset mode : Software reset
Device ID : 0x495
Revision ID : Rev B
Device name : STM32WB5x/35xx
Flash size : 1 MBytes
Device type : MCU
Device CPU : Cortex-M4
BL Version : 0xD2
Debug in Low Power mode enabled
 
Warning: Option Byte: nSWboot0, value: 0x0, was not modified.
Warning: Option Byte: nboot0, value: 0x1, was not modified.
Warning: Option Byte: nboot1, value: 0x1, was not modified.
Warning: Option Bytes are unchanged, Data won't be downloaded
Time elapsed during option Bytes configuration: 00:00:00.007
Succeeded to set nSWboot0=0 nboot1=1 nboot0=1
 
 
Memory Programming ...
Opening and parsing file: 0x495_FUS_Operator.bin
 File : 0x495_FUS_Operator.bin
 Size : 8.00 KB
 Address : 0x08000000
 
 
Erasing memory corresponding to segment 0:
Erasing internal memory sectors [0 1]
Download in Progress:
██████████████████████████████████████████████████ 100%
 
File download complete
Time elapsed during download operation: 00:00:00.580
Application is running, Please Hold on...
Reconnecting...
Reconnected !
Reconnecting...
Reconnected !
StartFus activated successfully
FUS_STATE_IDLE
startfus command execution finished
 
 
[D:\work]STM32_Programmer_CLI.exe -c port=swd mode=UR -r32 0x20030030 1
 -------------------------------------------------------------------
 STM32CubeProgrammer v2.12.0
 -------------------------------------------------------------------
 
ST-LINK SN : 066FFF545057717867055444
ST-LINK FW : V2J40M27
Board : P-NUCLEO-WB55
Voltage : 3.26V
SWD freq : 4000 KHz
Connect mode: Under Reset
Reset mode : Hardware reset
Device ID : 0x495
Revision ID : Rev B
Device name : STM32WB5x/35xx
Flash size : 1 MBytes
Device type : MCU
Device CPU : Cortex-M4
BL Version : 0xD2
Debug in Low Power mode enabled
 
 
Reading 32-bit memory content
 Size : 4 Bytes
 Address: : 0x20030030
 
0x20030030 : 00000000
 

MM..1
Super User
Mar 2, 2023 4:46 PM UTC

Use GUI Programmer not cli

zabel
zabelAuthor
Associate III
Mar 2, 2023 4:51 PM UTC

Just the same problem, see above: "FUS Version: v0.0.0.0"

And reading from 0x2003000 on gives ony 0x000000 for the whole range.

MM..1
Super User
Mar 2, 2023 4:53 PM UTC

Send PM teamviewer

MM..1
Super User
Mar 2, 2023 5:50 PM UTC

If you dont sucess maybe this help Unable to start FUS

zabel
zabelAuthor
Associate III
Mar 2, 2023 6:01 PM UTC

Had no success, could not update the FUS (ended up with "FUS_STATE_ERR_UNKNOWN). But your reference looks promising, at least the symptoms look very similar to the observed ones. Once again thank you for your help!

TillerBelotti
Associate
Mar 8, 2023 7:30 PM UTC

I have same issue, but with STM32WB15. Today I was updating it to 1.16 and got the same symptoms, option bytes are slightly different:

SBRV: 0x8400

SFSA: 0x31

When I click on read FUS infos, sometimes it shows FUS Version v23.ffffffa8.7d.ffffffef, but 99% of the time it shows 0.0.0.0. Start FUS always gives an error.

MM..1
Super User
Mar 8, 2023 8:46 PM UTC

Try slow down stlink speed from 4M to 400kHz or less

zabel
zabelAuthor
Associate III
Mar 9, 2023 9:20 AM UTC

Still no success, latest try was reducing the stlink speed to 100kHz.

TillerBelotti
Associate
Mar 9, 2023 9:22 AM UTC

Same here

Shrikrishna
Associate II
Mar 7, 2024 9:15 AM UTC

Refer this wiki for such issues: STM32WB Firmware Upgrade Service - stm32mcu (stmicroelectronics.cn)

See section FAQ.

Most of the time, safeboot is triggered due to corruption in option bytes or voltage fluctuations. See specifically 

 

Accidentally, I got SFSA = 0x00 and SBRV= 0x3FC00 what's happened?This is due to option byte corruption, or to supply voltage or level stability. This configuration of the SFSA/SBRV option bytes means that the STM32WB hardware forces the boot to Safeboot whatever the firmware being run. To activate Safeboot and perform a factory reset the user must activate the Cortex-M0+ by writing the value 0x00008000 to address 0x5800040C using the SWD interface.
If a FUS version lower than V1.1.0 is running, then no recovery is possible at this point.