I'm trying to do a basic OTA update using the BGS scripting language. I followed the flow exactly from ota256.bgs located in the Bluegiga 1.4.0-127/example/dkble/ota directory.
I also am aware of and following the steps in http://community.silabs.com/t5/Wireless-Knowledge-Base/REFERENCE-Updating-BLE-module-firmware-using-OTA-DFU/ta-p/147801.
config.xml has this
proj.bgproj has this
<image out="proj.hex"/> <ota out="proj.ota"/> <boot fw="bootota"/>
.. and hardware.xml has this
The file properly gets transferred onto the device and the DFU dialog in the BLE GUI happily claims "OTA Completed".
However, the firmware never gets updated; it only resets the device. My best guess is that it is not entering the DFU bootloader when I call
Am I missing anything? Suggestions welcome!
oops, the link above pointed to the OTA reference link. It didn't render correctly. Here it is again.
Hey everyone, maybe I can be a bit more explicit on my question.
Based on my xml configuration above, can I assume that the BLE113 enters the DFU bootloader when the app calls the following?
If so, what would be the reasons why the bootloader doesn't install the new firmware? Could it be related to the size? or the ota file format?
How can I further debug this?
Can you share the project that you flash into the module and the one you're trying to send over OTA? What is the difference between them, how are you verifying if the OTA was successful?
I've the same issue with the same project configuration, except that I'm not using BGScript but UART to update the firmware.
That's my config:
My application is handling the DFU and once I'm resetting my module to the DFU bootloader, the new firmware seems not to be active and the old firmware is booting.
I've tried to use the "bootuart" as well as the "bootota" option for the boot tag, but without success.
Any suggestions what's the problem?
Thanks and kind regards,
Actually, first thing that comes to my mind is have all the commands related to the DFU procedure resulted with a successful response?
Have you tried checking whether there is any command missing in the sequence?
What's more, how do you validate that the update failed?
Could you provide all the project and configuration files? I may try to perform the procedure on one of our dev kits for evaluation.
our setup is as follows:
In our application, the BLE module is sending its software version after boot-up and I can see that after reset, the old software is still active. If I update the module with the CCDebugger and the BLE SW Update Tool (but with the hex image, not the OTA file), the update is successful and I can readout the new software version.
I've attached the project file, config files and the OTA update file below.
Forgive me, but I am not entirely convinced I understand what you are exactly willing to achieve. Would you like to perform an OTA update or use UART DFU?
In case of OTA, I would like you to see the Application Note describing the usage and a sample implementation. It is available under the following link: https://www.silabs.com/documents/public/application-notes/AN984-Implementing-Over-the-Air-Firmware-Upgrade.pdf
In case of any questions, please let me know!
However, the link attached rather suggests that you would like to implement UART DFU and in this case you would need to make a few changes to the sequence you have listed.
The sequence should rather be as described in the BLE API Reference Manual in section 4.10:
Boot device to DFU mode with : Reset command.
Wait for DFU Boot event
Send command Flash Set Address to start the firmware update.
Upload the firmware with Flash Upload commands until all the data has been uploaded. Use data contained in the firmware image .hex file starting from byte offset 0x1000: everything before this offset is bootloader data which cannot be written using DFU; also, the last 2kB are skipped because they contain the hardware page and other configuration data that cannot be changed over DFU.
Send Flash Upload Finish to when all the data has been uploaded.
Finalize the DFU firmware update with command: Reset.
Please let me know if you would need any clarification.