DFU fails after NCS SDK update from v3.2.4 to v3.3.0 on custom nRF54L15 board with compressed images

We are using a custom board based on nRF54L15 with MCUboot and compressed image DFU over OTA. DFU was working correctly when updating between NCS v3.2.0 and v3.2.4, but after updating our SDK to v3.3.0 DFU no longer works.

What changed in our project:

As part of the migration to NCS v3.3.0 we followed the recommended migration path and moved our partition configuration from Partition Manager (pm_static.yml) to the new DTS-based partitioning approach, defining all partitions directly in our custom board DTS file. Our deployed devices in the field however are still running MCUboot that was built with NCS v3.2.4 using the old Partition Manager based partitioning.


Observed behavior:

After performing a DFU update via nRF Connect app on phone, MCUboot copies the image from the secondary slot to the primary slot successfully but then fails validation with the following error:

[inf] mcuboot: Image index: 0, Swap type: test
[inf] mcuboot: Image 0 upgrade secondary slot -> primary slot
[inf] mcuboot: Erasing the primary slot
[inf] mcuboot: Image 0 copying the secondary slot to the primary slot: 0x52790 bytes
[err] mcuboot: Image in the primary slot is not valid!
[err] mcuboot: Unable to find bootable image

After this failure the device enters an infinite reboot loop because CONFIG_BOOT_UPGRADE_ONLY=y is set and there is no valid image to revert to.

Additional observations:

  • Direct flash using west flash works correctly, the app boots and runs normally.
  • DFU was working correctly between NCS v3.2.0 and v3.2.4 with the same compression settings.
  • The issue only appears when the DFU package is built with NCS v3.3.0 tooling while the device still has MCUboot built with v3.2.4.
  • The copy step succeeds, only the validation after copy fails.

Questions:

  • Are there any breaking changes in NCS v3.3.0 related to MCUboot compressed image handling that would cause a v3.3.0 signed compressed image to fail validation on a device running MCUboot built with v3.2.4?
  • Is there a way to build a DFU package with NCS v3.3.0 that remains compatible with MCUboot v3.2.4 already on the device?
  • If backward compatibility is not possible, what is the recommended migration path for devices already deployed in the field that cannot be physically accessed for a direct flash to update MCUboot?

Environment:

  • SoC: nRF54L15
  • NCS version: v3.3.0 (previously v3.2.4)
  • Board: Custom board based on nRF54L15

Related