Build Your Own ADS-B Receiver
Required Equipment
-
Raspberry Pi (e.g. Model 3b+ or newer), or a computer running a Debian-based Linux distro like Debian, Ubuntu, Raspberry Pi OS, or others.
-
SDR (Software Defined Radio) such as RTL-SDR or other RTL2838-based devices.
-
ADS-B antenna(1090 MHz)
-
Coaxial cable - RG-58 is commonly used, but you can also choose low-loss cables like LMR-240 or LMR-400, which offer better signal quality for longer cable runs (>5–10 meters).
Optional Equipment (if needed)
- LNA (Low Noise Amplifier) or 1090 MHz filter – helpful to reduce interference from other frequencies, especially if your SDR does not have a built-in bandpass filter, or if you’re in a noisy signal area.
Software Installation Steps
1. Install a Decoder — in this example, we’ll use readsb as our main decoder
1.1 Use the automatic installation script for readsb
sudo bash -c "$(wget -O - https://github.com/wiedehopf/adsb-scripts/raw/master/readsb-install.sh)"
sudo reboot
-
If this is a fresh decoder installation (and no previous decoder is installed), a reboot may be required.
-
If this method doesn’t work, consider building the package manually (see step 1.2).
1.2 Manually build the readsb package
Install required packages:
sudo apt update
sudo apt install --no-install-recommends --no-install-suggests -y \\
git build-essential debhelper libusb-1.0-0-dev \\
librtlsdr-dev librtlsdr0 pkg-config fakeroot \\
libncurses-dev zlib1g-dev zlib1g libzstd-dev libzstd1
Build and install the package:
cd /tmp
rm /tmp/readsb -rf
git clone --depth 20 https://github.com/wiedehopf/readsb.git
cd readsb
rm -f ../readsb_*.deb
export DEB_BUILD_OPTIONS=noddebs
dpkg-buildpackage -b -Prtlsdr -ui -uc -us
sudo dpkg -i ../readsb_*.deb
2. Configure readsb
sudo nano /etc/default/readsb
Example config:
# readsb configuration
# This is sourced by /etc/systemd/system/default.target.wants/readsb.service as
# daemon startup configuration.
RECEIVER_OPTIONS="--device 0 --device-type rtlsdr --gain XX.X --ppm 0"
DECODER_OPTIONS="--lat XX.XXXXX --lon XXX.XXXXX --write-json-every 1"
NET_OPTIONS="--net --net-heartbeat 60 --net-ro-size 1250 --net-ro-interval 0.05 --net-ri-port 30001 --net-ro-port 30002 --net-sbs-port 30003 --net-bi-port 30004,30104 --net-bo-port 30005"
JSON_OPTIONS="--json-location-accuracy 2"
-
Replace
--lat XX.XXXXX --lon XXX.XXXXX
with your actual location. -
Gain value depends on your hardware and location — avoid too high or too low.
-
you can also use —gain auto if you prefer.
-
you can see more options at wiedehopf/readsb GitHub or readsb —help.
Restart the service after editing:
sudo systemctl restart readsb
3. View aircraft data via tar1090
***Don’t forget to replace 192.168.X.XXX with the actual local IP address of your ADS-B receiver
If you built readsb manually, you may also need to install tar1090 manually:
sudo bash -c "$(wget -nv -O - https://github.com/wiedehopf/tar1090/raw/master/install.sh)"
4. (Optional) View Performance Graphs with graphs1090
Install:
sudo bash -c "$(curl -L -o - https://github.com/wiedehopf/graphs1090/raw/master/install.sh)"
Now you can view the performance graphs at http://192.168.X.XXX/graphs1090/ .
Open: Don’t forget to replace 192.168.X.XXX with the actual local IP address of your ADS-B receiver
5. (Optional) Share ADS-B Data
-
To share ADS-B data with adsb.ezz456ch.com, you can follow instructions here.
-
For other websites, refer to their respective data sharing guides.