cancel
Showing results for 
Search instead for 
Did you mean: 

OTA firmware built using Cube 1.23 not compatible with earlier installed BLE_Ota bootloaders

This is a big problem for me, as I have thousands of products out there using the older BLE_OTA bootloaders, bootloaders which themselves are not updatable by OTA.   I have a custom phone app for iOS and Android that interfaces with these products and provides OTA updates.

I was about to release an update to the product firmware via my phone app that incorporates several important fixes, but in regression testing this firmware, I found that older units could not successfully perform OTA updates using my new firmware (though units programmed with the updated bootloader could).   I tried many combinations to see what worked and what doesn't work, before narrowing the problem down:

 

FUSBootloaderStackStack locationFirmware Git hashResult + notes
01.23 plus  b87d60Worked like normal the second time.
1.2.0.01.20.01.20.0.20x805A000b87d60No STM_OTA when commanded
1.2.0.01.20.01.22.0.20x805C000b87d60No STM_OTA when commanded
1.2.0.01.23 plus1.22.0.20x805C000b87d60Worked.  OTA did not revert stack to 1.20.0
1.2.0.01.23 plus1.20.00x805A000b87d60Worked, but afterward it says the stack is 1.22.
1.2.0.01.23 plus1.20.00x805A000b87d60Deleted stack then reprogrammed and started stack.  OTA worked.  FUS info says stack is 1.22.0 after OTA
1.2.0.01.23 plus1.20.0 b87d60Re-deleted stack, loaded 1.20, re-confirmed 1.20 still there.  Did OTA successfully.  OTA definitely updated stack to 1.22
1.21.20.01.20.00x805A0006b9a52afirmware from 9/8 after 1.23 cube updates, but without OTA characteristic.  No response to OTA request
1.21.20.01.20.00x805A000abc61fbFirmware before 1.23 cube update.   OTA working.   Result is an update to 1.22 stack and firmware b87d60 and the app thinking the SN is 0 until forget and re-advertise
1.2.0.01.20.01.20.0.20x805A000b87d60No STM_OTA when commanded

 

The last firmware that can perform OTA updates using BLE_OTA bootloaders from Cube 1.20 or older was what I made using Cube 1.22.   The firmware I built after updating to Cube 1.23 had the following symptom when used with a previously installed BLE_Ota bootloader:    I could initiate an OTA update from my app, and it rebooted into the bootloader, but then the bootloader would get stuck without advertising the usual STM_OTA, apparently before erasing anything.   A power cycle of the device would recover operation using the current firmware and BLE stack.  This is the "No STM_OTA when commanded" result in the table above.

1 REPLY 1
TDK
Super User

What is the full part number of the chip you are using? STM32WB encompasses too much.

If you feel a post has answered your question, please click "Accept as Solution".