Recipes
xng/docs/recipes

Recipes

Copy-paste starting points for the most common setups. Swap in your own station ID, device serials, and receiver position.

Don’t know which frequencies are active near you? Run xng scan first (see the Quickstart) — it prints a session block you can paste straight into a station file.

Two ACARS channels → Airframes

The headline recipe: capture two channels from one RTL-SDR, decode the full application layer, feed the network.

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

VDL2, four channels including the worldwide CSC

bash
xng listen --sdr driver=rtlsdr --mode vdl2 -r 2400000 -c 136.800M \
    --channels 136.650,136.800,136.925,136.975

HFDL on an Airspy HF+ Discovery

bash
xng listen --sdr driver=airspyhf --mode hfdl -r 768000 -c 10060.000k \
    --channels 10027k,10060k,10063k,10081k,10084k,10087k

Full-band Iridium on an Airspy R2

The wideband burst hunter wants threads — give it cores.

bash
xng listen --sdr driver=airspy --mode iridium -r 10000000 -c 1622.000M \
    --channels 1622.000 --decode-threads 8

AIS, both channels from one capture

bash
xng listen --sdr driver=rtlsdr --mode ais -r 2400000 -c 162.000M \
    --channels 161.975,162.025 --nmea-tcp 0.0.0.0:10110

ADS-B with a live map, feeding the community

Native 2.4 MS/s on a plain RTL-SDR, with your own tar1090-style dashboard plus Beast and SBS streams for other tools.

bash
xng listen --sdr driver=rtlsdr --mode adsb -r 2400000 -c 1090.000M \
    --channels 1090 --receiver-pos 47.62,-122.35 \
    --http 0.0.0.0:8080 --beast 0.0.0.0:30005 --sbs 0.0.0.0:30003

That --beast stream is what community ADS-B aggregators ingest — point a Beast feeder at Airplanes.Live or Plane.Watch to contribute your coverage while xng keeps feeding ACARS, VDL2, and the rest to Airframes.

Replay a recording — no hardware

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

Wrap an existing decoder onto the xng bus

Keep your current decoder, but gain the shared application layer, asf-2.0, and Airframes feeding.

bash
dumpvdl2 --output decoded:json:file:path=- 136975000 \
    | xng extern --format dumpvdl2 --asf2-grpc http://ingest:6001

A whole station, one process

Once you run more than one mode, move to a station file and let xng station manage every SDR, mode, and output together:

bash
xng station station.toml
xng status

Feeding multiple modes? Give each its own suffixed station ID with the per-mode [outputs.airframes] block, so your ACARS, VDL2, and HFDL contributions show up separately on the network.