BUILD YOUR OWN ADS-B RECEIVER

Track aircraft in real-time from your own home for under $40. This step-by-step guide shows you how to build an ADS-B receiver using an RTL-SDR dongle, a 1090 MHz antenna, and a Raspberry Pi. Feed your data to AeroScope and other tracking networks.

WHAT YOU WILL NEED

~$40
Total cost for all components
2 hrs
Setup time from unboxing to tracking
200+ NM
Typical range with good antenna placement
24/7
Continuous unattended operation
Component Cost (approx) Notes
RTL-SDR Blog V4 USB Dongle$12-15R820T2 tuner chipset, 1090 MHz capable. The RTL-SDR Blog V4 is recommended for best sensitivity.
1090 MHz ADS-B Antenna$8-12A tuned 1090 MHz antenna dramatically improves range. DIY options include a collinear coaxial antenna or a spider/ground-plane antenna made from wire.
Raspberry Pi 3B+ or Pi 4$15-35Any Pi with USB and Ethernet/Wi-Fi works. Pi Zero 2 W also works for a minimal setup. A Pi 4 with 2GB RAM is ideal.
microSD Card (16GB+)$5-8Class 10 or faster. 32GB recommended if you want to store local logs.
USB Power Supply$5-105V/2.5A minimum for Pi 3B+, 5V/3A USB-C for Pi 4.
SMA Cable / Adapter$3-5To connect the antenna to the RTL-SDR dongle if connectors do not match.

STEP-BY-STEP SETUP

01

Flash Raspberry Pi OS

Download the official Raspberry Pi Imager from raspberrypi.com. Flash "Raspberry Pi OS Lite (64-bit)" to your microSD card. In the imager settings, enable SSH, set a username/password, and configure your Wi-Fi network. Insert the card into the Pi and power it on.

02

Connect and Update

SSH into your Raspberry Pi (ssh [email protected] or use the IP address). Run system updates:

sudo apt update && sudo apt upgrade -y

Plug the RTL-SDR dongle into a USB port on the Pi. Connect the 1090 MHz antenna to the dongle's SMA connector.

03

Install readsb (Recommended Decoder)

readsb is a high-performance ADS-B decoder that replaced dump1090. Install it with:

sudo bash -c "$(wget -qO- https://github.com/wiedehopf/adsb-scripts/raw/master/readsb-install.sh)"

This script installs readsb, configures it as a systemd service, and starts decoding ADS-B messages automatically. It also sets up a local web interface on port 8080 where you can see aircraft on a map.

04

Verify Reception

Open a browser and navigate to http://your-pi-ip:8080. You should see aircraft appearing on the map within minutes. Check the statistics page to verify message rates. A good setup receives 200-1000+ messages per second depending on your location and antenna placement.

05

Optimize Antenna Placement

ADS-B is line-of-sight at 1090 MHz. For maximum range: mount the antenna as high as possible (roof, attic, or high window), keep the antenna vertical, use quality coax cable (LMR-240 or better for long runs), and avoid obstructions. Every doubling of antenna height adds roughly 40% more range.

06

Feed Data to Networks

Share your ADS-B data with tracking networks. Most networks provide free enhanced features in exchange for feeding:

  • AeroScope: Configure your local receiver in AeroScope settings to feed data directly. AeroScope merges local SDR data with network feeds for maximum coverage.
  • adsb.fi: Community-operated, open-data network. Install their feeder: curl -L -o /tmp/axfeed.sh https://adsb.fi/feed.sh && sudo bash /tmp/axfeed.sh
  • FlightAware (PiAware): Install PiAware for a free FlightAware Enterprise account. sudo bash -c "$(wget -qO- https://www.flightaware.com/adsb/piaware/install)"
  • Flightradar24: Install fr24feed for a free Flightradar24 Business subscription.
  • ADSBexchange: Open, unfiltered feed — no military or government filtering.

ALTERNATIVE DECODERS

DUMP1090-MUTABILITY

The original widely-used ADS-B decoder forked from Salvatore Sanfilippo's dump1090. Provides a web interface, Beast-format output, and is the foundation many other tools build on. Still widely used but readsb is preferred for new installations.

DUMP1090-FA

FlightAware's fork of dump1090, optimized for their PiAware platform. Includes enhanced decoding, adaptive gain control, and tight integration with the FlightAware network. Installed automatically with PiAware.

TAR1090

A modern web interface for readsb/dump1090 that provides a far superior map experience with aircraft trails, range rings, statistics, and a responsive design. Highly recommended as a frontend upgrade: sudo bash -c "$(wget -qO- https://github.com/wiedehopf/tar1090/raw/master/install.sh)"

CONNECTING TO AEROSCOPE

AeroScope supports direct integration with local SDR receivers. Once your receiver is running readsb or dump1090, AeroScope's backend can connect to it and merge your local data with network feeds. This provides several advantages:

Configure the connection in your AeroScope .env file by setting LOCAL_RECEIVER_HOST and LOCAL_RECEIVER_PORT to point to your readsb instance's Beast output (default port 30005).

FREQUENTLY ASKED QUESTIONS

Is it legal to receive ADS-B?

Yes. In most countries, receiving radio signals (including ADS-B on 1090 MHz) is perfectly legal. You are passively listening to signals that aircraft broadcast publicly. You do not need a license to receive — only to transmit. Always check your local regulations to be sure.

What range can I expect?

With a good outdoor antenna at 10+ meters height, typical range is 150-250 nautical miles (280-460 km). Indoor antennas or ground-level placement may only achieve 30-80 NM. The theoretical maximum at sea level is about 250 NM due to the curvature of the Earth (radio horizon). Higher antenna = more range.

Can I use something other than a Raspberry Pi?

Yes. Any Linux computer with a USB port works: Orange Pi, Banana Pi, Intel NUC, old laptop, or a full desktop. Docker containers are also available for running readsb on any platform. Some users even run receivers on Windows with dump1090 or Virtual Radar Server.

How much bandwidth and power does it use?

A Raspberry Pi receiver uses about 5-10 watts of power (less than a nightlight) and generates approximately 1-5 GB of network traffic per month when feeding data to tracking networks. The Pi itself can run 24/7 indefinitely with proper cooling.