Skip to content

Move the nRF54L05/L10/L15 to the s145 10.0.1 SoftDevice - #9

Merged
caveman99 merged 4 commits into
meshtastic:masterfrom
cvaldess:pr/s145-10.0.1
Oct 26, 2026
Merged

caveman99 merged 4 commits into
meshtastic:masterfrom
cvaldess:pr/s145-10.0.1

Conversation

@cvaldess

@cvaldess cvaldess commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Second of the three PRs for the move to s145 10.0.1, in the order @caveman99 set in andyshinn#1: the bootloader (meshtastic/nRF54_Bootloader#4) is released first, then this, then the platform (meshtastic/platform-nordicnrf54#3) moving both pins and the boards together.

It's @andyshinn's 958690f and 552b4ea from ashinn/nrf54lm20a, squashed onto master with his authorship. Master has no nRF54LM20A support yet, so the LM20A SoftDevice hex, its nrf54lm API directory and the LM20A lines in the docs are left out; they can come with the LM20A support. The commit message says what was trimmed.

What it changes

  • SoftDevice files follow sdk-nrf-bm's per-family layout: cores/nRF5/nordic/softdevice/s145_nrf54l_10.0.1_API/ and bootloader/s145/10.0.1/nrf54l/s145_nrf54l{05,10,15}_10.0.1_softdevice.hex. The 9.0.0 headers and hex files are removed.
  • nrf54l{05,10,15}_s145_v9.ld become *_s145_v10.ld, with the 10.0.1 bases: 0x5A800 / 0xDA800 / 0x15A800 (were 0x58C00 / 0xD8C00 / 0x158C00). App FLASH, InternalFS and the bootloader settings page don't move. Master's linker structure is kept; only __softdevice_start__ changes.
  • The API change from 9.0.0 is small, but not nothing: NRF_EVT_RADIO_CANCELED is gone, and the NRF_SOC_EVTS entries after it are renumbered (NRF_EVT_RAND_SEED_REQUEST 9 → 8). Code that uses the names is fine once rebuilt; an application built against one version can't run on the other anyway, since the SoftDevice base moves too.
  • tests/blink builds against the platform PR branch (99af5cd), since platform master still selects 9.0.0 and the v9 scripts. It goes back to platform master once that is released.

Migration

A board on 9.0.0 can't get to 10.0.1 by DFU: the bootloader can't replace the SoftDevice, and its interrupt forwarding is built for the old base. It needs a one-time reflash over SWD of the 10.0.1 SoftDevice, a bootloader built for 10.0.1 and the application.

  • Without a chip erase, InternalFS stays, so the node keeps its config and BLE bonds.
  • With a chip erase, both are lost.

Don't send a DFU package built for 10.0.1 to a board still on bootloader v0.3.0: it erases the application before it rejects the package, and the board stays in the bootloader until it gets a 9.0.0 package or SWD.

Testing

tests/blink builds for all five boards against this and the platform PR.

nRF54L15-DK, starting from bootloader v0.3.0 + s145 9.0.0. Meshtastic's nrf54l15dk env built against this core (plus the MDK bump from #8) and the platform PR. Against the 9.0.0 build of the same tree, the application differs only in the SoftDevice base, the NRF_EVT_RAND_SEED_REQUEST value in two comparisons, and build dates.

Over SWD, without a chip erase: 10.0.1 SoftDevice + bootloader from the bootloader PR + application. Then:

  • it boots; the SoftDevice info struct at 0x15C800 reads magic 0x51B1E5DB, FWID 0x310D
  • the config came back from InternalFS (fixed BLE PIN still set), and the node sent its NodeInfo on the mesh 32 s after the reset
  • RRAM matches the three images byte for byte; the flashing didn't touch the settings page or InternalFS
  • BLE: an iPhone that was already bonded reconnected on its own, encrypted with LESC + MITM; after forgetting the device, a fresh pairing with the PIN worked the same way, with no resets
  • going back to 9.0.0 the same way (InternalFS kept) worked, and the bond made on 10.0.1 still reconnected

