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
A software defined radio [SDR] device such as a RTL-SDR RTL2832U USB dongle and an antenna are all that is necessary to receive aircraft ADSB Mode-S transmissions.
Note: The SDR does NOT need to run on the all sky camera device. It can run on a different device and the JSON data will be available via a web server.
Software
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
Debian 13 Trixie
:warning: dump1090-mutability has been removed from the Debian trixie repositories. dump1090-fa will have to be used instead.
- https://github.com/edgeofspace/dump1090-fa
- https://github.com/abcd567a/piaware-ubuntu-debian-amd64 (alternative install method)
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
Device permissions
sudo usermod -a -G plugdev dump1090
Web server
If you operate the SDR on the same system as your allsky camera, you will need to disable lighttpd since Apache is already installed.
sudo systemctl disable lighttpd
dump1090-mutability installs lighttpd for the web server component, but Apache is already use for indi-allsky. The Apache config for indi-allsky has some commented configuration to enable serving the aircraft.json file. /etc/apache2/sites-enabled/indi-allsky.conf
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. Three digits of precision is recommended.
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
There is a test script will will execute the same code that indi-allsky utilizes so you do not have to start the program to validate the behavior.
source virtualenv/indi-allsky/bin/activate
./misc/adsb_test.py
aircraft.json URL variations
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 |