Supporting DFU from SDK 2.1.0 to 2.9.0

We are trying to update the SDK used by a firmware on a device that is in production. The old SDK is 2.1.0 and we are trying to update to 2.9.0.

I was able to get the firmware running on 2.9.0, and I can perform DFU between builds with the new SDK. However, DFU between 2.1.0 and 2.9.0 isn't working. It appears to succeed – it transfers successfully and the device reboots – but the firmware doesn't actually update.

There are some quite substantial structural changes – we are now using sysbuild, and partition manager. However, I've used the same flash layout in partition manager as it had in the device tree. The firmware was (unfortunately) also using the default MCUboot signing key, so I've copied enc-rsa2048-priv.pem out of the 2.1.0 SDK to use directly in the new firmware. I've tried to ensure the rest of the configuration is largely unchanged.

Could you tell me

  • Should it be possible to update between these SDK versions?
  • Should using partition manager cause any issues? If so, is it possible to use device tree?
  • Can we change signing key? I think it is now locked into MCUboot right?
  • How can I get further diagnostic information? I couldn't see anything relevant in the normal logs over RTT.
  • Hi, 

    What nRF device are you using? 

    However, I've used the same flash layout in partition manager as it had in the device tree.

    Could you try to build the same pm_static.yml? You can duplicate the build/partitions.yml (NCS v2.1.0) and rename it to pm_static.yml to place it under the new application folder. 

    Should it be possible to update between these SDK versions?

    It should.

    Should using partition manager cause any issues? If so, is it possible to use device tree?

    No, but it should be built with the same pm_static.yml.

    Can we change signing key? I think it is now locked into MCUboot right?

    No, it should use the same key, the same pair of mcuboot.

    How can I get further diagnostic information? I couldn't see anything relevant in the normal logs over RTT.

    You can enable logs for mcuboot (child_image/mcuboot.conf) in NCS v2.1.0. 

    # Enable logging
    CONFIG_LOG=y
    CONFIG_LOG_MODE_MINIMAL=y

    Regards,
    Amanda H.

  • Thanks. The partitions were different (I was unaware it was generating a dynamic partition manager config, I thought it was fixed from device tree) and it was also using the wrong signing key (should have been ecdsa).

    Thanks

Related