Skip to content

Conversation

@noahp
Copy link
Contributor

@noahp noahp commented Oct 7, 2025

nRF54H20 does not use partition manager, only Zephyr device tree fixed partitions. This causes a very niche issue when attempting to use the DFU zip payload with nRF Connect Device Manager mobile apps- the manifest contained in the DFU archive fails to parse, due to the subimage offset being a string instead of a JSON number:

❯ cat build/dfu_application.zip_manifest.json
{
    "format-version": 1,
    "time": 1759849455,
    "files": [
        {
            "type": "application",
            "board": "nrf54h20dk",
            "soc": "nrf54h20",
            "load_address": "235143168",  <- string, not number
            "image_index": "0",
            "slot_index_primary": "1",
            "slot_index_secondary": "2",
            "version_MCUBOOT": "0.0.0+0",
            "size": 208100,
            "file": "peripheral_mds.signed.bin",
            "modtime": 1759849455
        },

Adjust the value extracted from DT in the case where partition manager is not used, when generating the DFU zip artifact, so it correctly produces a number for the field in question.

❯ cat build/dfu_application.zip_manifest.json
{
    "format-version": 1,
    "time": 1759845147,
    "files": [
        {
            "type": "application",
            "board": "nrf54h20dk",
            "soc": "nrf54h20",
            "load_address": 235143168,  <- number, not string 🎉
            "image_index": "0",
            "slot_index_primary": "1",
            "slot_index_secondary": "2",
            "version_MCUBOOT": "0.0.0+0",
            "size": 220164,
            "file": "peripheral_mds.signed.bin",
            "modtime": 1759845134
        },

Note that I'm only solving the immediate issue- there are other fields in the manifest that look like numbers, but are strings, and in order to not cause unintended side-effects, I'm only fixing the known problem.

nRF54H20 does not use partition manager, only Zephyr device tree fixed
partitions. This causes a very niche issue when attempting to use the
DFU zip payload with nRF Connect Device Manager mobile apps- the
manifest contained in the DFU archive fails to parse, due to the
subimage offset being a string instead of a JSON number:

❯ cat build/dfu_application.zip_manifest.json
{
    "format-version": 1,
    "time": 1759849455,
    "files": [
        {
            "type": "application",
            "board": "nrf54h20dk",
            "soc": "nrf54h20",
            "load_address": "235143168",  <- string, not number
            "image_index": "0",
            "slot_index_primary": "1",
            "slot_index_secondary": "2",
            "version_MCUBOOT": "0.0.0+0",
            "size": 208100,
            "file": "peripheral_mds.signed.bin",
            "modtime": 1759849455
        },

Adjust the value extracted from DT in the case where partition manager
is not used, when generating the DFU zip artifact, so it correctly
produces a number for the field in question.

❯ cat build/dfu_application.zip_manifest.json
{
    "format-version": 1,
    "time": 1759845147,
    "files": [
        {
            "type": "application",
            "board": "nrf54h20dk",
            "soc": "nrf54h20",
            "load_address": 235143168,  <- number, not string 🎉
            "image_index": "0",
            "slot_index_primary": "1",
            "slot_index_secondary": "2",
            "version_MCUBOOT": "0.0.0+0",
            "size": 220164,
            "file": "peripheral_mds.signed.bin",
            "modtime": 1759845134
        },

Note that I'm only solving the immediate issue- there are other fields
in the manifest that look like numbers, but are strings, and in order
to not cause unintended side-effects, I'm only fixing the known problem.

Signed-off-by: Noah Pendleton <[email protected]>
@noahp noahp requested a review from a team as a code owner October 7, 2025 16:11
@NordicBuilder NordicBuilder added the changelog-entry-required Update changelog before merge. Remove label if entry is not needed or already added. label Oct 7, 2025
@NordicBuilder
Copy link
Contributor

NordicBuilder commented Oct 7, 2025

CI Information

To view the history of this post, clich the 'edited' button above
Build number: 1

Inputs:

Sources:

sdk-nrf: PR head: 32bf3d413f6f80bde5cb1b34e0c1d3df53816445

more details

sdk-nrf:

PR head: 32bf3d413f6f80bde5cb1b34e0c1d3df53816445
merge base: f0af8f2008d39bcb46516554d00611ac7fd87d5d
target head (main): a694b33a40d18551f4de20599100b6779eea8417
Diff

Github labels

Enabled Name Description
ci-disabled Disable the ci execution
ci-all-test Run all of ci, no test spec filtering will be done
ci-force-downstream Force execution of downstream even if twister fails
ci-run-twister Force run twister
ci-run-zephyr-twister Force run zephyr twister
List of changed files detected by CI (1)
cmake
│  ├── sysbuild
│  │  │ bootloader_dts_utils.cmake

Outputs:

Toolchain

Version: f66cf421f3
Build docker image: docker-dtr.nordicsemi.no/sw-production/ncs-build:f66cf421f3_bba2ea5f2e

Test Spec & Results: ✅ Success; ❌ Failure; 🟠 Queued; 🟡 Progress; ◻️ Skipped; ⚠️ Quarantine

  • ◻️ Toolchain - Skipped: existing toolchain is used
  • ✅ Build twister
  • ✅ Integration tests
    • ✅ test-sdk-audio
    • ✅ desktop52_verification
    • ✅ test-fw-nrfconnect-apps
    • ✅ test_ble_nrf_config
    • ✅ test-fw-nrfconnect-ble_mesh
    • ✅ test-fw-nrfconnect-ble_samples
    • ✅ test-fw-nrfconnect-chip
    • ✅ test-fw-nrfconnect-nfc
    • ✅ test-fw-nrfconnect-nrf-iot_cloud
    • ✅ test-fw-nrfconnect-nrf-iot_libmodem-nrf
    • ✅ test-fw-nrfconnect-nrf-iot_serial_lte_modem
    • ✅ test-fw-nrfconnect-nrf-iot_zephyr_lwm2m
    • ✅ test-fw-nrfconnect-nrf-iot_samples
    • ✅ test-fw-nrfconnect-nrf-iot_lwm2m
    • ✅ test-fw-nrfconnect-nrf-iot_thingy91
    • ✅ test-fw-nrfconnect-nrf_crypto
    • ✅ test-fw-nrfconnect-proprietary_esb
    • ✅ test-fw-nrfconnect-rpc
    • ✅ test-fw-nrfconnect-rs
    • ✅ test-fw-nrfconnect-fem
    • ✅ test-fw-nrfconnect-tfm
    • ✅ test-fw-nrfconnect-thread-main
    • ✅ test-sdk-find-my
    • ✅ test-fw-nrfconnect-nrf_lrcs_mosh
    • ✅ test-fw-nrfconnect-nrf_lrcs_positioning
    • ✅ test-sdk-wifi
    • ✅ test-low-level
    • ✅ test-sdk-pmic-samples
    • ✅ test-sdk-mcuboot
    • ✅ test-sdk-dfu
    • ✅ test-fw-nrfconnect-ps-main
    • ✅ test-secdom-samples-public

Note: This message is automatically posted and updated by the CI

@NordicBuilder
Copy link
Contributor

Memory footprint analysis revealed the following potential issues

applications.hpf.gpio.icbmsg[nrf54l15dk/nrf54l15/cpuflpr]: High RAM usage: 12744[B] - link (cc: @nrfconnect/ncs-ll-ursus)
applications.hpf.gpio.icbmsg[nrf54l15dk/nrf54l15/cpuflpr]: High ROM usage: 9492[B] - link (cc: @nrfconnect/ncs-ll-ursus)
applications.hpf.gpio.icmsg[nrf54l15dk/nrf54l15/cpuflpr]: High RAM usage: 9102[B] - link (cc: @nrfconnect/ncs-ll-ursus)
applications.hpf.gpio.icmsg[nrf54l15dk/nrf54l15/cpuflpr]: High ROM usage: 5858[B] - link (cc: @nrfconnect/ncs-ll-ursus)

Note: This message is automatically posted and updated by the CI (latest/sdk-nrf/PR-24910/1)

@noahp noahp requested a review from ahasztag October 9, 2025 15:17
@noahp
Copy link
Contributor Author

noahp commented Oct 10, 2025

fixed in #24792 , closing

@noahp noahp closed this Oct 10, 2025
@karhama karhama deleted the noahp/nrf54h20-dfu-manifest-hex branch October 24, 2025 12:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

changelog-entry-required Update changelog before merge. Remove label if entry is not needed or already added.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants