Hello everyone,
Is there any way to update OTA-DFU from Firmware SDK11 to SDK16?
Thank you.
Hello everyone,
Is there any way to update OTA-DFU from Firmware SDK11 to SDK16?
Thank you.
What bootloader from SDK11 are you using?
As far as I can tell, there is no secure bootloader in SDK11, so it is not trivial. It depends on how much time you want to spend on it.
I guess you should look into updating the bootloader (via DFU) to the secure bootloader in SDK 12.3.0). After that, it is not trivial, because you need to change the bootloader start address in UICR. So you need an "in between bootloaders-bootloader" that does this. But it is possible. WARNING: However, if you loose power at the wrong point in time during this, you may brick the device.
I think you need to ask yourself whether this is something you want to spend time on. Is it a product that is out in the field? Or hobby devices in your home?
I gave it a go, but I am not familiar with the bootloader from SDK11 (legacy bootloader). Are you able to update the bootloader itself (to the same bootloader, just change something in the bootloader code, and try to update to this new bootloader)?
BR,
Edvin
Hi Edvin,
My product is out in the filed now, and running on SDK11 (legacy bootloader), so I cannot update its bootloader directly. I'm trying to find a way to OTA DFU for it. I have already followed this thread:
and modified the dfu_dual_bootloader.c file in SDK11, but now I have to face 2 issues:
1. How can I OTA DFU the modified dual_bootloader (SDK11) for my product?
2. The modified dual_bootloader still not work when I try to update it to secure_bootloader in SDK12.3.0. I used the nrfutil 2.2.0 to zip the secure_bootloader (SDK12.3.0), but the dual_bootloader (SDK11) did not accept it.
Best regard,
Nhuan
I'm updating an example application in SDK11 from my product (modified dual_bootloader SDK11).
The DFU process ran:

but the new application did not perform. These are pictures before/after DFU:


The command I used nrfutil 0.5.2:
nrfutil dfu genpkg --application-version 0x41540003 --dev-type 0x4154 --dev-revision 0x0002 --application ble_app_hrs_s132_pca10040.hex hrs_sdk11.zip
Ok, so you can't use the bootloader for anything, then. Is that right? Is the new application also from SDK11, and does it use the same softdevice as the old application?
That right, Edvin.
The new application is from SDK11, and uses the same softdevice.
Ok, is anything in the bootloader project changed from the default bootloader in SDK11? If so, what?
Are you able to perform a DFU if you build a bootloader that is unmodified from the SDK, and generate an image from the unmodified SDK?
Best regards,
Edvin
I followed this thread to change dfu_dual_bootloader.c file of default bootloader:
Now, I can DFU a new application (SDK11) with the modified bootloader. But, the zip file has only the application (no bootloader and softdevice).
I followed this thread to change dfu_dual_bootloader.c file of default bootloader:
Now, I can DFU a new application (SDK11) with the modified bootloader. But, the zip file has only the application (no bootloader and softdevice).
I am not sure whether it is possible. If the bootloader has another start address, you would have to update the UICR during runtime, and that is not possible, unfortunately. If you want to update to the secure bootloader, you would need to manually program the device.
I don't know your exact reason why you need to update the bootloader, but if it is because you need a new softdevice, I suggest you just port the legacy bootloader use a later softdevice. SDK 11 and SDK 12 has the same softdevice API, so it is mostly a matter of changing the softdevice .hex file and header files.
Best regards,
Edvin