How to ensure valid firmware update thru OTA? EFR32BG13
04/108/2019 | 11:09 PM
I've tried to ask this before, but got no satisfying answer so will try again.
We have several different boards with EFR32BG13 and BG12, on different stages of development.
We send OTA updates to all these things from the Gecko app on a phone. It is critical that an update does not get to a wrong device by mistake. Because the devices are very different and a wrong update can brick them. All these update files are stored on the same phone. We do not want to use signatures, crypto, and so on right now. Later, may be.
I know that in application_properties.c we can define a unique GUID for every device (product).
But what I do not comprehend is, how to tell the OTA uploader (apploader?) to accept only updates with this specific GUID and reject everything else, no matter if it is correctly signed and so on. The "apploader" is not available in source form so I cannot modify it easily.
Do I have to write my own OTA updater? Is there a known solution to this very common situation?
Thanks for reading.
-- dd
Bluetooth Low Energy
Discussion Forums
EFR32BG13P732F512GM48
Answered
Answered
Hi,
If you send an image built for a BG12 to a BG13 via OTA (using Apploader) or vice-versa the update will fail and the device will stay in apploader mode because the previous application will already have been erased.
How to ensure valid firmware update thru OTA? EFR32BG13
I've tried to ask this before, but got no satisfying answer so will try again.
We have several different boards with EFR32BG13 and BG12, on different stages of development.
We send OTA updates to all these things from the Gecko app on a phone. It is critical that an update does not get to a wrong device by mistake. Because the devices are very different and a wrong update can brick them. All these update files are stored on the same phone. We do not want to use signatures, crypto, and so on right now. Later, may be.
I know that in application_properties.c we can define a unique GUID for every device (product).
But what I do not comprehend is, how to tell the OTA uploader (apploader?) to accept only updates with this specific GUID and reject everything else, no matter if it is correctly signed and so on. The "apploader" is not available in source form so I cannot modify it easily.
Do I have to write my own OTA updater? Is there a known solution to this very common situation?
Thanks for reading.
-- dd
Hi,
If you send an image built for a BG12 to a BG13 via OTA (using Apploader) or vice-versa the update will fail and the device will stay in apploader mode because the previous application will already have been erased.
There is no way to “reject” updates froma a wrong image if you use the apploader. For this functionality you will need to implement application level OTA. This mechanism is explained in AN1086 and you can find a code example in our knowledge base as well: https://www.silabs.com/community/wireless/bluetooth/knowledge-base.entry.html/2018/11/06/implementing_otafir-Lqwk
Regards,
Tiago
> If you send an image built for a BG12 to a BG13 via OTA (using Apploader) or vice-versa the update will fail
Thank you Tiago, this is already helpful.
-- dd