Hash not found (8) attempting to DFU ipc_radio image (nRF5340, NCS 2.9.2)

I’m working on an nRF5340 project (NCS 2.9.2) with simultaneous multi-image DFU using MCUboot, MCUmgr (SMP over BLE), and external flash (MX25R64, like the DK).

App-core DFU works correctly. Net-core DFU (ipc_radio) uploads successfully, is reported as bootable and pending, but after reboot it disappears from the image list and Device Manager reports “Hash not found (8)”.

I tracked this down to the net-core image not being signed / versioned correctly:

  • DFU ZIP contains peripheral_uart.signed.bin (app core) but only a raw ipc_radio.bin (net core).

  • After enabling CONFIG_BOOTLOADER_MCUBOOT=y for ipc_radio, the build fails during signing:

imgtool sign … --header-size 0 … Error: Invalid value for -H/--header-size: Minimum value is 32

I attempted to set CONFIG_ROM_START_OFFSET=0x200 (and searched for MCUBOOT_HEADER_SIZE / related options), but the value is still resolved as 0 in .config, likely due to sysbuild/partition manager overrides.

Partition Manager layout appears correct for nRF5340 simultaneous DFU:

  • app-core secondary in external flash

  • net-core secondary in external flash

  • net-core primary via ram/flash simulator

The core question is:
What is the correct way in NCS 2.9.x to produce a properly signed/versioned net-core DFU image (with non-zero MCUboot header) so that b0n/MCUboot will accept the hash and it persists after reboot?

Is this expected to be handled via:

  • child-image config,

  • sysbuild config,

  • partition padding for cpunet,

  • or explicit imgtool args for the net-core image?

I can’t easily capture UART boot logs, but I can share partition reports, .config snippets, and the exact imgtool command line if needed.

Parents
  • Hello,

    Signing of the netcore image should happen automatically during the build when you have enabled the network core bootloader (SB_CONFIG_SECURE_BOOT_NETCORE=y). The MCUBoot bootloader should not be enabled on the network core.

    Please compare you configurations to the sample attached below, particularly the sybuild configurations in sysbuild.conf.

    4572.peripheral_lbs_dfu_test_nrf5340_v290.zip 

    Best regards,

    Vidar

  • Vidar,

    When I built peripheral_lbs_dfu_test_nrf5340_v290, I observed a dfu_application.zip similar to the one our project generates. I verified that ipc_radio.bin in the zip file matches the signed_by_mcuboot_and_b0_ipc_radio.bin build artifact, for both peripheral_lbs_dfu_test_nrf5340_v290 and our project (before attempting to change configs to resolve the "Hash not found (8)" error).

    When I perform a "basic" mode Firmware Upgrade from nRF Connect Device Manager 2.4.0 for Android using the dfu_application.zip built built from the peripheral_lbs_dfu_test_nrf5340_v290 source you provided, I get same "Hash not found (8)" error I'm struggling with from our project. I tested peripheral_lbs_dfu_test_nrf5340_v290 with DK hardware, not our custom hardware.

    Note that I can't get peripheral_lbs_dfu_test_nrf5340_v290 to build with the nrf5340dk/nrf5340/cpuapp/ns target (build log). I had to use nrf5340dk/nrf5340/cpuapp. My understanding is the /ns target is preferred. We've been building our project with /ns.

    Is "Hash not found (8)" the expected result of a successful dual-image FOTA?

    Should peripheral_lbs_dfu_test_nrf5340_v290 build with /ns?

    If this project is supposed to work, do you have a pre-built image I can test?

    Thanks,
    Jake

Reply
  • Vidar,

    When I built peripheral_lbs_dfu_test_nrf5340_v290, I observed a dfu_application.zip similar to the one our project generates. I verified that ipc_radio.bin in the zip file matches the signed_by_mcuboot_and_b0_ipc_radio.bin build artifact, for both peripheral_lbs_dfu_test_nrf5340_v290 and our project (before attempting to change configs to resolve the "Hash not found (8)" error).

    When I perform a "basic" mode Firmware Upgrade from nRF Connect Device Manager 2.4.0 for Android using the dfu_application.zip built built from the peripheral_lbs_dfu_test_nrf5340_v290 source you provided, I get same "Hash not found (8)" error I'm struggling with from our project. I tested peripheral_lbs_dfu_test_nrf5340_v290 with DK hardware, not our custom hardware.

    Note that I can't get peripheral_lbs_dfu_test_nrf5340_v290 to build with the nrf5340dk/nrf5340/cpuapp/ns target (build log). I had to use nrf5340dk/nrf5340/cpuapp. My understanding is the /ns target is preferred. We've been building our project with /ns.

    Is "Hash not found (8)" the expected result of a successful dual-image FOTA?

    Should peripheral_lbs_dfu_test_nrf5340_v290 build with /ns?

    If this project is supposed to work, do you have a pre-built image I can test?

    Thanks,
    Jake

Children
Related