NTN with Serial LTE Modem (SLM)
This page describes connecting the nRF9151 Feather to a non-terrestrial network (NTN) using the Circuit Dojo fork of the Serial LTE Modem and Nordic's NTN modem firmware.
Prerequisites
- nRF9151 Feather (A1A or later).
- NTN modem firmware flashed via nRF Connect Programmer. Use the latest NTN build — at time of writing,
mfw_nrf9151-ntn_1.0.0-1.alpha.zip. The current release is always listed on the Nordic nRF9151 downloads page under the NTN modem firmware section. - SLM application built from circuitdojo/ncs-serial-modem and flashed to the Feather.
- An NTN-enabled SIM. NTN must be explicitly provisioned on the account — having an NTN plan is not sufficient. Confirm activation with your provider (e.g. Soracom support) for the region you are operating in.
- An antenna with adequate gain in the NTN band (see Antennas below).
- A clear view of the sky. NTN uses GEO satellites; obstruction by roofs, walls, or dense tree cover will prevent attach.
Antennas
NTN link budget is tight, so the antenna matters more than it does on terrestrial LTE-M or NB-IoT. The stock Feather antenna can attach and send messages, but in field testing the choice of antenna consistently changes RSRP by 5–10 dB and noticeably reduces retransmission rate.
Community-tested options, from most to least convenient:
- LTE + GPS Combo Antenna (Circuit Dojo) — single antenna for both GNSS and cellular on the nRF9151 Feather's single U.FL. Good choice for compact deployments.
- Bingfu 4G LTE Outdoor Antenna — thin coax, SMA to U.FL adapter needed. Strong performer in Achim Kraus's side-by-side tests (post #4552). Works well sitting indoors with the antenna fed outside through a window.
- KYOCERA AVX:
- 9002418L0-L16S-16D
- X9003334-5GDSMB
- 1002089 — LTE PCB antenna with SMA connector
- TE Connectivity:
- Pulse Electronics:
Any LTE antenna tuned for L-band / S-band with reasonable gain and a U.FL connector (or SMA with a U.FL pigtail) will work. Avoid antennas tuned only for sub-GHz cellular bands — they will not perform on NTN.
FCC compliance: the nRF9151 Feather's FCC grant covers operation up to a specific maximum antenna gain. Using a higher-gain antenna than what the grant allows voids the grant and makes the device non-compliant to operate in the US. Check the Compliance page for the applicable limit and pick an antenna at or below that gain.
Tips:
- For benchtop development, run an outdoor antenna on a long coax out a window. This removes most coverage variability from debugging.
- Band 256 has consistently outperformed band 255 in community testing. If your network offers both, prefer 256.
- Confirm performance with
AT%XMONITOR— aim for RSRP better than −125 dBm and SNR above 0 dB for reliable messaging.
AT command sequence
Open a serial terminal to the Feather's USB CDC port. The sequence below brings the modem up in NB-IoT NTN mode, seeds a location, configures a non-IP PDP context, and attaches.
AT+CFUN=4
AT%XSYSTEMMODE=0,0,0,0,1
AT%XBANDLOCK=0
AT%LOCATION=2,"<lat>","<lon>","<alt>",<uncertainty>,<age>
AT+CGDCONT=0,"non-ip","<apn>"
AT+CEREG=5
AT+CNEC=24
AT+CSCON=3
AT%MDMEV=2
AT+CFUN=1
Replace the placeholders with values for your deployment. For Soracom use APN soracom.io.
Notes on the commands
AT%XSYSTEMMODE=0,0,0,0,1— disables LTE-M, NB-IoT, GNSS, and GNSS priority, and enables NB-IoT NTN (the 5th parameter). Only one system mode should be active.AT%XBANDLOCK=0— clears any prior band lock. Do not useAT%XBANDLOCK=2,,"23"to lock to band 23.XBANDLOCKtakes a bitmask string where the position of each1is the band number. A literal"23"locks bits 2 and 3 (bands 2 and 3), not band 23. NTN uses bands 255 and 256 — locking to those requires a 256-character bitmask with the appropriate trailing bits set. In practice, leave the band lock cleared and let the modem pick; if you must restrict, consult the Nordic AT Command reference for the full bitmask form.AT%LOCATION=2,<lat>,<lon>,<alt>,<uncertainty>,<age>— seeds an initial location for the modem's satellite selection logic. NTN requires a valid position before it will attempt attach. If GNSS is available, let the modem acquire a fix and it will update automatically; otherwise provide coordinates accurate to within a few kilometers. Providing"0"for altitude and0for age is acceptable but some stacks prefer a real altitude and a recent time.AT+CGDCONT=0,"non-ip","<apn>"— most NTN providers (Soracom, Skylo) use non-IP PDP type with a tiny MTU.AT+CEREG=5,AT+CNEC=24,AT+CSCON=3,AT%MDMEV=2— enable verbose URCs so you can see what the modem is doing.
What a successful attach looks like
After AT+CFUN=1 you should see, over the course of anywhere from seconds to a couple of minutes:
%MDMEV: SEARCH STATUS 1
+CEREG: 2,"<tac>","<ci>",14
+CEREG: 1,"<tac>","<ci>",14
LTE mode 14 is NB-IoT NTN. Registration state 1 (home) or 5 (roaming) indicates the device has attached. Use AT%XMONITOR to see the PLMN, band, EARFCN, RSRP, and SNR. Typical values on a working link: band 256, PLMN 90198 (Skylo), RSRP around -120 to -130 dBm, SNR above 0 dB.
Troubleshooting
+CEREG: 91 followed by SEARCH STATUS 2 in quick succession
The modem decided there is nothing to search for and stopped. Common causes:
- NTN not actually provisioned on the SIM for your region. Contact your provider and have them confirm NTN is active on the specific ICCID for the country you are in. US and EU coverage are often provisioned separately even on the same operator.
- Band lock excluding 255/256. Verify with
AT%XBANDLOCK?that no prior lock is in effect. - No location seeded. Run
AT%LOCATION?to confirm. Without a valid position NTN will not search.
SEARCH STATUS 1 but never attaches
The modem is searching but not finding a usable cell. Check:
- Antenna and sky view. Move outdoors with a clear view of the satellite's arc. In North America, Skylo uses a GEO satellite over the equator — aim south. In Europe, aim roughly south as well. Indoor operation rarely works without an external antenna.
- Signal with
AT%CONEVAL. This returns RSRP/SNR estimates for the serving cell candidate. - Scan results with
AT+COPS=?. A full scan (can take several minutes on NTN) lists every PLMN the modem sees. If no NTN PLMN appears, the issue is RF or coverage, not configuration.
Attach works but sending data fails
NTN links are extremely constrained — GEO RTT is around 20 s, messages are limited to 256 bytes, and providers typically enforce one message per 30 s. Build applications around these limits. For secure transport, DTLS 1.2 with Connection ID (RFC 9146) is the common choice; plain DTLS without CID will break whenever the bearer gap resets the network path.