Keil SDK13 BLE OTA upgrade failure causes the device to become unbootable, requiring re-flashing. How can this be resolved? We are using the bootloader_secure_ble bootloader. Does it support dual-bank OTA? Could you provide a reference sample?
Keil SDK13 BLE OTA upgrade failure causes the device to become unbootable, requiring re-flashing. How can this be resolved? We are using the bootloader_secure_ble bootloader. Does it support dual-bank OTA? Could you provide a reference sample?
I'm using SDK13, but the protocol stack I'm using is s132_nrf52_4.0.3_softdevice.hex. This doesn't seem to be the protocol stack included in SDK13 - the protocol stack in SDK13 is s132_nrf52_4.0.2_softdevice.hex.
Will this affect DFU OTA? Currently, after killing the app, the hardware cannot boot up. How should I handle this issue?
What you are seeing is that the FW is being uploaded to bank 1, so it is indeed a dual bank update.
Judging from the logs, it seems the device has been staying in DFU mode, waiting for connection and data transfer. Is there no timeout mechanism in place?
Yes, there is a timeout mechanism, but that does not help if there is no valid application to fall back to. Can you please post the full log? When adding the log, please do so in a code block using the Insert->Code button.
What I provided is the complete log, starting from device boot, the app initiating the update, to killing the app, and then the device staying in the bootloader's DFU mode. Later, I added a reset in the BLE disconnect callback, and it worked normally. The issue is likely with the timeout mechanism. Alternatively, how should I properly implement the reset, and where should I add this reset?
From the SDK release notes it seems like the inactivity timer was not added until SDK v14.0.0. You could use this implementation as a reference.
From the SDK release notes it seems like the inactivity timer was not added until SDK v14.0.0. You could use this implementation as a reference.