01 / 08

sdrx Software Defined Multichannel AM Receiver

A narrowband AM airband receiver for RTL-SDR and Airspy dongles. Listen to multiple ATC channels simultaneously from a terminal.

C++20 GPL-2.0 Linux Raspberry Pi ALSA
github.com/johanhedin/sdrx
02 / 08
Overview

What is sdrx?

sdrx turns a cheap USB dongle into a professional-grade multichannel AM airband monitor. It runs entirely in the terminal with no GUI required.

  • Written in C++20
  • Text console, terminal-based UI
  • Audio via ALSA
  • Hardware channelization using
    translate → filter → downsample
  • Up to 8 MHz RF bandwidth coverage

Supported Hardware

DeviceType
RTL-SDR Blog V3RTL
Nooelec NESDR SMArt v5RTL
Airspy MiniAirspy
Airspy R2Airspy
RTL-SDR Blog V4 (R828D)Untested

Only R820T(2)/R860 tuner-based devices are officially supported.

03 / 08
Capabilities

Key Features

📡

Multichannel RX

Monitor multiple ATC frequencies simultaneously from a single dongle and audio output.

🔊

Audio Panorama

Channels placed in a virtual left-right stereo field for spatial awareness across the band.

📶

Auto-Squelch

Per-channel automatic SNR-based squelch; only opens when a signal is truly present.

🔌

Hot-Plug Recovery

Auto-restarts and reconnects if the dongle is unplugged and re-inserted at runtime.

🛫

Airband Channels

Use standard designators (8.33 kHz & 25 kHz spacing) instead of raw frequencies.

🎛️

Gain Control

Full individual control over LNA, Mixer, and VGA gain stages on R820T(2)/R860.

04 / 08
Architecture

Signal Processing Pipeline

RF Input
RTL / Airspy
IQ Samples
Up to 10 MS/s
Translate
Frequency shift
Filter
Channel select
Downsample
Audio rate
AM Demod
Envelope det.
ALSA Out
Stereo audio

Channelization

  • Time-domain translate + filter + decimate
  • Simple and robust; future FFT-bank planned
  • Per-channel independent SNR squelch

Bandwidth Coverage

Up to 8 MHz with Airspy R2/Mini at 10 MS/s IQ

05 / 08
Platforms

Tested Platforms

🖥️

x86_64 / Fedora

  • Fedora 41
  • Full feature set
  • Primary dev platform
🍓

Raspberry Pi 4B

  • 4 GiB RAM model
  • Raspberry Pi OS (64-bit)
  • Tested & supported
🍓

Raspberry Pi Zero 2W

  • Ultra-compact form factor
  • Raspberry Pi OS 64-bit
  • Tested & supported

Requirements: Linux + ALSA. Basic command-line proficiency expected. Less powerful Pi models and non-R820T(2)/R860 dongles may not be compatible.

libairspy librtlsdr ALSA uWebSockets CMake FFTW
06 / 08
Getting Started

Build & Install

sdrx is source-only. Build it with CMake — submodules for librtlsdr and libairspy are included.

# Clone the repository git clone --recursive \ https://github.com/johanhedin/sdrx # Configure & build cmake -S sdrx -B sdrx/build cmake --build sdrx/build

Full build instructions including dependency installation are in the doc/BUILD.md file in the repo.

  • Submodules: libairspy, librtlsdr, uWebSockets
  • CI tested on every push via GitHub Actions
  • CodeQL security analysis enabled
  • Octave scripts included for DSP prototyping
✓ Build passing ✓ CodeQL passing
07 / 08
Usage

Running sdrx

Specify channels using standard airband designators. Both 8.33 kHz and 25 kHz channel spacing schemes supported.

# RTL-SDR: monitor two ATC channels ./sdrx --device rtl \ --channels 118.105 120.500 # Airspy Mini: wider bandwidth ./sdrx --device airspy \ --channels 118.105 119.900 \ 121.500 122.800

Key Options

OptionDescription
--channelsChannel designators to receive
--devicertl or airspy
--lna / --mix / --vgaGain stage control
--squelchSNR squelch threshold

Full documentation at doc/USING.md

08 / 08
Summary

Why sdrx?

  • Purpose-built for ATC airband monitoring
  • Multichannel from a single cheap dongle
  • Spatial audio panorama for channel awareness
  • Runs on a Raspberry Pi Zero 2W
  • Proper channel designators — no raw MHz math
  • Auto-squelch, hot-plug, waterfall in terminal
  • Open source · GPL-2.0 · actively maintained
8 MHz
RF Bandwidth (Airspy)
C++20
Language Standard
3
Tested Platforms
github.com/johanhedin/sdrx
1 / 8