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_spiflashCLIs. - ★ 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
- ★ SoapySDR — the 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_tcpbut 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 Radio — the 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 ofrtl_fm/rtl_power/rtl_sdrso 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 withsudo 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.