Skip to content

samples: bluetooth: central_uart: sign nRF54LM20 Dongle image#27984

Closed
Damian-Nordic wants to merge 2 commits into
nrfconnect:mainfrom
Damian-Nordic:nrf54dongle-fix
Closed

samples: bluetooth: central_uart: sign nRF54LM20 Dongle image#27984
Damian-Nordic wants to merge 2 commits into
nrfconnect:mainfrom
Damian-Nordic:nrf54dongle-fix

Conversation

@Damian-Nordic
Copy link
Copy Markdown
Contributor

nRF54LM20 Dongle image needs to be signed to be programmable with nRF Util (that uses MCUBoot firmware loader mode). As for now, this implies that MCUBoot build must be enabled for the dongle.

Also, fix nRF54LM20 Dongle configuration for single_slot sample:

nRF54LM20 Dongle board already defines MCUmgr CDC ACM instance in DTS, so no need to define it in the fw_loader. In fact, that broke MCUmgr because CDC ACM serial driver would initialize a wrong instance.

@NordicBuilder
Copy link
Copy Markdown
Contributor

NordicBuilder commented Apr 9, 2026

CI Information

To view the history of this post, click the 'edited' button above
Build number: 8

Inputs:

Sources:

sdk-nrf: PR head: b3a674235cc08ed688835e8f12107fca33f77542

more details

sdk-nrf:

PR head: b3a674235cc08ed688835e8f12107fca33f77542
merge base: 64a1cb9f2586829842d63525438a0618dd467c5a
target head (main): 2716a26a6ea0224d662f8e8ebdbb50bb8534a36b
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 (10)
samples
│  ├── bluetooth
│  │  ├── central_uart
│  │  │  ├── nrf54lm20dongle_dfu_partitions.dtsi
│  │  │  ├── sample.yaml
│  │  │  ├── sysbuild
│  │  │  │  ├── mcuboot
│  │  │  │  │  ├── boards
│  │  │  │  │  │  ├── nrf54lm20dongle_nrf54lm20b_cpuapp.conf
│  │  │  │  │  │  │ nrf54lm20dongle_nrf54lm20b_cpuapp.overlay
│  │  │  │  │  │ prj.conf
│  │  │  │  ├── usb_mcumgr_bootloader.conf
│  │  │  │  │ usb_mcumgr_bootloader.overlay
│  │  │  │ sysbuild_bootloader.conf
│  ├── dfu
│  │  ├── single_slot
│  │  │  ├── sysbuild
│  │  │  │  ├── usb_mcumgr_usb_enter_dongle.conf
│  │  │  │  │ usb_mcumgr_usb_enter_dongle.overlay

Outputs:

Toolchain

Version: 911f4c5c26
Build docker image: docker-dtr.nordicsemi.no/sw-production/ncs-build:911f4c5c26_5ea73affbf

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

  • ◻️ Toolchain - Skipped: existing toolchain is used
  • ✅ Build twister - Skipped: Skipping Build & Test as it succeeded in a previous run: 7
  • ✅ Integration tests
    • ✅ test-fw-nrfconnect-ble_samples - Skipped: Job was skipped as it succeeded in a previous run
    • ✅ test-sdk-mcuboot
    • ✅ test-sdk-dfu - Skipped: Job was skipped as it succeeded in a previous run
Disabled integration tests
    • test-fw-nrfconnect-nrf_lrcs_mosh
    • test-fw-nrfconnect-nrf_lrcs_positioning
    • desktop52_verification
    • test_ble_nrf_config
    • test-fw-nrfconnect-apps
    • test-fw-nrfconnect-ble_mesh
    • test-fw-nrfconnect-chip
    • test-fw-nrfconnect-fem
    • test-fw-nrfconnect-nfc
    • test-fw-nrfconnect-nrf-iot_libmodem-nrf
    • test-fw-nrfconnect-nrf-iot_lwm2m
    • test-fw-nrfconnect-nrf-iot_samples
    • test-fw-nrfconnect-nrf-iot_thingy91
    • test-fw-nrfconnect-nrf-iot_zephyr_lwm2m
    • test-fw-nrfconnect-nrf_crypto
    • test-fw-nrfconnect-ps-main
    • test-fw-nrfconnect-rpc
    • test-fw-nrfconnect-rs
    • test-fw-nrfconnect-tfm
    • test-fw-nrfconnect-thread-main
    • test-low-level
    • test-sdk-audio
    • test-sdk-find-my
    • test-sdk-wifi
    • test-secdom-samples-public

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

Copy link
Copy Markdown
Contributor

@LuDuda LuDuda left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 👍

Copy link
Copy Markdown
Contributor

@ktaborowski ktaborowski left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks good, a minor improvement proposition in comments

Comment thread samples/bluetooth/central_uart/nrf54lm20dongle_dfu_partitions.dtsi
Comment thread samples/bluetooth/central_uart/nrf54lm20dongle_dfu_partitions.dtsi Outdated
@Damian-Nordic Damian-Nordic force-pushed the nrf54dongle-fix branch 3 times, most recently from cc9b887 to 2d5a199 Compare April 9, 2026 11:08
Comment thread samples/bluetooth/central_uart/Kconfig.sysbuild Outdated
@NordicBuilder NordicBuilder requested a review from kl-cruz April 13, 2026 07:44
@LuDuda LuDuda added the bugfix Fixes a known bug label Apr 13, 2026
@nvlsianpu nvlsianpu requested a review from nordicjm April 13, 2026 09:44
# Copyright (c) 2026 Nordic Semiconductor ASA
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause

