◈ Receive · Decode · Explore ◈

SDR LABThe Complete Guide to Software Defined Radio Experimentation

From a $30 USB dongle to decoding satellites, tracking aircraft, and detecting hydrogen in the Milky Way — everything you need to explore the invisible electromagnetic world.

500 kHzto 6 GHz range
$30entry cost
14+projects
100%open source
Scroll to begin

What is Software Defined Radio?

Traditional radios use fixed hardware circuits — crystal filters, analog mixers, dedicated demodulators — that lock you into specific frequencies and modulation types. Change the band or protocol, and you need different hardware.

Software Defined Radio flips this by moving nearly all signal processing into software running on a general-purpose computer. An antenna feeds an RF frontend that selects a slice of spectrum. An analog-to-digital converter (ADC) digitizes the signal into IQ samples — complex number pairs encoding amplitude and phase. From there, everything happens in code: filtering, demodulation, decoding, display.

This means a single $30 USB dongle can receive FM radio, decode aircraft transponders, pull satellite images from orbit, monitor amateur radio, and sniff ISM-band IoT devices — all by changing software.

▸ The Signal Chain

Antenna → RF Frontend (tuner + LNA) → ADC (digitize to IQ) → USB → Computer → Software (filter → demodulate → decode → display)

Choose Your Device

The SDR hardware market spans three tiers: receive-only dongles ($22–$200), half-duplex transceivers ($300–$400), and full-duplex platforms ($150–$400). Filter by what you need:

RTL-SDR Blog V4
$30
RX Only ★ Recommended Start
Freq Range
500 kHz – 1.77 GHz
Bandwidth
2.4 MHz
ADC
8-bit (RTL2832U)
Tuner
R828D
Interface
USB 2.0 (SMA)
Key Feature
Built-in HF upconverter
Airspy Mini
$99
RX Only
Freq Range
24 – 1700 MHz
Bandwidth
6 MHz
ADC
12-bit
Effective Bits
10.4 ENOB
Interface
USB 2.0 (SMA)
Key Feature
70 dB dynamic range
Airspy R2
$169
RX Only
Freq Range
24 – 1700 MHz
Bandwidth
10 MHz
ADC
12-bit
Oversampling
Up to 16-bit eff.
Interface
USB 2.0 (SMA)
Key Feature
Ext clock for arrays
ADALM-PLUTO
$229
Full Duplex TX/RX
Freq Range
325 MHz – 3.8 GHz*
Bandwidth
20 MHz
ADC
12-bit (AD9363)
FPGA
Xilinx Zynq
Interface
USB 2.0 OTG
Key Feature
*Hackable to 70 MHz–6 GHz
HackRF One
$350
Half Duplex TX/RX
Freq Range
1 MHz – 6 GHz
Bandwidth
20 MHz
ADC
8-bit
Duplex
Half (not simultaneous)
Interface
USB 2.0 (SMA)
Key Feature
Widest freq range
LimeSDR Mini 2.0
$399
Full Duplex TX/RX
Freq Range
10 MHz – 3.5 GHz
Bandwidth
40 MHz
ADC
12-bit
FPGA
Lattice ECP5
Interface
USB 3.0
Key Feature
srsRAN LTE compatible
KrakenSDR
$499
5-Channel Coherent RX
Freq Range
24 – 1766 MHz
Bandwidth
2.56 MHz × 5
ADC
8-bit × 5 synced
Channels
5 coherent
Interface
USB-C
Key Feature
Direction finding (MUSIC)
⚠ Beware HackRF Clones

Chinese clones flooding AliExpress ($50–$100) use inferior components with no support. Buy genuine from Great Scott Gadgets, Hak5, SparkFun, or Nooelec.

Antenna Selection

The antenna matters as much as the SDR. A discone (25 MHz – 1.3 GHz, omnidirectional) is the best general-purpose choice. For weather satellites, a V-dipole (two 53 cm elements at 120°) or QFH helical works well. For maximum gain on a specific band, nothing beats a Yagi. For HF, a long wire with a 9:1 balun is the practical solution.

Key rule: Always mount the antenna outdoors, place an LNA at the antenna feedpoint (not at the computer), and use low-loss coax (LMR-400 for runs over 3m).

Software That Turns Your PC Into a Radio

The current top recommendation for newcomers and experienced users alike. SDR++ uses an ImGui-based interface with buttery-smooth waterfall rendering. Supports RTL-SDR, Airspy, HackRF, PlutoSDR, LimeSDR, and anything via SoapySDR. Built-in AM/FM/SSB/CW decoders. The Community Edition fork (SDR++CE) adds ADS-B, AIS, APRS, POCSAG, frequency scanning, and MPX analysis.

Platforms: Windows, Linux, macOS, Android  |  License: GPLv3

The most popular Windows-only SDR application with the deepest plugin ecosystem — frequency scanner, RDS decoder, digital noise reduction, MPX output, trunking support. Native SPY Server support streams SDR data over the network. Version 1.0.0.1732+ is current. A 214-page community guide documents every feature and plugin.

Platforms: Windows only  |  License: Freeware

Lightweight, open-source, built on GNU Radio's DSP engine with a clean Qt interface. Version 2.17.7 (May 2025) added experimental Windows support. Excellent Hamlib-compatible remote control for automated scanning. Best choice for Linux desktops and Raspberry Pi.

Platforms: Linux, macOS, Windows (experimental)  |  License: GPLv3

Not a receiver app — it's a full signal processing development environment. The visual flowgraph editor (GNU Radio Companion) wires together 400+ processing blocks to build custom radio systems. Version 3.10.12.0 (Feb 2025) is current. GNU Radio 4.0, a complete C++23 rewrite, is in development but not production-ready. Install via radioconda for the smoothest cross-platform experience.

Platforms: Linux, macOS, Windows  |  License: GPLv3

The unified tool for all weather satellite work — replaces the old multi-tool chain of SDR# → VBCable → WXtoImg → LRPT decoders. Handles SDR control, Doppler correction, demodulation, decoding, image compositing, and map overlays for 90+ satellites in a single application. Essential for Meteor M2 LRPT and GOES HRIT.

Platforms: Windows, Linux, macOS, Android  |  License: GPLv3

Universal Radio Hacker (URH) — IoT protocol reverse engineering: record → analyze → replay with automatic modulation detection and protocol fuzzing.

SigDigger — Deep signal analysis with independent DSP stack (not GNU Radio). Inspector-based analysis for serious signal characterization.

rtl_433 — Decodes 260+ ISM-band device protocols (weather stations, TPMS, doorbells, utility meters). Native MQTT output for Home Assistant integration.

First-Time Setup

Buy an RTL-SDR Blog V4 with dipole antenna kit (~$40). Then follow the setup for your OS:

Linux Setup

# Install drivers and blacklist DVB-T kernel module
sudo apt install rtl-sdr
echo 'blacklist dvb_usb_rtl28xxu' | sudo tee /etc/modprobe.d/blacklist-rtlsdr.conf
sudo modprobe -r dvb_usb_rtl28xxu

# For V4: build RTL-SDR Blog fork from source
git clone https://github.com/rtlsdrblog/rtl-sdr-blog
cd rtl-sdr-blog && mkdir build && cd build
cmake .. -DINSTALL_UDEV_RULES=ON
make && sudo make install && sudo ldconfig

# Verify hardware detected
rtl_test -t

# First reception — FM broadcast
rtl_fm -M wbfm -f 101.1M -s 200000 -r 48000 - | \
  aplay -r 48000 -f S16_LE -t raw -c 1

Windows Setup

1. Download Zadig (zadig.akeo.ie). 2. Plug in RTL-SDR, select "Bulk-In, Interface 0", verify USB ID 0BDA 2838. 3. Click "Replace Driver" to install WinUSB. 4. Download SDR++ or SDR# with RTL-SDR Blog drivers. 5. Launch, select RTL-SDR source, tune to a local FM station at 88–108 MHz in WFM mode.

▸ First Things to Try

FM broadcast (88–108 MHz, WFM mode) → Aircraft voice (118–137 MHz, AM) → NOAA Weather Radio (162.4–162.55 MHz, NFM) → 433 MHz ISM band bursts (watch the waterfall for short blips from wireless sensors)

Interactive Frequency Band Explorer

Click any band to see what lives there. The entire range below is receivable with an RTL-SDR V4.

Click a band above to explore
500 kHz – 1766 MHz

The electromagnetic spectrum is divided into bands, each carrying different services. SDR lets you explore all of them with a single device.

Projects: From Beginner to Astrophysicist

✈️ Easy

ADS-B Aircraft Tracking

▸ 1090 MHz

Track every aircraft overhead in real-time. Build a quarter-wave ground plane antenna, run readsb + tar1090, and feed FlightAware/Flightradar24 for a free premium subscription. Expect 100–250+ NM range.

Tools: readsb, tar1090, Docker, RPi
🛰️ Medium

Weather Satellite Imagery

▸ 137.9 MHz (Meteor LRPT)

NOAA POES satellites were decommissioned in 2025. Meteor M2-3/M2-4 now provide 1 km/pixel color LRPT imagery. Use SatDump for automated decode. V-dipole or QFH antenna recommended.

Tools: SatDump, SAWbird+ LNA, QFH antenna
📻 Easy

FM/AM Broadcast Reception

▸ 88–108 MHz (FM) / 530–1700 kHz (AM)

The "hello world" of SDR. V4's built-in upconverter enables clean AM broadcast. Narrowband FM for ham repeaters on 2m (144 MHz) and 70cm (420 MHz) bands.

Tools: SDR++, SDR#, GQRX
🚢 Easy

AIS Ship Tracking

▸ 161.975 / 162.025 MHz

Monitor both AIS channels simultaneously. AIS-catcher provides a built-in web map and feeds MarineTraffic. A VHF whip antenna at rooftop height yields 20–40 NM range.

Tools: AIS-catcher, OpenCPN
📟 Easy

POCSAG Pager Decoding

▸ 150–170 MHz / ~450 MHz

Pagers broadcast at high power — even the stock antenna works. See hospital dispatches, IT alerts, and emergency messages. Pipe rtl_fm to multimon-ng.

Tools: rtl_fm, multimon-ng, PDW
🏠 Easy

ISM Band IoT Decoding

▸ 433.92 / 315 / 868 / 915 MHz

rtl_433 decodes 260+ device protocols — weather stations, tire pressure sensors, doorbells, utility meters. Native MQTT output for Home Assistant.

Tools: rtl_433, Home Assistant, MQTT
👮 Medium

Trunked Radio Monitoring

▸ Various (P25, DMR, NXDN)

Monitor public safety communications on P25 Phase 1/2, DMR, and NXDN. Look up control channels on RadioReference.com. Many agencies now encrypting.

Tools: SDRTrunk, trunk-recorder, OP25
🔭 Medium

Hydrogen Line Radio Astronomy

▸ 1420.405 MHz

Detect neutral hydrogen in the Milky Way. Use a parabolic dish + SAWbird+ H1 LNA. Measure Doppler shifts to map galactic spiral arm rotation — real astrophysics for under $200.

Tools: Virgo, rtl_power, SAWbird+ H1
📡 Medium

FT8 / WSPR Weak Signal

▸ 14.074 MHz (20m FT8)

Decode amateur stations 20+ dB below the noise floor worldwide. RTL-SDR V4 → VB-Cable → WSJT-X decodes hundreds of stations/hour. No TX license needed for receive.

Tools: WSJT-X, SDR#, VB-Cable
🛰️ Easy

ISS SSTV Reception

▸ 145.800 MHz FM

During ARISS events (4–6x/year), the ISS transmits color images via Slow Scan TV. Use any FM receiver + Robot36 app on Android. Images build line-by-line over 2 minutes.

Tools: RTL-SDR, Robot36 app
🌐 Advanced

GPS Reception with GNSS-SDR

▸ 1575.42 MHz (L1 C/A)

Software-defined GPS receiver: acquire satellites, track L1 C/A code, compute position fix. Computationally intensive — run volk_profile for SIMD optimization. PlutoSDR preferred over RTL-SDR.

Tools: GNSS-SDR, active GPS antenna
📻 Advanced

Passive Radar

▸ DVB-T broadcast frequencies

Detect aircraft using existing TV broadcast signals. Requires coherent dual-channel SDR (KrakenSDR). Cross-correlate reference and surveillance channels for bistatic range-Doppler plots. Aircraft detection at 8+ km demonstrated.

Tools: KrakenSDR, GNU Radio, 2 antennas

DSP: The Math That Makes It Work

IQ Sampling — Interactive Demo

SDRs output complex IQ samples — pairs of numbers (I + jQ) that encode both amplitude and phase. Drag the sliders to see how frequency and amplitude map to the IQ plane and time-domain waveform.

Key DSP Concepts

The Fast Fourier Transform converts time-domain IQ samples into a frequency spectrum. Resolution = Sample Rate / FFT Size. A 2.4 MSPS stream with 4096-point FFT gives 585 Hz per bin. Window functions (Hann, Blackman-Harris) control spectral leakage — the Blackman-Harris window provides -92 dB sidelobe suppression for weak signal work near strong emitters.

Decimation by factor M keeps every M-th sample after lowpass filtering, reducing data rate and CPU load. Each doubling of decimation provides ~3 dB SNR improvement because noise power is proportional to bandwidth. An RTL-SDR capturing 2.4 MHz can be decimated by 48× to isolate a 50 kHz FM channel.

AM: Compute magnitude √(I² + Q²). FM: Compute angle between consecutive IQ samples — angle(x[n]·conj(x[n-1])). SSB: Frequency-shift and bandpass filter. Digital (PSK/QAM): Carrier recovery (Costas loop) → timing recovery → symbol decision. All happen purely in software on the same IQ stream.

Thermal noise floor: -174 dBm/Hz at room temp. Total noise = -174 + 10·log₁₀(BW) + NF. An RTL-SDR at 2.4 MHz with 5 dB noise figure: -174 + 63.8 + 5 ≈ -105 dBm. Dynamic range ≈ 6.02 dB/bit: 8-bit → ~50 dB, 12-bit → ~74 dB. This is why Airspy handles urban environments far better than RTL-SDR.