STM32WB55 BLE_Ota bootloader issue
Hi,
I'm running into an issue with the provided OTA bootloader getting the device "bricked" after a firmware update.
Details about my setup
MCU: STM32WB55CG
WB package: STM32Cube_FW_WBV1.14.1
BLE Stack: stm32wb5x_BLE_Stack_full_fw
Bootloader example: STM32Cube_FW_WB_V1.14.1\Projects\P-NUCLEO-WB55.Nucleo\Applications\BLE\BLE_Ota
Documentation: AN5247
What have I tried?
I used the above mentioned ST bootloader example as a base for my project with minor modifications. Next to that modified my projects firmware to make some OTA test applications (by adding the reboot charasteristics etc). When I update the firmware via the ST BLE Sensor app, everything works perfect, but when I use another resource (Linux based IoT device) to update the firmware over OTA I'm able to brick the firmware:
- Transferring the raw data packages (200 bytes each) with an interval of 150ms everything works fine and I'm able to successfully transfer all data and boot to the dedicated firmware version.
- Trying to speed things up the interval was set from 150ms to 100ms and 75ms. In both cases the raw data transfer was completed, the upload complete write was given, followed by an indication message from the device. After that the device get's "bricked", nor showing the bootloader application, nor showing the firmware application.
- Recovery cannot be done by a power down, nor a new bootloader flash. Erasing the full memory and reflash the ble stack and bootloader.
- I modified the characteristic to WRITE instead of WRITE_WITHOUT_RESP to check if any packages were missed, but this is not the case. All raw datapackages are correctly received on the device side.
The bootloader cannot be build as a debug target because of size restrictions (should fit in region between 0x8000000-0x8006000) which makes it very hard to debug this issue.
Questions:
- Are there any timing restrictions on transferring the raw data packages?
- Might there be an issue in the validation process of the downloaded firmware application? Or any other suggestions what might be the issue?
Thanks in advance,
Frank
