Quickstart
xng/docs/quickstart

Quickstart

Plug in an RTL-SDR, let xng find what is receivable, and watch it stream. No config files, no frequency tables to memorize — and you can rehearse the whole thing on a recorded file first.

The fastest possible start: xng tui --sdr driver=rtlsdr --mode acars. It picks sensible channels for you and opens a live message browser. Everything below just explains what is happening and how to go further.

1 · Confirm your setup

List the radios xng can see, then run the built-in pipeline self-check:

bash
xng devices      # list attached SDRs (native Airspy + SoapySDR)
xng selftest     # end-to-end sanity check of the decode pipeline

If xng devices shows nothing, your SDR driver is not installed or the device is not connected — see Troubleshooting.

2 · Find out what is on the air

You do not need to know which frequencies are active in your area. The scanner sweeps the bands for the modes you ask about and writes a ready-to-run plan:

bash
xng scan --sdr driver=rtlsdr --gain 28 \
    --modes acars,vdl2,ais --dwell 120 --out scan.json

To soak-test a single mode and get per-channel reception advice (signal levels, suggested gain, which channels are worth keeping):

bash
xng survey --sdr driver=rtlsdr --mode acars --tune-gain --out survey.json

3 · Watch it live in the TUI

The interactive terminal UI is the friendliest way to see what xng is doing — a scrollable message list, a detail pane, per-channel stats, a spectrum, and a waterfall:

bash
xng tui --sdr driver=rtlsdr --mode acars
↑ / ↓

Move through the message list (up to 2000 messages are retained).

v

Toggle the detail pane between human-readable and raw JSON.

--file capture.cf32

Replay a recorded IQ file instead of a live radio — great for learning with no hardware.

4 · Print decoded traffic to the console

When you just want one-liners on stdout, use listen:

bash
xng listen --sdr driver=rtlsdr -r 2400000 -c 131.500M \
    --channels 131.550,131.725
text
12:01:13.402 [acars] 131.550 MHz ACARS N401UA UA1989 lbl=H1 ok
12:01:14.118 [acars] 131.725 MHz ACARS N831UA UA0233 lbl=B6 ok [ADS-C 47.5512 -122.3052 34000 ft]

5 · Feed Airframes

Add your station ID and a feed flag, and your decodes contribute to the open network:

bash
xng listen --sdr driver=rtlsdr -r 2400000 -c 131.500M \
    --channels 131.550,131.725 \
    --feed-airframes --station-id XX-KSEA-1

Running more than one mode, or want it to survive reboots? That is what station mode is for — one TOML file describes every SDR, mode, and output, and the recipes page has copy-paste starting points.

Try it with no hardware

Have a recorded IQ file? Inspect it, then decode it — no radio required:

bash
xng iq-info capture.cf32 -r 2000000 -c 131500000
xng decode capture.cf32 -r 2400000 -c 131.500M --channels 131.550,131.425