OTA DFUs no longer working after recreating build configuration

I've previously successfully performed OTA DFUs of our application (basically a heavily customized peripheral_uart), running on hardware substantially similar to the nRF5340 DK. I used the nRF Connect mobile app on both Android and iOS, with the "Test and Confirm" option, to load different firmware images. Those old builds all still work.

We're building against SDK 2.5.3 with toolchain 2.5.3. Thanks to improvements in the 2.5.x SDKs, all I remember having to do to get OTA DFU working was add CONFIG_BOOTLOADER_MCUBOOT, CONFIG_NCS_SAMPLE_MCUMGR_BT_OTA_DFU, and CONFIG_REBOOT to the config; and call smp_bt_register() in main().

Unfortunately, after deleting and recreating the build configuration (target nrf5340dk_nrf5340_cpuapp_ns), I can't get OTA DFUs to reliably load anymore. Most of the time it doesn't seem to load anything, and functionally, I can see the application code hasn't been replaced.

The only difference I've observed is that merged_domains.hex looks different loaded in the nRF Connect desktop Programmer tool. I know this isn't the OTA file, but I assume if the .hex is laid out differently in memory, the .bin in the .zip is too, and this is probably what's causing my problems. Notably, the "top" of address space contains only one orange "MBR or Application" region for hex files corresponding to OTA builds that don't work, instead of one orange "MBR or Application" and two green "Application" regions for hex files corresponding to OTA builds that do work. In the image below, 0.5 is from before I added DFU support, 0.6–0.9 have support and work, and both 0.10 and 0.11 built with the new build configuration do not work.



Does anyone know what I might be doing wrong in the build configuration that broke OTA DFUs?

Parents Reply
  • JakeM said:

    Are there any plans to support simultaneous DFU without external flash on nRF5430 in a future SDK release?

    Devs link me to https://github.com/nrfconnect/sdk-nrf/pull/19551, so this could work.
    However, we do not have any tests for this, meaning that we can not claim support for the feature.

    So I will just quote our default answer when it comes to timeline questions:

    I am not able to answer questions about our timeline. You can try to ask your local sales representative from Nordic Semiconductor for information about our timeline.

    JakeM said:

    For now it looks like our best option is non-simultaneous.

    Yea seems like it. As always, remember to test FOTA thoroughly on test devices before rolling it out to the field. This is always important of course, but it becomes extra important when you do non-simultaneous instead of simultaneous.

Children
  • We talked to our local sales representative. After not making much progress on non-simultaneous FOTA either, we're planning to get help with the network core changes we intend to make, so those changes can be made before going into production, and try to avoid having to update the network core in the future.

    Since we found an explanation for the original discrepancy between builds, and have a plan for addressing future compatibility concerns, I think this case can be closed.

Related