← All articles
an old radio sitting on the ground in the woods

Software Defined Radio for Your Homelab: RTL-SDR and SDR++

Networking 2026-03-04 · 5 min read sdr rtl-sdr radio adsb weather homelab raspberry-pi
By HomeLab Starter Editorial TeamHome lab enthusiasts covering hardware setup, networking, and self-hosted services for home and small office environments.

Software Defined Radio (SDR) is one of the most interesting rabbit holes in the homelab world. With a $25–30 USB dongle and free software, you can receive signals across a huge frequency range: FM radio, aircraft transponders, weather satellite images, ship GPS beacons, local weather stations, and more.

Photo by Dasha Urvachova on Unsplash

The barrier to entry is low. The RTL-SDR Blog V4 dongle — the current standard for getting started — costs around $30 shipped. The software (SDR++, GNU Radio, Dump1090) is free and runs on Linux, macOS, and Windows.

What You Can Do with SDR

ADS-B aircraft tracking: Aircraft broadcast their position, altitude, speed, and callsign on 1090 MHz. Capture this with dump1090 and feed it to FlightAware or run your own map at http://localhost:8080. On a clear day from a good location, you'll see 50–200 aircraft at once.

FM radio: Receive commercial FM broadcasts with much better quality than a cheap radio, plus the ability to record and analyze the RF signal.

NOAA weather satellites: The NOAA-15, 18, and 19 satellites transmit Automatic Picture Transmission (APT) signals at 137 MHz. With the right antenna and software, you can decode weather images as the satellite passes overhead — actual images from space, received on your own hardware.

APRS: Amateur radio position reporting. Track balloon flights, emergency vehicles, and amateur radio operators in your area.

Trunked radio scanners: Listen to local emergency services communications (where legal in your jurisdiction).

Weather stations: Many home weather stations broadcast their data on ISM band frequencies. Capture them with rtl_433 — a tool that decodes 433/868/915 MHz sensors.

Ship AIS tracking: Maritime vessels broadcast AIS position data on 162 MHz. Similar to ADS-B but for ships.

Hardware

The Dongle

The RTL-SDR Blog V4 is the current recommended starting point. It's based on the RTL2832U chip with a Rafael Micro R828D tuner, but with improvements over cheap alternatives: better shielding, temperature-compensated oscillator, and bias-tee support for powering active antennas.

Alternative: The Airspy Mini ($99) has better dynamic range and sensitivity for more demanding applications.

Antennas

The antenna matters more than the dongle. The RTL-SDR Blog V4 comes with a basic dipole kit — it works but is mediocre for serious use.

Use case Antenna Notes
General scanning Dipole (included) Adjust length for target frequency
FM radio 1/4 wave whip ~75cm for 100 MHz
ADS-B (1090 MHz) 1090 MHz cantenna or Spider ~6.9cm elements
Weather sat (137 MHz) Turnstile or QFH Circularly polarized for moving satellites
433 MHz sensors 1/4 wave whip ~17.3cm

For ADS-B, a FlightAware Pro Stick Plus ($20) has a built-in bandpass filter that dramatically improves aircraft reception near airports. The built-in filter reduces interference from FM broadcast stations.

Raspberry Pi Integration

An RTL-SDR dongle works well on a Raspberry Pi. Power draw is modest (~500mA with the dongle), and you can run ADS-B feeders 24/7 for a few dollars a year in electricity.

Software: SDR++

SDR++ is the modern GUI application for SDR. It replaced the older SDRSharp (Windows-only) and GQRX as the cross-platform standard:

# Install on Ubuntu/Debian
sudo apt install sdr++

# Or from source
git clone https://github.com/AlexandreRouma/SDRPlusPlus
cd SDRPlusPlus && mkdir build && cd build
cmake ..
make -j4

Start SDR++, select "RTL-SDR Source" from the device selector, and set the sample rate to 2.4 MSPS. The waterfall display shows the RF spectrum — scroll to 100 MHz and you'll see your local FM stations as bright columns.

