ADS‐B Aircraft Tracking - aaronwmorris/indi-allsky GitHub Wiki

Overview

indi-allsky can utilize data generated by a Software Defined Radio and ADS-B broadcasts to gather information about local aircraft in your region.

Hardware & Architecture

A software defined radio [SDR] device such as an RTL-SDR RTL2832U USB dongle and an antenna are all that is necessary to receive aircraft ADS-B Mode-S transmissions.

There are two typical deployment architectures:

  1. Remote Receiver (Separate Pi / PiAware appliance) — Recommended / Most Common: The SDR receiver runs on an independent device on your local network (e.g., an existing PiAware or FlightRadar24 feeder).
  2. Local Receiver (Collocated on Allsky device): The SDR dongle is plugged directly into the indi-allsky computer.

Configuration

Setup 1: Remote Receiver (Separate Pi / PiAware on your network)

If you already run PiAware or dump1090 on another machine:

  • No SDR software needed on the Allsky device: Do NOT install dump1090, dump1090-fa, or rtl-sdr on your indi-allsky machine. The camera daemon simply fetches the JSON feed over HTTP from the remote receiver.
  • URL Scheme (http:// vs https://): The default URL in indi-allsky uses https://localhost/... assuming a local HTTPS web server. A dedicated PiAware receiver serves plain http on your LAN. You must change the scheme to http://: http:///skyaware/data/aircraft.json (Attempting to use https:// against a standard PiAware installation will result in connection refused or SSL handshake errors).
  • Username and Password: Leave the Username and Password fields blank in the indi-allsky ADS-B configuration. These fields are strictly for HTTP Basic Authentication if you have placed a password-protected reverse proxy in front of the JSON feed. They have nothing to do with your flightaware.com account.
  • Verify in Browser: Open http://<piaware-ip>/skyaware/data/aircraft.json in your web browser. You should receive a JSON document containing an aircraft array.

Setup 2: Local Receiver (SDR Dongle on the Allsky device)

If you plug the RTL-SDR USB dongle directly into your indi-allsky host:

1. Software Installation (FlightAware dump1090-fa)

dump1090-fa is not provided in default Debian/Ubuntu repositories. Follow FlightAware's repository setup instructions at https://www.flightaware.com/adsb/piaware/install before installing:

sudo apt-get update
sudo apt-get install dump1090-fa rtl-sdr

2. Device Permissions

Ensure the dump1090 user belongs to the plugdev group for USB hardware access:

sudo usermod -a -G plugdev dump1090

3. Web Server Port Conflict

dump1090-fa installs lighttpd by default for its web interface, which conflicts with the web server (Apache, Caddy, or Nginx) already used by indi-allsky on port 80:

sudo systemctl disable --now lighttpd

If using Apache, the indi-allsky Apache configuration (/etc/apache2/sites-enabled/indi-allsky.conf) contains commented configuration directives to proxy /skyaware to the dump1090 service.


Location Precision

In order to accurately calculate the location of aircraft relative to your position, your latitude and longitude need to be defined with at least 2 digits of precision (e.g. -34.93, 138.60). Three digits of precision is recommended for optimal positional calculation.


Testing ADS-B

Validating indi-allsky Tracking Logic

indi-allsky provides a dedicated CLI diagnostic command that executes the exact tracking calculation logic against your configured ADS-B endpoint without needing to run the full capture daemon:

indi-allsky-ctl test-adsb

(Or from a source git checkout: source virtualenv/indi-allsky/bin/activate && ./misc/adsb_test.py).

Validating Local RTL-SDR Receiver (Collocated Setups Only)

sudo systemctl stop dump1090-fa
rtl_adsb
# Restart dump1090-fa when testing is complete
sudo systemctl start dump1090-fa

To view real-time decoded message streams:

view1090-fa

Common aircraft.json URL Variations

Depending on your receiver software and network configuration:

Receiver Type Common URL Format
PiAware (SkyAware) http://<ip>/skyaware/data/aircraft.json
dump1090-fa (standard) http://<ip>/dump1090-fa/data/aircraft.json
dump1090 / readsb (standalone port 8080) http://<ip>:8080/data/aircraft.json
Local Collocated (with Apache HTTPS proxy) https://localhost/skyaware/data/aircraft.json

Label Variables

Name Type Add Date Info
id str flight, squawk, or hex identifier. This ensures a name is assigned to the aircraft.
flight str flight id (may not be populated)
squawk str Aircraft squawk (may not be populated)
hex str ADS-B hex id
latitude float Geocentric latitude
longitude float Geocentric longitude
elevation float Pressure altitude (km)
elevation_m float Nov 2025 Pressure altitude (m)
elevation_ft float Nov 2025 Pressure altitude (ft)
elevation_mi float Nov 2025 Pressure altitude (mi)
distance float Ground distance (km)
distance_m float Nov 2025 Ground distance (m)
distance_ft float Nov 2025 Ground distance (ft)
distance_mi float Nov 2025 Ground distance (mi)
range float Range to aircraft (km)
range_m float Nov 2025 Range to aircraft (m)
range_ft float Nov 2025 Range to aircraft (ft)
range_mi float Nov 2025 Range to aircraft (mi)
alt float Angular altitude
az float Azimuth
dir str Cardinal direction from observer
altitude float Alias of elevation
altitude_m float Nov 2025 Alias of elevation_m
altitude_ft float Nov 2025 Alias of elevation_ft
altitude_mi float Nov 2025 Alias of elevation_mi

Legacy

V4 RTL-SDR

sudo apt update
sudo apt install libusb-1.0-0-dev git cmake build-essential pkg-config
sudo apt install debhelper

git clone https://github.com/osmocom/rtl-sdr
cd rtl-sdr-blog
sudo dpkg-buildpackage -b --no-sign
cd ..

sudo dpkg -i librtlsdr0_.deb
sudo dpkg -i librtlsdr-dev_.deb
sudo dpkg -i rtl-sdr_*.deb

Debian 13 Trixie

⚠️ dump1090-mutability has been removed from the Debian trixie repositories. dump1090-fa will have to be used instead.

Unfortunately, Debian 13 Trixie (or Debian 12) support has not been integrated yet. It is possible to build against the bullseye target, but the Makefile has to be manually modified to remove the option that causes compile warnings to be treated as errors.

6c6
< DUMP1090_CFLAGS := -std=c11 -fno-common -Wall -Wmissing-declarations -Werror -W
---
> DUMP1090_CFLAGS := -std=c11 -fno-common -Wall -Wmissing-declarations -W

Debian 12 and older

dump1090-mutability is available in the Debian repositories, but dump1090-fa should function just as well.

sudo apt-get install dump1090-mutability rtl-sdr

# Indicate dump1090 should be started automatically at boot

Testing ADS-B

Test your RTL-SDR receiver.

sudo systemctl stop dump1090-mutability

rtl_adsb

# make sure to restart when finished testing
sudo systemctl start dump1090-mutability

This will validate the dump1090 service is operating properly.

view1090-mutability
⚠️ **GitHub.com Fallback** ⚠️