cancel
Showing results for 
Search instead for 
Did you mean: 

STM32WB55MMG Cannot Start FUS form running firmware to wirelessly update BLE stack

SAli.8
Associate II

Respected Members,

We are using STM32Cube Package 1.16.0 and STM32CubeIDE v1.12.1. We have 10,000 devices in market with BLE stack v1.16.0 and FUS v1.2.0 (STM32WB5MMG). We encountered a BLE related disconnection bug that was resolved when we switch to BLE stack v1.21.0 so now the idea is to wirelessly OTA BLE stack of CM0+ and firmware binary of CM4+.

But the problem is that whenever I make a call to FUS using SHCI_C2_FUS_GetState(NULL), it is blocked and keeps waiting on shci_send( SHCI_OPCODE_C2_FUS_GET_STATE, 0, 0, p_rsp ); This call never returns if I check with debugger (STLINK-V3 using IDE attached).

Now, if I manually start FUS from CubeProgrammer, then re-run the firmware, FUS get state works but I cannot do this on working devices deployed in the field. If BLE stack is running, I cannot seem to get this call SHCI_C2_FUS_GetState(NULL) to work.

The startup script and linker script is attached as well along with .ioc file used to generate project (wb_1.21.0.zip). This project is using CubeWB v1.21.0. The behavior with CubeWB 1.16.0 is also same on my side. You can check my UART traces from BLE stack as well below:

SAli8_0-1744621685760.png

The main is as follows, attached.

Any help will be much appreciated.

1 REPLY 1
FilipKremen
ST Employee

Hello,

please don't call this function in the main. In the while loop, there should be only MX_APPE_Process() function.

I recommend having a look at BLE_Ota example where you find how it's implemented.

(Please check the otas_app.c file)

Also, please have a look at these links below which can be helpful for your implementation.

How to build wireless applications with STM32WB MCUs - Application note

Over-the-air application and wireless firmware update for STM32WB series microcontrollers - Application note

 

Best regards,

ST support