Skip to main content

RTT Console over J-Link

tip

The RTT console gives you the Zephyr shell plus a live firmware log stream - it is the recommended console for development and debugging. For day-to-day configuration, use the AT Console over USB-C instead - no special hardware required.

This page shows you how to attach to GLIDER through a Segger J-Link debug probe using the RTT (Real-Time Transfer) protocol. RTT gives you the full Zephyr shell plus live firmware logs - it is the recommended console for development and debugging.

When to use this console

RTT (rttt)AT over USB-C (west serial-console)
PathJ-Link → SWD → RTTUSB-C → FT234XD → UART0
What you seeZephyr shell + logsAT commands + @LOG: messages
Hardware requiredJ-Link probe + SWD wiresJust a USB-C cable
Best forDevelopment, debugging, flashing, resetDay-to-day provisioning
info

If you do not need full developer access, use the AT console over USB-C instead - it requires no special hardware.

Prerequisites

You need three things on your computer:

  1. System packages (Python, venv, Git):
sudo apt update
sudo apt install python3 python3-venv git
  1. Segger J-Link software pack installed. Verify with:
which JLinkExe
# /usr/bin/JLinkExe

If JLinkExe is missing, download the J-Link software from Segger's website and install it.

  1. The rttt CLI available in your active Python virtual environment:
source .venv/bin/activate
which rttt
rttt --version

If rttt is missing inside the venv, install it:

pip install rttt

Hardware

  • J-Link probe (external Segger probe or the on-board J-Link of a Nordic devkit).
  • USB cable from the J-Link to your computer.
  • SWD wires wired to the GLIDER debug header: SWDIO, SWCLK, GND, VTref.
  • A powered GLIDER (from its own power supply or via VTref from the probe).

Launching the console

With the venv active:

rttt --device nRF9151_xxCA
caution

The device identifier must be nRF9151_xxCA - lowercase xx, uppercase CA. The default identifier xxAA collides with J-Link DLL versions ≥ V9.42 and the connection will silently fail.

If you have more than one J-Link plugged in, select one by its serial number:

rttt --device nRF9151_xxCA --serial 123456789

To reset the device on attach (useful if the firmware crashed):

rttt --device nRF9151_xxCA --reset

What you get

An interactive Zephyr shell with prompt uart:~$:

  • Live logs stream past as they happen.
  • Shell commands can be typed and executed directly.

A few useful commands to get started:

help # list all commands
device list # list Zephyr devices
kernel uptime # time since last boot
kernel reboot cold # cold restart
log disable # silence logs for a clean shell
log enable wrn # show only warnings and above
info show # device info: serial number, claim token, version

GLIDER-specific commands include app, inputs, therm, alarm, modbus, and led - see the Shell Commands reference for the full list.

Exiting

Press Ctrl+C or simply close the terminal window.

Troubleshooting

Another process is holding the probe (nrfjprog, another rttt session, Segger Ozone, a VS Code debugger, etc.). Find and close it:

ps aux | grep -i jlink

Could not find requested device

  • Check the device identifier - it must be nRF9151_xxCA (lowercase xx, uppercase CA).
  • Confirm the GLIDER is powered.
  • Verify SWD wires (SWDIO, SWCLK, GND, VTref) are connected correctly.
  • Run JLinkExe interactively and connect to confirm the probe can see the target.

Console attaches but the prompt uart:~$ never appears

The firmware is not running or has crashed. Reset the device on attach:

rttt --device nRF9151_xxCA --reset

The J-Link software pack version installed does not match the library version pylink-square expects. Reinstall the latest J-Link pack, or point LD_LIBRARY_PATH to it:

export LD_LIBRARY_PATH=/opt/SEGGER/JLink:$LD_LIBRARY_PATH