Skip to main content
Cellular firmware is not hard to write. It is hard to bring up. The code compiles, the board boots, and then the modem sits there not attaching, and nothing in the application log says why, because the reason is inside the modem and the modem does not log to your console. Adsum ships two tools for exactly that gap, and curated knowledge for the three development kits.
Cellular is delivered from the registry, not baked into the extension, so it reaches you when it is ready rather than when the next release ships. All of it is authored by Omar Morceli.
The cellular runs need a free account: LTE-M / NB-IoT gateway, satellite NB-NTN bring-up on the nRF9151, and nRF91 modem bring-up. Register once, inside the extension, with GitHub or email. BLE, Wi-Fi and Ethernet work without it. Working cellular firmware for the LEW840x, as signed images and licensed source, is on gateway firmware; flashing the images, step by step, is on the cellular LEW840x page.
Adsum IoT Coder home with an nRF9151 DK detected: 'your nRF9151 DK is detected, register to unlock its attach and APN recipes', above the locked cellular runs

An nRF9151 DK on the desk, no account yet: the home names the board and says what registering unlocks for it.

What is supported

nRF91 sits under the nRF platform rather than beside it, so an nRF91 project uses the same build, flash, log and CRA workflow as an nRF52 project. Nothing new to learn to get started. See chips and protocols for everything else the agent supports, and getting started for setup.

LTE-M or NB-IoT

This is the first decision, it is made in your prj.conf, and getting it wrong costs a week. Both are 3GPP low-power cellular on the same chip, and they are not interchangeable.
Neither works if your operator does not run it in that cell. Coverage maps are per-technology, and a SIM that attaches on LTE-M in one country may only find NB-IoT in the next. Check the operator before blaming the firmware. This is the single most common cause of “the modem will not attach”.

The board shell

An interactive shell into the running board, over the same serial link you already have. It speaks two languages at once: AT commands to the modem and Zephyr shell commands to the application. That matters because the two answer different questions. AT+CEREG? tells you whether the network has accepted you. AT+CESQ tells you whether you can hear the tower at all. The Zephyr side tells you what your own code did about it. Bringing a modem up means moving between those two constantly, and the agent runs the commands, reads the replies, and knows what the numbers mean rather than handing you a manual. The curated AT reference is a bit of its own, so the meanings of the response codes stay correct as Nordic revises the modem firmware. Both are covered alongside the rest in Tool bits.

The modem trace

When the shell is not enough, the modem trace is the layer below it: a capture from inside the modem itself, of the network signalling your application never sees. This is where the real answers live. A device that will not attach is failing at a specific step, and the step names the fix:
  • No signal at all: antenna, band configuration, or you are asking for a technology this cell does not run
  • Signal, no attach: SIM, APN, or a PLMN the operator will not accept you on
  • Attach, then immediate detach: usually credentials or a subscription that is not provisioned for the technology
  • Attach, no data: APN accepted but the PDN context is wrong
The agent captures the trace, reads it, and reports the step that failed in those terms. When the failure is in your own code rather than the network, the 3-layer debug is the equivalent for radio work. Reading a raw modem trace by hand is a specialist skill; this is precisely the kind of thing that should not be a prerequisite for shipping a product.

GNSS

The nRF91 has a GNSS receiver in the same modem as the LTE radio, sharing one RF path. That single fact causes most GNSS surprises:
  • The first fix is slow. A cold start with no assistance data can take minutes under an open sky, and does not complete at all through a roof. Test outdoors before concluding anything.
  • LTE and GNSS take turns. The modem cannot receive both at once, so an aggressive reporting interval starves the fix it is trying to report.
  • Assistance data changes the picture. Supplying it turns minutes into seconds, and it has to come from somewhere.
The curated GNSS knowledge covers getting a first fix and the LTE coexistence that decides whether you ever get one.

Power, and why the device died in a month

A cellular sensor’s battery life is set almost entirely by how the modem sleeps between reports, not by how efficient your application code is. PSM (power saving mode) lets the device tell the network it will be unreachable for a long stretch, and lets the modem power down almost completely without re-attaching afterwards. eDRX keeps it reachable, but only in scheduled windows. You request both; the network decides what you actually get, and it may grant less than you asked for. Firmware that assumes it received what it requested is the usual cause of a field battery life that misses the estimate by an order of magnitude, and the shell shows you what was actually granted.

Two things ship as knowledge but need hardware you may not have

NTN, NB-IoT over satellite. The curated knowledge ships, and so does the modem firmware: Nordic publishes it. The gate is the silicon. It runs only on an nRF9151 of the LACA A1A revision, and Nordic states plainly that it will not run on LACA A0A, the nRF9161, the nRF9131 or the nRF9160. Check the label on the module before you order.DECT NR+, licence-exempt 5G mesh. Here the firmware is the gate: the knowledge ships, and the modem image comes from Nordic sales rather than from the website.Both are real and both are written up. Neither is something you can try this afternoon unless you already have the parts, and we would rather say so here than let you find out after a purchase order.

Starting a cellular project

1

Say what you are building, and on which kit

Name the board (nRF9160 DK, nRF9161 DK or nRF9151 DK) and the behaviour. The board knowledge loads with it.
2

Settle LTE-M or NB-IoT before writing code

It is a prj.conf decision with consequences for antenna, power budget and operator. Decide it deliberately.
3

Build, flash, and get to an attach

The same build and flash workflow as any other nRF board. Then use the board shell to confirm registration rather than guessing from application logs.
4

When it will not attach, take a trace

The modem trace names the step that failed. Fix that step rather than changing settings at random.
5

Then treat it as a product

A connected device is in scope for the Cyber Resilience Act. The SBOM, CVE scan and posture check work the same on an nRF91 build.

Chips and protocols

Everything else the agent supports, and what is coming.

Tool bits

The board shell and modem trace alongside the loggers, sniffer and decoders.