config NRF54LM20DONGLE_BOOTLOADER
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it is invalid to do things like this, use a board variant if you want builds with and without support for this, if you just want this to always be available then replace Kconfig with the name of the board, remove the prompt and type and just set the defaults from that

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, we certainly want to be able to build the dongle with and without the bootloader (in case someone wants to use SWD for programming). But I don't want to introduce board variants as this is beyond the scope of my PR. So nevermind, I'll just use a file suffix in the sample if everything else is invalid.

Copy link
Copy Markdown
Contributor Author

@Damian-Nordic Damian-Nordic Apr 13, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reworked to what was implemented in dfu samples. If a general rework is needed, please create a JIRA ticket and assign to the board files' owners.

Damian-Nordic and others added 2 commits April 13, 2026 16:42
nRF54LM20 Dongle board already defines MCUmgr CDC ACM instance in DTS,
so no need to define it in the fw_loader. In fact, that broke MCUmgr
because CDC ACM serial driver would initialize a wrong instance.

Signed-off-by: Damian Krolik <damian.krolik@nordicsemi.no>
nRF54LM20 Dongle image needs to be signed to be programmable with
nRF Util (that uses MCUBoot firmware loader mode). As for now,
this implies that MCUBoot build must be enabled for the dongle.

Signed-off-by: Andrzej Puzdrowski <andrzej.puzdrowski@nordicsemi.no>
Signed-off-by: Damian Krolik <damian.krolik@nordicsemi.no>
@github-actions
Copy link
Copy Markdown

You can find the documentation preview for this PR here.

@Damian-Nordic Damian-Nordic requested a review from nordicjm April 14, 2026 09:38
@Damian-Nordic
Copy link
Copy Markdown
Contributor Author

@nordicjm Please review.

Comment on lines +7 to +13
/* This file modifies RRAM partitioning for MCUboot and firmware loader by
* extending slot0_partition (application image) to the end of RRAM.
*
* While the application may use extra partitions, such as storage_partition
* defined by default, this partitioning of application-dedicated region is
* irrelevant to the bootloader images.
*/
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is false? I don't follow this, the pre-programmed bootloader will not allow you to write this

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not false according to @tomchy and @nvlsianpu. MCUBoot and firmware loader don't care whether the application uses all its region for the code or for data.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wrote the feature, neither of them did. Configuring hello_world for this board with MCUboot gives the following for MCUboot:

                                /* node '/soc/rram-controller@5004e000/rram@0/partitions' defined in nrf/boards/nordic/nrf54lm20dong>
                                partitions {
                                        compatible = "fixed-partitions"; /* in nrf/boards/nordic/nrf54lm20dongle/nrf54lm20dongle_nrf>
                                        #address-cells = < 0x1 >;        /* in nrf/boards/nordic/nrf54lm20dongle/nrf54lm20dongle_nrf>
                                        #size-cells = < 0x1 >;           /* in nrf/boards/nordic/nrf54lm20dongle/nrf54lm20dongle_nrf>

                                        /* node '/soc/rram-controller@5004e000/rram@0/partitions/partition@0' defined in nrf/boards/>
                                        boot_partition: partition@0 {
                                                label = "mcuboot";    /* in nrf/boards/nordic/nrf54lm20dongle/nrf54lm20dongle_nrf54l>
                                                reg = < 0x0 0x6000 >; /* in nrf/boards/nordic/nrf54lm20dongle/nrf54lm20dongle_nrf54l>
                                        };

                                        /* node '/soc/rram-controller@5004e000/rram@0/partitions/partition@6000' defined in nrf/boar>
                                        slot1_partition: partition@6000 {
                                                label = "image-1";        /* in nrf/boards/nordic/nrf54lm20dongle/nrf54lm20dongle_nr>
                                                reg = < 0x6000 0x1d000 >; /* in nrf/boards/nordic/nrf54lm20dongle/nrf54lm20dongle_nr>
                                        };

                                        /* node '/soc/rram-controller@5004e000/rram@0/partitions/partition@23000' defined in nrf/boa>
                                        slot0_partition: partition@23000 {
                                                label = "image-0";          /* in nrf/boards/nordic/nrf54lm20dongle/nrf54lm20dongle_>
                                                reg = < 0x23000 0x1ca000 >; /* in nrf/boards/nordic/nrf54lm20dongle/nrf54lm20dongle_>
                                        };

                                        /* node '/soc/rram-controller@5004e000/rram@0/partitions/partition@1ed000' defined in nrf/bo>
                                        storage_partition: partition@1ed000 {
                                                label = "storage";          /* in nrf/boards/nordic/nrf54lm20dongle/nrf54lm20dongle_>
                                                reg = < 0x1ed000 0x10000 >; /* in nrf/boards/nordic/nrf54lm20dongle/nrf54lm20dongle_>
                                        };
                                };

likewise the same for usb_mcumgr, and all that sample does is use MCUmgr's img mgmt which opens and writes to a partition, so unless the image build for the dongle is from an entirely different repo then their claim is false

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

discussed f2f, the comment is not false per se, but the takeaway is that this layout should be configured by default in MCUboot and fw_loader for the dongle (not in the sample).

@Damian-Nordic Damian-Nordic modified the milestones: 3.3.0, 3.3.1 Apr 15, 2026
@Damian-Nordic
Copy link
Copy Markdown
Contributor Author

Will open another PR that contains a subset of changes without touching MCUboot and fw_loader partition layout.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants