What Is Software Defined Radio?
Software Defined Radio (SDR) is a radio communication architecture in which components traditionally implemented in hardware — filters, modulators, demodulators, amplifiers — are instead implemented in software running on a general-purpose computer or embedded processor.
In a conventional radio, dedicated analogue circuitry performs each function: a crystal filters a particular frequency, a mixer shifts the signal, a demodulator extracts audio. Changing the radio's behaviour requires physically changing its components. In an SDR, most of this signal processing happens in code. You can retune, remodulate, and repurpose the radio by changing a configuration or loading a new plugin.
This approach was pioneered for military use in the early 1990s, most notably through the US military's Joint Tactical Radio System (JTRS) programme. Since then, cheap commodity hardware — in particular the accidental discovery that DVB-T USB TV tuner dongles contain a wideband tuner chip — has brought SDR firmly into the hands of hobbyists, researchers, and engineers worldwide.
How It Works
The Signal Chain
From antenna to audio, an SDR receive chain follows these steps:
Antenna
│
▼
┌──────────────┐
│ RF Front End │ ← Bandpass filter, low-noise amplifier (LNA)
└──────┬───────┘
│ Analogue RF signal
▼
┌──────────────┐
│ Mixer / IQ │ ← Shifts signal to baseband using local oscillator
│ Downconverter│ Produces two streams: I (in-phase) and Q (quadrature)
└──────┬───────┘
│ Baseband I/Q samples
▼
┌──────────────┐
│ ADC │ ← Samples the analogue signal at high speed
│ │ (e.g. 2.4 MHz, 10 MHz, or higher)
└──────┬───────┘
│ Digital samples (USB / PCIe / Ethernet)
▼
┌──────────────┐
│ Host Software│ ← GNU Radio, SDR#, SDRangel, etc.
│ │ Digital filtering, demodulation, decoding
└──────┬───────┘
│
▼
Audio / Data output
I/Q Sampling
Rather than capturing a single stream of samples, SDRs produce complex baseband signals, which consist of two components — I (In-phase) and Q (Quadrature) — sampled 90° apart. This pair of streams fully describes both the amplitude and phase of the signal at any instant, which is essential for correctly demodulating phase-based modes like SSB, PSK, and QAM.
I/Q data is conventionally expressed as complex numbers: a sample is written as I + jQ, and all subsequent digital signal processing (DSP) operations work on these complex values.
Sample Rate and Bandwidth
The sample rate of the ADC determines how much radio spectrum is visible at once. By the Nyquist theorem, a sample rate of F samples per second captures a bandwidth of F Hz of spectrum (centred on the tuned frequency). A 2.4 MS/s device therefore sees a 2.4 MHz wide slice of spectrum; a 56 MS/s device sees 56 MHz at a time.
Digital Filtering and Demodulation
Once the samples reach the host computer, software applies a chain of digital filters to select a narrow channel from within the wider captured bandwidth. A finite impulse response (FIR) filter or fast Fourier transform (FFT)-based channeliser isolates the signal of interest, and then a demodulator block (AM, FM, SSB, etc.) extracts the information content.
Common SDR Hardware
SDR hardware spans a wide range of cost and capability. Here are the most widely used platforms:
| Device | Freq. Range | Sample Rate | Approx. Cost | Notes |
|---|---|---|---|---|
| RTL-SDR (RTL2832U) | 500 kHz – 1.75 GHz | Up to 2.4 MS/s | £20–£30 | Best entry point. Huge community. RX only. |
| HackRF One | 1 MHz – 6 GHz | Up to 20 MS/s | £250–£320 | Half-duplex TX/RX. Wide range. Open hardware. |
| LimeSDR Mini 2 | 10 MHz – 3.5 GHz | Up to 30.72 MS/s | £180–£250 | Full duplex. USB 3.0. Good for LTE/5G research. |
| ADALM-PLUTO (PlutoSDR) | 325 MHz – 3.8 GHz | Up to 61.44 MS/s | £150–£200 | Full duplex. AD9363 chip. Popular for amateur satellite. |
| USRP B200 | 70 MHz – 6 GHz | Up to 61.44 MS/s | £750+ | Professional grade. Full duplex. Ettus/NI ecosystem. |
| Airspy HF+ Discovery | 0.5 kHz – 31 MHz / 60–260 MHz | Up to 912 kS/s | £180–£220 | Specialist HF/VHF receiver. Outstanding sensitivity. |
Accessories
- Antennas: A dipole or vertical antenna is a good start. Antenna choice is often more impactful than hardware upgrades.
- LNA (Low Noise Amplifier): Boosts weak signals before they reach the SDR, particularly useful above 1 GHz.
- Bandpass filters: Reject out-of-band signals (e.g. an FM broadcast filter when working on weak signals near 100 MHz).
- Bias tee: Supplies power over the coax cable to remotely power LNAs and active antennas.
Software Ecosystem
The gold standard open-source SDR framework. Flow-graph based signal processing with Python scripting. Runs on Linux, macOS, and Windows.
Popular Windows GUI for RTL-SDR and Airspy hardware. Excellent plugin ecosystem. Great for beginners.
Cross-platform GUI supporting many hardware devices. Includes built-in demodulators and digital mode decoders.
Cross-platform, open-source receiver GUI. Clean waterfall display. Good multi-platform support.
Linux and macOS receiver built on GNU Radio. Audio piped to system output or streamed via UDP.
Offline signal analysis tool. Load I/Q recordings and measure symbol timing, baud rate, and modulation.
Dedicated ADS-B decoder for tracking aircraft. Feeds data to map-based visualisers.
Decodes hundreds of 433 MHz ISM band sensors: weather stations, tyre pressure monitors, doorbells, and more.
Key Libraries
librtlsdr— Low-level driver for RTL2832U-based dongles.SoapySDR— Hardware abstraction layer; most software speaks SoapySDR rather than device-specific APIs.liquid-dsp— C library of DSP primitives (filters, modulators, synchronisers).PySDR— Python library and accompanying textbook for learning SDR with NumPy.
What Can You Do With It?
SDR is used across an enormous range of applications, from hobbyist curiosity to critical infrastructure monitoring:
Aviation and Transport
ADS-B receivers using an RTL-SDR can decode position, altitude, speed, and identity broadcasts from aircraft in real time. The same principle applies to ship traffic via AIS on VHF marine frequencies, and rail via ACARS and POCSAG pager networks.
Weather and Space
NOAA weather satellites (137–138 MHz) transmit APT imagery that can be decoded into cloud cover images in real time. Higher-gain setups can receive HRPT or LRPT imagery at higher resolution. Amateur (ham) satellites also use SDR-accessible frequencies.
Amateur Radio
Licensed amateur radio operators use SDR for monitoring HF bands, operating digital modes (FT8, JS8Call, WSPR), building software-defined transceivers, and experimenting with weak-signal communication. Websdr.org hosts publicly accessible SDR receivers worldwide.
IoT and RF Security Research
Security researchers use SDR to analyse proprietary wireless protocols, test the security of 433 MHz and 868 MHz IoT devices, intercept and replay signals from car key fobs (for research purposes), and examine the RF behaviour of consumer electronics.
Cellular and Wireless Standards
With appropriate hardware (HackRF, LimeSDR, USRP), SDR can be used to build GSM/LTE base stations (in licensed test environments), experiment with 5G NR waveforms, or study Wi-Fi and Bluetooth baseband signals.
Radio Astronomy and Signal Monitoring
Wideband SDRs can detect the 1420 MHz hydrogen line emitted by interstellar gas — a staple of amateur radio astronomy. They are also used for spectrum monitoring, interference hunting, and characterising propagation conditions.
Your First Setup
The easiest and cheapest way to begin is with an RTL-SDR Blog v4 dongle (around £25) and a simple dipole antenna.
Step 1 — Install Drivers
On Linux, librtlsdr is available in most package managers (apt install rtl-sdr). On Windows, use Zadig to replace the default WinUSB driver with the WinUSB/libusbK driver that librtlsdr requires.
Step 2 — Install a GUI
SDR# (Windows) or GQRX (Linux/macOS) are recommended starting points. Both display a waterfall — a scrolling frequency vs. time vs. amplitude display that makes it easy to spot signals visually.
Step 3 — Explore the Spectrum
Tune to 88–108 MHz for FM broadcast radio — the strongest, cleanest signals you can receive and a good calibration check. Then try 118–137 MHz for aircraft voice communications (AM), or 162 MHz for NOAA weather radio.
Step 4 — Decode Something
Install dump1090 and point an antenna upward: within minutes you should see aircraft on a map. Install rtl_433 and you will likely see nearby weather station or sensor traffic on 433.92 MHz almost immediately.
Legal Considerations
Receiving radio signals is generally legal in the UK and most countries, provided you do not disclose or act upon the content of private communications (Wireless Telegraphy Act 2006 in the UK; similar laws elsewhere). Listening to aviation, marine, and weather broadcasts is entirely legal.
Transmitting is a different matter. In the UK, you require an Ofcom licence to transmit on most frequencies. The amateur radio licence (Foundation, Intermediate, Full) grants access to specific bands. Transmitting without a licence, or outside permitted parameters, is a criminal offence.
Decoding private communications — such as encrypted or private voice calls — may be illegal even if technical interception is possible. Always check the regulations relevant to your jurisdiction and intended use.
Further Learning
Books and Texts
- PySDR: A Guide to SDR and DSP using Python — Dr. Marc Lichtman (free at pysdr.org)
- Software Defined Radio for Engineers — Travis F. Collins et al. (Analog Devices, free PDF)
- The ARRL Handbook for Radio Communications — Broad reference for all radio topics
Online Communities
- rtl-sdr.com — News, tutorials, and hardware reviews for the RTL-SDR community
- r/RTLSDR — Active Reddit community for questions and project sharing
- SignalsEverywhere (YouTube) — Practical SDR video tutorials by Corrosive
- GNU Radio Discourse — Technical forum for GNU Radio users and developers
- WebSDR.org — Access public SDR receivers worldwide in your browser
Key Standards and References
- ITU Radio Regulations — Governs international spectrum allocation
- Ofcom Spectrum Information (UK) — ofcom.org.uk
- ETSI standards for European radio equipment
- GNU Radio documentation — wiki.gnuradio.org