Skip to main content
janis_sk
Associate II
May 16, 2019
Question

Restore STM32WB55 FUS firmware

  • May 16, 2019
  • 14 replies
  • 6945 views

I've deleted entire FLASH memory of STM32WB55 during testing. Is there a way to restore FUS and with that the wireless binaries?

As I understand they are encrypted so just writing them isn't working. Is there some tool to do that?

This topic has been closed for replies.

14 replies

RomainR.
ST Employee
May 17, 2019

​See into STM32Cube\Repository\STM32Cube_FW_WB_V1.1.0\Projects\STM32WB_Copro_Wireless_Binaries\Release_Notes.html

You must use STM32Cube_Programmer_cli.exe

STEP 5:

STM32_Programmer_CLI.exe -c port=usb1 -fwupgrade stm32wb5x_FUS_fw.bin 0x080EC000 firstinstall=0

regards

rrom

To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.
janis_sk
janis_skAuthor
Associate II
May 22, 2019

Sorry for long delay.

Yes I tried that step, but it doesn't work.

I've red release notes and in step 4 it says to read FUS version - I have 0x20030030 = 00000000 because I don't have FUS anymore, I've deleted it.

As I said I deleted entire memory - the whole 1MB. I removed ESE bit and mass erased. I don't have FUS in that part anymore.

I can update FUS and binaries on brand new devices, but they seem to come pre programmed from factory.

Adrian Eggenberger
Associate II
May 21, 2019

Hi

In my case the programming of the FUS with your proposed command line end in the following output:

RSS status is RSS_IMAGE_NOT_AUTHENTIC

Error: Firmware not authentic!

What is wrong?

Regards Adrian

KGods
Associate II
May 22, 2019

I see the same problem. Full log below...

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

            STM32CubeProgrammer v2.1.0

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

USB speed  : Full Speed (12MBit/s)

Manuf. ID  : STMicroelectronics

Product ID : DFU in FS Mode

SN     : 208338983036

FW version : 0x011a

Device ID  : 0x0495

Device name : STM32WBxx

Flash size : 1 MBytes

Device type : MCU

Device CPU : Cortex-M0+/M4

RSS state is RSS_SERVICE_ONGOING

RSS status is RSS_IMAGE_NOT_FOUND

RSS state is RSS_IDLE

RSS status is RSS_NO_ERROR

Old Firmware delete ...

Deleting firmware ...

Firmware delete finished

RSS state is RSS_SERVICE_ONGOING

RSS status is RSS_IMAGE_NOT_FOUND

RSS state is RSS_IDLE

RSS status is RSS_NO_ERROR

Download firmware image at address 0x80ec000 ...

Memory Programming ...

Opening and parsing file: stm32wb5x_FUS_fw.bin

 File     : stm32wb5x_FUS_fw.bin

 Size     : 24492 Bytes

 Address    : 0x080EC000

Erasing memory corresponding to segment 0:

Erasing internal memory sectors [236 241]

Download in Progress:

File download complete

Time elapsed during download operation: 00:00:00.594

RSS state is RSS_IDLE

RSS status is RSS_NO_ERROR

Firmware Upgrade process started ...

Updating firmware ...

Waiting for firmware upgrade end

RSS state is WIRELESS_STACK_UPGRADE_ONGOING

RSS status is RSS_NO_ERROR

RSS state is WIRELESS_STACK_UPGRADE_ONGOING

RSS status is RSS_IMAGE_NOT_AUTHENTIC

Error: Firmware not authentic!

Adrian Eggenberger
Associate II
May 22, 2019

Hi

I was able to fix my RSS_IMAGE_NOT_AUTHENTIC issue by erasing the chip:

1) Set read protection to 0xBB

2) Set read protection to 0xAA (will erase the chip)

Maybe this helps as well in your case.

Regards Adrian

Michael Bauer
Associate III
September 25, 2019

Thank you Janis for your response. Perhaps I don't need to wipe it clean to get it working. I was following this thread because of the behavior when I tried to reload the FUS at a different address.

I probably should have started by asking whether the fact that I loaded the FUS at the wrong location would cause any possible problems (0x803E000 instead of 0x80EC000 for the 1MB flash size on the board). Do you have any idea? Because it seems that this is probably causing some problems for us. We have a modified example (Cable Replacement) build which works with a standard unmodified Nucleo board (no change to the FUS/radio SW) but does NOT work on the board which I flashed these. There could always be something else about this board causing this but what I was trying to do here was relocate the FUS to the proper address to rule it out. The erroneous behavior is that the BLE stack does not seem to be communicating with the application.

SMako
Associate II
October 4, 2019

Hi everybody! I had this issue as well.

Fixed it by:

1 - Booting board with BOOT0 connected to VDD.

2 - Connect STLink to SWD of MCU

3 - Target - Erase sectors

4 - Select all sectors and erase

Some last sectors were not erased.

After reboot i was able to flash my IC =)

 Before:

0690X000009k4eNQAQ.png

After:

0690X000009k4fGQAQ.png

MCope.1
Associate II
April 10, 2020

Thank you! This worked for me as well. As someone noted above, the "not authentic!" problem started after I tried installing to the wrong start address. I followed your steps and now have it updated.

RPuja.1
Visitor II
January 11, 2020

Is STLINK enough to load the binaries to CPU2 or we need to have access to the STM32WB USB port?

janis_sk
janis_skAuthor
Associate II
January 13, 2020

STLINK will be enough. The latest version can now update wireless binaries. Keep in mind that when using STLINK you won't get back version of FUS by reading RAM as per update instruction manual. Some identification commands also don't work, but you can update FUS and wireless binaries.

Also note that CPU2 uses same FLASH only that you can protect part of FLASH from access from CPU1. This is done during manufacturing with preloading of FUS/BT.

RPuja.1
Visitor II
January 15, 2020

Thank you. It worked with ST-LINK. I wasted a lot of time reprogramming the images repeatedly because the RAM values always gave 0x00. Thanks for the clarification.

Yes i am using STM32WBCC part with lesser memory, had to change address to different values to make it work. And also damaged a chip in the process as its flash sector got corrupt in experimentation. Tried full chip erase and all sector erases by STLINK utility, Couldnt revive it.

JNewe.1
Visitor II
January 21, 2020

I just responded in another thread

As far as i am aware ST updated their FUS a few months ago and the new code cannot be put on devices with an older FUS. We had to destroy a number of boards due to this

Maybe this helps.

h.h.p
Visitor II
January 25, 2021

@J�?nis Skujenieks​  Did you find the solution?

I have the same problem in my project.

When trying to reprogram my device, I've deleted the memory too.

h.h.p
Visitor II
January 25, 2021

@J�?nis Skujenieks​ 

I'm having the same issue here.

My device returns 0x20030030 = 00000000, because i've deleted the memory.

Did you find any solution for the problem?

janis_sk
janis_skAuthor
Associate II
January 25, 2021

The only solution would be to get FUS in plaintext and flash it yourself, but I don't think this will ever happen. At least officially from ST side.

h.h.p
Visitor II
January 25, 2021

@J�?nis Skujenieks​ 

So, does that mean I lost my development board? I can't get it back.