Like what you're reading? Subscribe to HomeLab Starter — free weekly guides in your inbox.

ADS-B Aircraft Tracking: Step-by-Step

ADS-B is the most immediately impressive SDR application. Here's how to set it up on a Raspberry Pi:

# Install dump1090-fa (FlightAware's optimized version)
sudo apt install dump1090-fa

# It starts automatically and listens on port 8080
# Browse to http://raspberry-pi-ip:8080 for a live aircraft map

For the best results:

  1. Mount the antenna as high as possible (outside or at a window)
  2. Use a 1090 MHz filtered antenna or add a FlightAware filter inline
  3. Run dump1090 as a systemd service for 24/7 operation

Feed to FlightAware: Create a FlightAware account, install piaware, and you'll receive a free FlightAware Enterprise subscription ($100/year value) for contributing data:

wget https://flightaware.com/uat/piaware/files/piaware_4.0_armhf.deb
dpkg -i piaware_4.0_armhf.deb
piaware-config feeder-id your-feeder-id
systemctl start piaware

NOAA Weather Satellite Images

Receiving actual weather satellite images is one of the more impressive SDR projects. The satellites pass overhead every ~100 minutes, broadcasting live Earth images at 137 MHz.

# Install WXtoImg (trial version) or the open-source noaa-apt
# noaa-apt is recommended: https://noaa-apt.mbernardi.com.ar/

# Record a satellite pass
rtl_fm -f 137.9125M -s 60k -g 45 -F 9 - | \
  sox -t raw -r 60k -e signed -b 16 - noaa15.wav trim 0 900

# Then decode the .wav to an image with noaa-apt
noaa-apt noaa15.wav -o weather-image.png

You'll need to know when the satellites pass over your location. Use tools like gpredict or online pass predictors (heavens-above.com). Good passes (elevation >30°) give you clear images; low passes produce partial images.

RTL_433: Home Weather Stations and IoT Sensors

rtl_433 decodes hundreds of ISM-band devices: thermometers, rain gauges, soil sensors, tire pressure sensors, doorbell receivers, and more. If you have an Oregon Scientific weather station or similar, run:

sudo apt install rtl-433
rtl_433 -f 433.92M -A

It'll decode anything it sees and print JSON output. Pipe this into Influx/Grafana for local weather dashboards, or into Home Assistant for automations triggered by outdoor temperature.

Docker Deployment for Always-On ADS-B

For a persistent setup, Docker makes it easy to run multiple SDR services:

# docker-compose.yml for ADS-B + graph tracking
services:
  dump1090:
    image: mikenye/readsb-protobuf:latest
    devices:
      - /dev/bus/usb:/dev/bus/usb
    ports:
      - "8080:8080"
      - "30005:30005"
    environment:
      READSB_NET_ENABLE: "true"
      READSB_GAIN: "autogain"
    restart: unless-stopped

  piaware:
    image: mikenye/piaware:latest
    depends_on:
      - dump1090
    environment:
      FEEDER_AERIAL_LATITUDE: "47.6"
      FEEDER_AERIAL_LONGITUDE: "-122.3"
      FLIGHTAWARE_FEEDER_ID: "your-id"
    restart: unless-stopped

Getting Started: The $30 Setup

  1. Order: RTL-SDR Blog V4 dongle with the included dipole antenna kit ($30)
  2. Install SDR++ on your laptop or desktop
  3. Start with FM radio to confirm everything works
  4. Move to ADS-B: Swap to the included monopole antenna, tune to 1090 MHz, install dump1090
  5. Explore from there: Try rtl_433 for local sensors, then chase a NOAA pass

The learning curve is moderate — SDR concepts (sample rates, IQ data, frequency vs bandwidth) take some reading. The reward is seeing your local airspace in real-time from a $30 dongle.

Resources

Get free weekly tips in your inbox. Subscribe to HomeLab Starter