Installation
xng/docs/install

Installation

Most people never touch a compiler — grab a prebuilt binary, the Debian package, or the Docker image. Building from source is one cargo command when you want it.

Not sure which to pick? On a Raspberry Pi or Ubuntu box, use the .deb — it pulls in the radio runtime libraries for you. On macOS, use the tarball. To run it in containers, use the Docker image.

Prebuilt releases

Every release publishes signed assets on GitHub Releases: Linux x86_64 and arm64 tarballs, a macOS Apple-Silicon tarball, Debian/Ubuntu .deb packages, and a SHA256SUMS file.

Debian, Ubuntu, Raspberry Pi

The package declares its runtime dependencies, so apt installs SoapySDR and the Airspy libraries automatically:

bash
# download the .deb for your architecture from the releases page, then:
sudo apt install ./xng_0.21.0_arm64.deb

xng --version

Linux / macOS tarball

bash
tar xzf xng-v0.21.0-x86_64-unknown-linux-gnu.tar.gz
sudo cp xng /usr/local/bin/
xng --version

The tarball ships just the binary, so you supply the runtime libraries yourself —libsoapysdr at minimum, plus libairspy / libairspyhfif you use the native Airspy backends:

bash
# Debian / Ubuntu
sudo apt install libsoapysdr0.8 soapysdr-module-all libairspy0 libairspyhf1

# macOS
brew install soapysdr airspy airspyhf

Docker

A multi-arch image (amd64 / arm64 / armv7) is published for every release tag:

bash
docker run --rm ghcr.io/airframesio/xng:latest --version

# pass through a USB SDR and a config
docker run --rm -it --device /dev/bus/usb \
    -v "$PWD/station.toml:/etc/xng/station.toml" \
    ghcr.io/airframesio/xng:latest station /etc/xng/station.toml

Containers need access to your USB SDR — pass --device /dev/bus/usb (or the specific device node), and expose any output ports you serve, like -p 8080:8080for the web dashboard.

Build from source

You need a Rust toolchain, the protobuf compiler, and the SoapySDR development headers.

bash
# Debian / Ubuntu build deps
sudo apt install protobuf-compiler libsoapysdr-dev soapysdr-module-all

# macOS build deps
brew install protobuf soapysdr

git clone https://github.com/airframesio/xng
cd xng
cargo build --release          # binary at ./target/release/xng
cargo test --workspace         # runs the vendored off-air capture tests

Native Airspy backends

By default Airspy radios go through the SoapySDR shim. For a lower-overhead path, compile in the native libairspy / libairspyhf backends:

bash
sudo apt install libairspy-dev libairspyhf-dev   # or: brew install airspy airspyhf
cargo build --release --features airspy,airspyhf

No hardware?

You can build without any SDR libraries at all and still decode recorded IQ files:

bash
cargo build --no-default-features

There is no cargo install from crates.io, and no Homebrew/AUR package yet. Intel Macs build from source (the free Intel CI runners were retired). The supported install paths are: release tarball, .deb, Docker image, or cargo build.

Next step

With xng --version working, head to the Quickstart to find some signals and watch them decode.