I had this article in my pipeline for ages, but in a time of shifting priorities and, well, life, it took a bit to finally sit down and put words on paper. Well, blog.
I’ve done this research years ago to put together a solution for this until a colleague expressed interest in ADS-B feeding. So I decided to write about it.
Bill of materials
- Raspberry Pi. I have a 3B v1.2 running at 2B v1.2 performance (min 600 MHz / max 900 MHz). Most Raspberry Pis fit into these performance needs. Add an appropriate power supply and case.
- MicroSD card. The disk IO is slow, but requires little attention over time. The actual dumping happens in memory, so there’s little in terms of disk writes (mostly systemd-journald). I am running a Sandisk card for 6+ years now.
- RTL-SDR (RTL2832U). Basically, this is usually sold as DVB-T/DAB tuner, but the chip inside it may be used as general RX-only SDR. It can go from as cheap as a £10 generic tuner to a dedicated piece of kit like the £38 AirNav Flightstick. Same chipset, but Flightstick comes with a built in amplifier and bandpass filter for 1090 MHz.
- ADS-B antenna. The £10 cheapo tuner probably has one, but it will need tuning. I started with a cheapo tuner before upgrading to Airnav kit, so I had to trim it to 68mm to get a quarter wavelength antenna. This also needs a ground plane and I discovered that the metal body of my TV at the time acted as one giving me a measurable boost in sensitivity. AirNav’s XBOOST antenna is £46 and it works out of the box with far better reception. There are various options here, too long to list.
- Optional: AirNav 1090 MHz bandpass filter. This is a dedicated piece of kit which is about £38. I have it. Saw some improvement. Works in conjunction with Flightstick or compatible SMA RTL-SDR receiver. Not sure it is useful unless this is deployed into an RF-noisy environment. I do have a nearby mobile telephony mast, so there’s that.
Shop: https://radarbox24.myshopify.com/collections/adsb-receivers
Setup
I am still running Debian 12 (Bookworm), albeit 13 (Trixie) is old enough that I could probably do an upgrade in the near future. Do note that some of the third party repositories in use do not immediately support latest Debian soon after release which makes supporting this setup a pain. I had this back in the day when I upgraded to Debian 11 (Bullseye) and I had to manually pull dependencies and packages for one of these feeders.
Flightradar24
I use Pi24 as the base of the software stack. This is Flightradar24’s feeder software. Published instructions: https://www.flightradar24.com/build-your-own
These days they provide their images, however, their apt repository and install script are available separately:
curl -L https://fr24.com/install.sh
Do note that this script may have some issues with Debian 13/Trixie because it expects /etc/apt/sources.list which is not a thing with DEB822.
My config file looks like:
/etc/fr24feed.inireceiver="dvbt" fr24key="FEEDER-KEY" bs="no" raw="no" logmode="2" procargs="--net --net-bi-port 30104 --lat LATITUDE --lon LONGITUDE" logpath="/var/log/fr24feed" mlat="no" mlat-without-gps="no"
Per Fr24 instructions, MLAT is disabled. If I remember correctly, the feeder key is created when the installation is completed by that install script. You do need precise latitude and longitude for your feeder without GPS input.
AirNav radar (formerly RadarBox)
They don’t just sell hardware, they have their own platform. Instructions: https://www.airnavradar.com/raspberry-pi/guide. I haven’t tested whether there’s a trixie repository available.
My config file looks like:
/etc/rbfeeder.ini
[client]
network_mode=true
log_file=/var/log/rbfeeder.log
key=FEEDER-KEY
sn=STATION
lat=LATITUDE
lon=LONGITUDE
alt=ALTITUDE
sat_used=0
sat_visible=0
[network]
mode=beast
external_port=30005
external_host=127.0.0.1
[mlat]
autostart_mlat=true
#mlat_cmd=/usr/bin/python3 /usr/bin/mlat-client
[dump978]
#dump978_enabled=true
Location wise, this also needs the altitude of the receiver to provide the MLAT calculations. rbfeeder comes with its own MLAT client but the mlat-client package needs to be installed explicitly.
The 30005 port is a listener for the BEAST format for aircraft decoded messages. These messages are provided by dump1090-mutability which is part of Fr24 software stack which is the source of truth.
UAT (978 MHz) is disabled as this is a US thing.
FlightAware
They also provide instructions for how to install their feeder, piaware: https://www.flightaware.com/adsb/piaware/install. Trixie is not listed as supported.
I am not using dump1090-fa as piaware is hooked into dump1090-mutability provided by Fr24. So, only the piaware package is needed following the installation of their apt repository.
BEAST is connected automatically on port 30005. What took a bit of head scratching is how to hook piaware’s MLAT service into dump1090-mutability. Remember the --net-bi-port 30104 argument in fr24feed.ini? Yup, this is there to support piaware MLAT.
I don’t have a config file sample to publish as it’s all default i.e. a config full of comments. For as long as 30104 is available in dump1090-mutability, piaware just works.
If I remember correctly, I configured all geo information through their website for this particular station.
ADS-B Exchange
They provide their own software stack, but no apt repositories. This is all managed via shell scripts. The instructions are available here: https://www.adsbexchange.com/community/feeder-hub/connect-equipment/
It deploys its own mlat-client and hooks into dump1090-mutability automatically for both ADS-B and MLAT. The entire experience is straight forward. The only bit of separate maintenance is refreshing and running axupdate.sh manually as this won’t be handled by apt.