Tooling

SDR Drivers & Frameworks

SoapySDR, UHD, librtlsdr, libhackrf, GNU Radio, gr-osmosdr — the layer between hardware and software.

The plumbing that lets SDR Software talk to SDR Receivers and SDR Transceivers. Most of the time you don't think about this layer — but when something doesn't work, this is where the bug lives. Cross-link with SDR Linux Distros which ship all of these pre-built.

Vendor-specific driver libraries

  • librtlsdr / Osmocom rtl-sdr — driver for every RTL-SDR. GPLv2. Ships in every distro. The rtl-sdr-blog fork is the current upstream; merge of bias-T support, R828D / RTL-SDR v4 support, etc.
  • libhackrf — HackRF One driver; GPLv2. Includes hackrf_transfer, hackrf_sweep, hackrf_spiflash CLIs.
  • libairspy / libairspyhf — Airspy R2/Mini and Airspy HF+ drivers. BSD-3.
  • SDRplay API — closed binary library from SDRplay; covers RSP1A / RSPdx / RSPduo / RSPdx-R2. Linux / Windows / macOS / Raspberry Pi. Closed source but free to use.
  • UHD (USRP Hardware Driver) — Ettus / NI's driver for all USRP B/N/X/E series. GPLv3. The reference SDR driver — many other projects copy idioms from it.
  • LimeSuite / SoapyLMS7 — LimeSDR's driver and Soapy plugin. Apache 2.
  • iio-libiio / libiio — Analog Devices' driver layer; underlies PlutoSDR. LGPLv2.
  • bladeRF host libraries (libbladeRF, bladeRF-cli) — Nuand's. LGPLv2.

Driver abstraction

  • SoapySDRthe universal driver-abstraction layer. A C++ library + plugin model that exposes any SDR (RTL, HackRF, Airspy, SDRplay, LimeSDR, USRP, bladeRF, Pluto, Kraken) through a single API. Most modern SDR apps (SDR++, GQRX, SDRangel, GNU Radio) use it natively. Boost / Apache 2.
  • SoapyRemote — network-attach an SDR over TCP using the SoapySDR API; like rtl_tcp but generic for any device. Lets the SDR live in the attic.
  • gr-osmosdr — the GNU Radio source/sink that wraps SoapySDR (and a stack of vendor drivers); the GNU Radio block "Osmocom Source" / "Osmocom Sink" you drag onto a flowgraph.

Flowgraph / DSP frameworks

  • GNU Radiothe open-source SDR DSP framework. C++ core with a Python API; thousands of stock blocks (filters, demodulators, packet codecs, multipliers, channelizers, GUI sinks). Compose flowgraphs in GNU Radio Companion (GRC) GUI or write Python directly. GNU Radio 4 (released 2025) introduces a major refactor: type-safe block definitions, async-first scheduling, better hardware accelerator integration. GPLv3.
  • GNU Radio Companion (GRC) — the visual flowgraph editor that ships with GNU Radio. The "lab notebook" most learners spend their first months in.
  • Pothos Framework — alternative dataflow DSP framework, same niche as GNU Radio; smaller community. BSD.
  • Liquid-DSP — pure-C DSP library; standalone, no flowgraph; often used as the math library underneath custom code. MIT.
  • CSDR — Karoly Horvath's command-line DSP toolkit; used by OpenWebRX. GPLv3.
  • DigitalRF — IRF / SRI's standardized format for raw IQ recording (HDF5-based); useful for archival / ionospheric work.

Companion utilities

  • rtl_433 — see Sub-GHz, 433 MHz & RTL_433; not strictly a driver but uses librtlsdr.
  • multimon-ng — POCSAG / FLEX / DTMF / EAS / ZVEI / morse decoder; takes audio from any SDR app via piping. GPLv2. See Side-Channel & TEMPEST.
  • rx_tools (rx_fm, rx_power, rx_sdr) — SoapySDR-backed reimplementation of rtl_fm / rtl_power / rtl_sdr so you can use them with any device. GPL.
  • soapy_power / heatmap.py — wide-band power scans / heatmaps from any SDR.
  • GR-Recipes / pybombs / radioconda — packaging / environment systems for assembling a GNU Radio install. radioconda (conda-based, cross-platform) is the 2026 path of least resistance for getting a working GNU Radio + SoapySDR + the major decoders without compiling.

Practical guidance

  • Use radioconda or DragonOS, don't compile. Building GNU Radio from source is a rite of passage that you do not need in 2026. mamba install -c conda-forge gnuradio (or radioconda) gives you a working stack in minutes.
  • SoapySDRUtil --probe="driver=rtlsdr" — first thing to try when an app doesn't see your SDR. Confirms the device is enumerated at the Soapy layer.
  • udev rules. Every fresh Linux install needs /etc/udev/rules.d/ entries for HackRF / Airspy / Pluto / etc. so non-root users can open the device. The package usually drops them; reload with sudo udevadm control --reload-rules.
  • GNU Radio version pinning. Major modules (gr-iridium, gr-doa, gr-satellites) lag the GNU Radio release by months. Don't upgrade GNU Radio mid-project.
  • GR4 migration. GNU Radio 4 is not backwards-compatible with the GR3 block API. Existing flowgraphs run unchanged in GR3-compat mode for now; OOT modules need active porting. Stay on GR3.10 if your tooling depends on it.

License / pricing notes

  • Almost everything here is GPL / LGPL / BSD / Apache. SoapySDR is permissive (Boost) so commercial closed-source apps can wrap it.
  • SDRplay API is the only mainstream closed-source driver in regular use; its license forbids redistribution but personal use is unrestricted.
  • UHD is GPL, which means commercial USRP-based products typically dynamic-link UHD and ship their app under whatever license they like.
  • GNU Radio is GPLv3 — flowgraphs you publish are derivative works.

Pick this if…

  • Default driver abstraction: SoapySDR. If your app supports it, every SDR works.
  • Default DSP framework: GNU Radio with GRC.
  • Default packaging: radioconda (or DragonOS for an OS-level install).
  • Network-attach an SDR: SoapyRemote (or rtl_tcp / SpyServer for the basic case).
  • Embed DSP in a custom C app, no flowgraph: Liquid-DSP.
  • Wide-band power scan / heatmap: rx_power / heatmap.py.

On this page