cancel
Showing results for 
Search instead for 
Did you mean: 

[STM32WB55 Nucleo] Unable to update FUS or the wireless stack (FUS_STATE_ERR_UNKNOWN)

OShen.1
Associate II

I was trying to flash my STM32WB Nucleo board with the latest (v1.2.0) FUS image using the CubeProgrammer. However, it fails with the following error.

  14:15:16 : Old Firmware delete ...
  14:15:16 : Warning: Option Byte: nSWboot0, value: 0x0, was not modified.
  14:15:16 : Warning: Option Byte: nboot0, value: 0x1, was not modified.
  14:15:16 : Warning: Option Byte: nboot1, value: 0x1, was not modified.
  14:15:16 : Warning: Option Bytes are unchanged, Data won't be downloaded
  14:15:16 : Succeeded to set nSWboot0=0 nboot1=1 nboot0=1 
  14:15:16 : Memory Programming ...
  14:15:16 : Opening and parsing file: 0x495_FUS_Operator.bin
  14:15:16 :   File          : 0x495_FUS_Operator.bin
  14:15:16 :   Size          : 8 KBytes
  14:15:16 :   Address       : 0x08000000 
  14:15:16 : Erasing memory corresponding to segment 0:
  14:15:16 : Erasing internal memory sectors [0 1]
  14:15:16 : Download in Progress:
  14:15:17 : File download complete
  14:15:17 : Time elapsed during download operation: 00:00:00.267
  14:15:17 : Application is running, Please Hold on...
  14:15:24 : Reconnecting...
  14:15:24 : Reconnected !
  14:15:24 : Error: FUS_STATE_ERR_UNKNOWN

I tried "Start FUS" and "Read FUS infos" and got this:

0693W00000FCJ0YQAX.pngIt indicates that the FUS Version is v0.0.0.0, which looks quite weird! Besides, the option byte reading of the MCU is:

   -------------------------------------------------------------------

            STM32CubeProgrammer v2.8.0

   -------------------------------------------------------------------

ST-LINK SN : 066FFF3736324D5043233624

ST-LINK FW : V2J38M27

Board    : P-NUCLEO-WB55

Voltage   : 3.26V

SWD freq  : 4000 KHz

Connect mode: Normal

Reset mode : Software reset

Device ID  : 0x495

Revision ID : Rev Y

Device name : STM32WB5x

Flash size : 1 MBytes

Device type : MCU

Device CPU : Cortex-M4

BL Version : 0xd5

Debug in Low Power mode enabled

UPLOADING OPTION BYTES DATA ...

 Bank     : 0x00

 Address    : 0x58004020

 Size     : 96 Bytes

██████████████████████████████████████████████████ 100%

 Bank     : 0x01

 Address    : 0x58004080

 Size     : 8 Bytes

██████████████████████████████████████████████████ 100%

OPTION BYTES BANK: 0

  Read Out Protection:

   RDP     : 0xAA (Level 0, no protection)

  BOR Level:

   BOR_LEV   : 0x0 (BOR Level 0 reset level threshold is around 1.7 V)

  User Configuration:

   nBOOT0    : 0x1 (nBOOT0=1 Boot from main Flash)

   nBOOT1    : 0x1 (Boot from code area if BOOT0=0 otherwise system Flash)

   nSWBOOT0   : 0x0 (BOOT0 taken from the option bit nBOOT0)

   SRAM2RST   : 0x0 (SRAM2 erased when a system reset occurs)

   SRAM2PE   : 0x1 (SRAM2 parity check disable)

   nRST_STOP  : 0x1 (No reset generated when entering the Stop mode)

   nRST_STDBY  : 0x1 (No reset generated when entering the Standby mode)

   nRSTSHDW   : 0x1 (No reset generated when entering the Shutdown mode)

   WWDGSW    : 0x1 (Software window watchdog)

   IWGDSTDBY  : 0x1 (Independent watchdog counter running in Standby mode)

   IWDGSTOP   : 0x1 (Independent watchdog counter running in Stop mode)

   IWDGSW    : 0x1 (Software independent watchdog)

   IPCCDBA   : 0x0 (0x0)

  Security Configuration Option bytes - 1:

   ESE     : 0x1 (Security enabled)

  PCROP Protection:

   PCROP1A_STRT : 0x1FE (0x80FF000)

   PCROP1A_END : 0x0 (0x8000800)

   PCROP_RDP  : 0x0 (PCROP zone is kept when RDP is decreased)

   PCROP1B_STRT : 0x1FE (0x80FF000)

   PCROP1B_END : 0x0 (0x8000800)

  Write Protection:

   WRP1A_STRT  : 0xFF (0x80FF000)

   WRP1A_END  : 0x0 (0x8000000)

   WRP1B_STRT  : 0xFF (0x80FF000)

   WRP1B_END  : 0x0 (0x8000000)

OPTION BYTES BANK: 1

  Security Configuration Option bytes - 2:

   SFSA     : 0xF6 (0x80F6000)

   FSD     : 0x0 (System and Flash secure)

   DDS     : 0x1 (CPU2 debug access disabled)

   C2OPT    : 0x1 (SBRV will address Flash)

   NBRSD    : 0x0 (SRAM2b is secure)

   SNBRSA    : 0x10 (0x2003C000)

   BRSD     : 0x1 (SRAM2a is non-secure)

   SBRSA    : 0x0 (0x20030000)

   SBRV     : 0x3D800 (0x20000000)

Could someone please kindly advise why I am getting this error ((FUS_STATE_ERR_UNKNOWN) and how I can solve this issue? Thanks in advance!

17 REPLIES 17
Remi QUINTIN
ST Employee

WB FW V1.10.2 is an old version now as the most recent one is v1.13.1.

I would definitely recommend to try this version and check again.

Ok no issue regarding the stack size.

Are you using the latest CubeProgrammer version v 2.8.1?

This version has some additional features to trigger the FUS and read the FUS version whatever programming port is used.

Remi QUINTIN
ST Employee

>FUS version: first stm32wb5x_FUS_fw_1_0_2.bin, after - stm32wb5x_FUS_fw.bin from FW_WB V1.10.1. addr: 0x0807A000.

Was the update of stm32wb5x_FUS_fw_1_0_2.bin OK?

So the issue is with stm32wb5x_FUS_fw.bin?

Try the one which is part of WB FW v 1.13.

Ok, I'll try the new v1.13.1.

CubeProgrammer version - v 2.9.0

Thanks!

>Was the update of stm32wb5x_FUS_fw_1_0_2.bin OK?

No, this is the sequence I was aiming for.

The problem cannot be related to the library version.

I get an error FUS_STATE_ERR_UNKNOWN with any operation with FUS - fwdelete, read fuse infos, start FUS. The strangest thing is that USB DFU does not work on these chips yet. Is there a possible manufacturing error that the necessary firmware was not loaded into the chips?

Remi QUINTIN
ST Employee

USB DFU works if the 3 option bytes are properly set:

•nBOOT0 = N/A

•nBOOT1 = 1 (Checked = Use SysMemBL)

•nSWBOOT0 = 1 = Checked (Taken from pin)

•Set PH3/BOOT0 pin to High.

Could you check this?

Remi QUINTIN
ST Employee

Did you trigger "START FUS" button with CubeProgrammer and then read the version?

I've checked it many times. Moreover, on boards with WB55CG everything works without problems.

At any operation with FUS, including "Start FUS" I get an error:

FUS_STATE_ERR_UNKNOWN