STM32WB55MMG Cannot Start FUS form running firmware to wirelessly update BLE stack
- April 14, 2025
- 4 replies
- 741 views
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:

The main is as follows, attached.
Any help will be much appreciated.
