This document describes the pre-built firmware published on each GitHub release. Each zip bundles one application and board-type combination built by CI from the matching NCS version pinned in west.yml.
Pre-built firmware and release notes are published here.
Download the zip that matches your application and hardware setup, extract it, and flash merged.hex with a J-Link debugger or nrfutil device program. See Flashing a release below.
Release version vX.Y.Z matches the semver embedded in the firmware (X.Y.Z+0 in the device boot log).
Each release contains one zip per CI build flavor:
| Release zip | Application | Hardware | Description |
|---|---|---|---|
91m1_ppp-nrf54l15-v{VERSION}.zip |
91m1_ppp | nRF54L15 DK + nRF9151 DK | Standard PPP host; nRF Cloud CoAP/DTLS on the host |
91m1_ppp-nrf54lm20b-v{VERSION}.zip |
91m1_ppp | nRF54LM20B DK + nRF9151 DK | Same feature set on nRF54LM20B |
91m1_ppp-nrf54lm20b-location-v{VERSION}.zip |
91m1_ppp | nRF54LM20B DK + nRF7002-EB2 + Serial Modem | Wi-Fi scan for cloud-assisted location |
93m1_ppp-nrf93m1-v{VERSION}.zip |
93m1_ppp | nRF93M1 DK | PPP host for the integrated nRF93M1 modem |
93m1_at-nrf93m1-v{VERSION}.zip |
93m1_at | nRF93M1 DK | AT host; modem terminates the cloud connection |
Replace {VERSION} with the release tag without the v prefix (for example 1.2.3 for tag v1.2.3).
91m1 host setups also require Serial Modem firmware on the nRF9151 or nRF9151 SMA DK. See Serial Modem firmware (nRF9151 DK) below.
Everything sits at the top level, with no nested directories:
91m1_ppp-nrf54l15-v1.2.3/
├── README.md what each file here is for
├── merged.hex flash this on the host DK
├── zephyr.elf
├── zephyr.signed.bin
├── dfu_application.zip
├── .config
└── serial_modem_v{VERSION}_nrf9151dk_nrf91m1.zip firmware for the companion nRF9151 / SMA DK
93m1_ppp bundles carry no modem archive, their board having an integrated modem, and 93m1_at additionally has neither zephyr.signed.bin nor dfu_application.zip. File names are fixed so scripts and documentation stay valid after extraction.
| File | Description | Use case |
|---|---|---|
README.md |
Generated per bundle: the files it contains, flash commands, and console port | Flashing a downloaded zip without opening this page |
merged.hex |
Full sysbuild image (TF-M, MCUboot where applicable, signed application, partition layout). Same contents as build/merged.hex from a local sysbuild. |
Programming the device with a J-Link debugger or nrfutil |
zephyr.elf |
ELF file with debug symbols | Debugging, coredump analysis, Memfault symbol upload, addr2line |
zephyr.signed.bin |
MCUboot-signed application image | FOTA through Memfault (not included in 93m1_at bundles) |
dfu_application.zip |
DFU package wrapping the signed image with its manifest | nRF Cloud FOTA jobs (not included in 93m1_at bundles) |
.config |
Kconfig snapshot from the release build | Inspecting which options were enabled without rebuilding |
serial_modem_*_nrf9151dk_nrf91m1.zip |
Serial Modem release tested by CI that night, exactly as published upstream | Programming the companion DK (91m1_ppp bundles only) |
Use merged.hex for first-time programming or when you need to replace the full flash contents, including the bootloader and secure partitions. Host applications (91m1_ppp, 93m1_ppp) are built with sysbuild, TF-M, and MCUboot; the merged image reflects that layout.
After flashing, follow the application guide for hardware setup and cloud onboarding:
Upload zephyr.elf to Memfault once per release build so coredumps decode correctly. The GNU build ID logged at boot must match the symbol file. See Memfault remote debugging for the 91m1_ppp flow.
The .config file is useful when comparing behavior between releases or confirming that a feature (location, Memfault, FOTA, and so on) was enabled in the build you downloaded.
The zephyr.signed.bin file is for signed application-only payload for over-the-air updates. CI FOTA tests build a patch-bumped copy locally; production OTA is typically managed through Memfault releases linked to your nRF Cloud project. Not produced for 93m1_at, which does not ship a signed update image in CI.
The dfu_application.zip file is for the same signed image packaged with the manifest an nRF Cloud FOTA job expects, so a release can be deployed without rebuilding. Not produced for 93m1_at.
Only the files above ship. Per-domain MCUboot and TF-M output, .map and .dts files, and the partition metadata are not included. Build the same tag locally when you need them, as described in Building locally instead.
The nRF91M1 PPP Host Application (91m1_ppp on nRF54L15 or nRF54LM20B) needs a separate Serial Modem image on the wired nRF9151 or nRF9151 SMA DK, configured for PPP + CMUX on UART0 for an external host MCU. Every 91m1_ppp bundle carries the upstream archive CI tested that night, so there is no separate asset to download, and on-target tests flash that same archive, so what ships beside the host build is what CI verified against it.
The exact tag varies by SMHA release. Each bundle's README.md names the Serial Modem version and links to the upstream release page. Browse Serial Modem releases for the source, or use the zip already in your download.
Besides the full-flash .hex, the archive holds the ELF with debug symbols, a Kconfig snapshot, the signed application and MCUboot slot images, DFU packages for programming without a debugger, and a devicetree snapshot.
Extract it, flash the .hex on the Serial Modem DK first, then flash the host bundle's merged.hex on the host DK:
unzip serial_modem_v<tag>_nrf9151dk_nrf91m1.zip
nrfutil device program \
--firmware serial_modem_v<tag>_nrf9151dk_nrf91m1.hex --recoverReplace <tag> with the version named in the bundle README.md (for example 2.0.0-preview3).
See nRF91M1 PPP Host Application's hardware setup for wiring and Board Configurator settings.
Extract the zip, then flash merged.hex from the extracted directory.
West (from an initialized nRF Connect SDK workspace with the SEGGER J-Link connected):
west flash --hex-file merged.hex --recovernrfutil:
nrfutil device program --firmware merged.hex --recoverUse --recover on the first flash or when TF-M or credential storage must be reset. For routine re-flash during development, omit --recover if you want to keep TF-M Protected Storage credentials.
For 91m1 two-board setups, extract the bundled Serial Modem archive and flash its .hex on the nRF9151 DK before programming the host merged.hex.
| Bundle | Typical console |
|---|---|
91m1_ppp-nrf54l15-* |
Host DK VCOM1 |
91m1_ppp-nrf54lm20b-* |
nRF54LM20B DK VCOM0 |
91m1_ppp-nrf54lm20b-location-* |
nRF54LM20B DK VCOM0 |
93m1_ppp-nrf93m1-*, 93m1_at-nrf93m1-* |
nRF93M1 DK default console |
See each application's hardware setup guide for wiring and serial port details.
Release zips are convenience binaries. To modify firmware or match an unreleased commit, build from source in an NCS workspace:
cd applications/<app>
west build -b <board> -p
west flash --recoverBoard identifiers match CI; see CI and contribution and each application's documentation for build arguments (for example Wi-Fi location overlays on 91m1_ppp).
- CI and contribution - How releases are versioned and published.
- nRF91M1 PPP Host Application's Memfault - Symbol upload and coredump workflow.