Not covered: the L05 and L10 (no hardware), the XIAO boards (flashed over their CMSIS-DAP, not tried), BLE OTA through the 10.0.1 bootloader, and anything longer than a few minutes on 10.0.1.

Summary by CodeRabbit

  • New Features
    • Added support for SoftDevice s145 version 10.0.1 across nRF54L05, nRF54L10, and nRF54L15, including updated memory layouts and device addresses.
    • Added a defined value for unavailable Bluetooth RSSI readings and clarified which timer is used during radio timeslots.
  • Documentation
    • Updated setup and API guidance to reflect the version 10.0.1 file layout and board selection.
    • Added license and attribution notices for included software.

andyshinn and others added 2 commits October 15, 2026 14:35
sdk-nrf-bm ships s145 per SoC family (nrf54l, nrf54lm, ...): one API header
set per family and one hex per SoC in it. Mirror that layout for the nRF54L
family:

  cores/nRF5/nordic/softdevice/s145_nrf54l_10.0.1_API/   L05 / L10 / L15
  bootloader/s145/10.0.1/nrf54l/s145_nrf54l{05,10,15}_10.0.1_softdevice.hex

The L05/L10/L15 linker scripts become *_s145_v10.ld with the 10.0.1
SoftDevice bases (0x5A800 / 0xDA800 / 0x15A800); the 9.0.0 hex and API
headers are dropped.

[cvaldess: squashed from andyshinn/nRF54_Arduino 958690f and 552b4ea onto
master. Left out the nRF54LM20A SoftDevice hex, its nrf54lm API directory,
the nRF54LM20A lines in the docs and the test changes that point at the
fork platform, since master has no nRF54LM20A support yet. Kept master's
linker structure and only moved __softdevice_start__. The package version
is left to the release.]
The boards on meshtastic/platform-nordicnrf54 master still select s145
9.0.0 and the v9 linker scripts, which this tree no longer ships. Point the
smoke test at the platform branch that moves them to 10.0.1; switch back to
master once that is released.
@coderabbitai

coderabbitai Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: d02ac04e-28d6-4926-a0b5-e9873e37b950
Commits

Reviewing files that changed from the base of the PR and between 79a7ad6 and 589fa93.

