nRF9160 firmware upgrade process no longer works

I implemented firmware update over LTE Cat-M and Ethernet last year by modifying the `fota_download` and the `download_client` examples into my own slightly modified version, which has functions that choose ethernet or LTE depending on what's available for the download.

While preparing the firmware release for the production units I decided to test the firmware update and found it no longer works.

I've implemented the code using the nRF Connect SDK v2.2.2, which initially worked last year when tested.

So far, from my testing, I can tell it is correctly downloading the firmware image from the client's server. However, it doesn't seem to apply the firmware update after downloading it, even when using `dfu_target_schedule_update(0)` or `boot_request_upgrade(BOOT_UPGRADE_PERMANENT)`. From additional debug information, I can tell that it is writing the MCU image type as 0x03, which should be permanent.

Development software: JLinkRTT Viewer, nRF Connect SDK v2.2.2

Computer platform: Ubuntu 24.04

Note that I am using the MCU boot key, which is publically known at the moment, not a custom key for signing.

Attached is a version of the firmware with most things removed except for the modem and firmware update code.

0564.controller-ng.tgz

Parents
  • Which board do you use?

    Thingy:91 (thingy91_nrf9160_ns) comes with a "static partition management/pm_static.yml", while the nRF9160-DK (nrf9160dk_nrf9160_ns) uses a dynamic per default. If your build is based on the dynamic partition management, did you check, if the partitions has changed (e.g. using -t partition_manager_report )? Did you enable "CONFIG_SETTINGS=y" recently or was it always enabled?

    (I had a similar experience , in my case it was caused by enabling the CONFIG_SETTINGS=y.)

Reply
  • Which board do you use?

    Thingy:91 (thingy91_nrf9160_ns) comes with a "static partition management/pm_static.yml", while the nRF9160-DK (nrf9160dk_nrf9160_ns) uses a dynamic per default. If your build is based on the dynamic partition management, did you check, if the partitions has changed (e.g. using -t partition_manager_report )? Did you enable "CONFIG_SETTINGS=y" recently or was it always enabled?

    (I had a similar experience , in my case it was caused by enabling the CONFIG_SETTINGS=y.)

Children
Related