Files selected for processing: 33
  • AGENTS.md
  • README.md
  • bootloader/s145/10.0.1/nrf54l/s145_nrf54l05_10.0.1_softdevice.hex
  • bootloader/s145/10.0.1/nrf54l/s145_nrf54l10_10.0.1_softdevice.hex
  • bootloader/s145/10.0.1/nrf54l/s145_nrf54l15_10.0.1_softdevice.hex
  • bootloader/s145/10.0.1/s145_10.0.1_license-agreement.txt
  • bootloader/s145/10.0.1/s145_10.0.1_license-attribution.txt
  • bootloader/s145/9.0.0/s145_nrf54l05_9.0.0_softdevice.hex
  • bootloader/s145/9.0.0/s145_nrf54l10_9.0.0_softdevice.hex
  • bootloader/s145/9.0.0/s145_nrf54l15_9.0.0_softdevice.hex
  • cores/nRF5/linker/nrf54l05_s145_v10.ld
  • cores/nRF5/linker/nrf54l10_s145_v10.ld
  • cores/nRF5/linker/nrf54l15_s145_v10.ld
  • cores/nRF5/nordic/softdevice/s145_nrf54l_10.0.1_API/include/ble.h
  • cores/nRF5/nordic/softdevice/s145_nrf54l_10.0.1_API/include/ble_err.h
  • cores/nRF5/nordic/softdevice/s145_nrf54l_10.0.1_API/include/ble_gap.h
  • cores/nRF5/nordic/softdevice/s145_nrf54l_10.0.1_API/include/ble_gatt.h
  • cores/nRF5/nordic/softdevice/s145_nrf54l_10.0.1_API/include/ble_gattc.h
  • cores/nRF5/nordic/softdevice/s145_nrf54l_10.0.1_API/include/ble_gatts.h
  • cores/nRF5/nordic/softdevice/s145_nrf54l_10.0.1_API/include/ble_hci.h
  • cores/nRF5/nordic/softdevice/s145_nrf54l_10.0.1_API/include/ble_ranges.h
  • cores/nRF5/nordic/softdevice/s145_nrf54l_10.0.1_API/include/ble_types.h
  • cores/nRF5/nordic/softdevice/s145_nrf54l_10.0.1_API/include/nrf_error.h
  • cores/nRF5/nordic/softdevice/s145_nrf54l_10.0.1_API/include/nrf_error_sdm.h
  • cores/nRF5/nordic/softdevice/s145_nrf54l_10.0.1_API/include/nrf_error_soc.h
  • cores/nRF5/nordic/softdevice/s145_nrf54l_10.0.1_API/include/nrf_nvic.h
  • cores/nRF5/nordic/softdevice/s145_nrf54l_10.0.1_API/include/nrf_sd_def.h
  • cores/nRF5/nordic/softdevice/s145_nrf54l_10.0.1_API/include/nrf_sd_isr.h
  • cores/nRF5/nordic/softdevice/s145_nrf54l_10.0.1_API/include/nrf_sdm.h
  • cores/nRF5/nordic/softdevice/s145_nrf54l_10.0.1_API/include/nrf_soc.h
  • cores/nRF5/nordic/softdevice/s145_nrf54l_10.0.1_API/include/nrf_svc.h
  • libraries/Bluefruit54Lib/README.md
  • tests/blink/platformio.ini

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

Walkthrough

The repository updates its s145 SoftDevice references and API headers from version 9.0.0 to 10.0.1. It changes the SoftDevice start addresses for three nRF54L devices, updates test platform selection, and adds two license notices.

Changes: SoftDevice s145 10.0.1 update

Layer / File(s) Summary
SoftDevice API definitions
cores/nRF5/nordic/softdevice/s145_nrf54l_10.0.1_API/include/*
The headers update the version and flash-size constants, define the timeslot timer and unavailable RSSI value, revise timeslot timer references, and remove NRF_EVT_RADIO_CANCELED.
SoftDevice memory layout
cores/nRF5/linker/nrf54l*_s145_v10.ld, README.md, AGENTS.md
The linker scripts and documentation use the updated SoftDevice start addresses for nRF54L05, nRF54L10, and nRF54L15.
Package references and selection
AGENTS.md, README.md, libraries/Bluefruit54Lib/README.md, tests/blink/platformio.ini, bootloader/s145/10.0.1/*
The documentation references the v10.0.1 API and hex layout. The blink test selects the s145-10.0.1 platform branch. The package adds Nordic Semiconductor and ARM license notices.

Priority: Normal

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Feature

Suggested reviewers: caveman99

Merge Risk: Minimal · up to 589fa

No actionable current-head risk was established; the configured boards select matching 10.0.1 headers, images, and memory layouts.

Pre-merge checks: Passed 5
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly and concisely states the main change: moving the nRF54L05, nRF54L10, and nRF54L15 to SoftDevice s145 10.0.1.
Docstring Coverage Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 4…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 4 files. (9 skipped: 9 unsupported.)

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

A rabbit checks the headers bright,
Then hops where linker addresses meet.
New license leaves join the stack,
A test branch bounds along its track.
SoftDevice ten is noted right,
The bunny rests beneath moonlight.

Comment @coderabbitai help to get the list of available commands.

This tree has no nrf54lm API directory and a single nrf_nvic.h.
Keeps CI off a fork branch until the platform is released.
@caveman99
caveman99 merged commit 7545d00 into meshtastic:master Oct 26, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants