ADS-B Reception, Decoding & Sharing

From The Maceys in California

Introduction

ADS-B Reception, Decoding & Sharing=Automatic Dependent Surveillance-Broadcast (ADS-B) is a surveillance technology in which an aircraft determines its position via satellite navigation and periodically broadcasts it, enabling it to be tracked. I have setup a local receiver that feeds several services. I started with Flightradar24 but have expanded to include others. In exchange for feeding the aggregation sites I receive complementary subscriptions to their services.

In the summer of 2025, I replaced the Linux/Docker/Ultrafeeder configuration with the ADSB Feeder Image system. The primary reason is that it presents a web interface and automation for all of the fiddly tinker bits necessary to maintain to keep the system running. The system also introduces a feeder/server configuration where a server can support one or more feeders. The feeders can be stripped down configurations that require fewer resources.

The stage2 server image is a VM running on the PVE server. There are feeders in Chico and Almanor. I might add another in San Jose later.

The ADSB Feeder Image is built around Debian Linux which is installed and configured as part of the overall setup. There have been a few additions to make overall and remote management easier.

There are two configurations. The feeder is the system that has radio receivers connected to it. There can be multiple feeders in the system. The more the merrier. Currently there are feeders in Chico and at Lake Almanor. The stage2 server collects data from the feeders and forwards the information collected to the various aggregators. The stage2 server runs as a VM on PVE.

Project Overview

The desired end result is to have a fully functional ADS-B in receiver network that will process signals received from nearby aircraft and feed various aggregators. The stage2 server is in Chico and micro-feeders are in Chico and at Lake Almanor. An additional feeder is planned for San Jose.

Previous Configuration

root@argon-pi:/opt/adsb# more .env
FEEDER_ALT_FT=279.85
FEEDER_ALT_M=85.30
FEEDER_LAT=39.7512
FEEDER_LONG=-121.7932
FEEDER_TZ=America/Los_Angeles
FEEDER_NAME=KCIC6

ADSB_SDR_SERIAL=1090
ADSB_SDR_GAIN=auto
ADSB_SDR_PPM=-1
UAT_SDR_SERIAL=978
UAT_SDR_GAIN=autogain
UAT_SDR_PPM=-1

ULTRAFEEDER_UUID=f8f214bc-0a1e-4057-8513-ab144e6b72b3
FEEDER_HEYWHATSTHAT_ID=NRIA6SXG
FEEDER_HEYWHATSTHAT_ALTS=3000,12000

# ADS-B Exchange
ADSBX_UUID=f8f214bc-0a1e-4057-8513-ab144e6b72b3
ADSBX_SITENAME=T-KCIC6

# FlightAware
PIAWARE_FEEDER_ID=3963acce-ab0f-41f0-ae30-e4a32174bdbc

# Flightradar24
FR24_SHARING_KEY=e19faa3795c3fe88

# Radarbox
RADARBOX_SHARING_KEY=3baefd423abd202b5cccdf27ab7cbc68

# Planefinder
PLANEFINDER_SHARECODE=62c905c8d6175

# ADSBHub
ADSBHUB_STATION_KEY='Ms54?dI#:M!]JxU4A[_!43oe4u[q_Sm]o+JtEMu6$>~4JP--Z<?W:Ifdo{?-o9}]1%u#e_N=If_2Ab%|~Vt_}o1Y!li*l}#3'

# OpenSky
OPENSKY_USERNAME=sjclynn
OPENSKY_SERIAL=-1408231625

# Radarvirtuel
RV_FEEDER_KEY=kcic:BDB35CF29690E75A14D905F65839549A

# PlaneWatch
PW_API_KEY=8bf4f7da-d46f-436e-a40a-229b7e4a73b5

Site Specific Installation Information

Chico

This section describes the steps necessary to build and configure the ADS-B environment in Chico:

The Chico Micro Feeder is in a case with a power management board. The setup instructions are here:

The golden SD card has this configured as the default.

Lake Almanor

The Lake Almanor system is intended to be installed outdoors along with an Indi-Allsky SkyCam. This will also improve reception over using an indoor antenna.

Return to: Technical Guides

Install the Prerequisite Packages

apt install -y docker.io docker-compose

Install Portainer and Docker based Applications

Installing the ADSB.im Application

Execute the following command to install the ADSB software:

curl https://raw.githubusercontent.com/dirkhh/adsb-feeder-image/main/src/tools/app-install.sh | sudo bash

Connect to the Feeder and Configure

If the application was setup using the dedicated boot image, you will be able to connect to the feeder at [http://adsb-feeder.local]. The system also starts an sshd server so you can also make a serial connection.

If the application was loaded onto an existing OS then the active port is 1099. Connect to the feeder at [http://raspberrypi:1099]

(Optional) Install Agent-DVR

This is an Application to Run and Monitor Cameras.

https://www.ispyconnect.com/download

Try it native first and then do the docker version if necessary.

The easiest way to do this is with docker:

docker run -d --name=AgentDVR -e PUID=1000 -e PGID=1000 -e TZ=America/New_York -e AGENTDVR_WEBUI_PORT=8090 -p 8090:8090 -p 3478:3478/udp -p 50000-50100:50000-50100/udp -v /appdata/AgentDVR/config/:/AgentDVR/Media/XML/ -v /appdata/AgentDVR/media/:/AgentDVR/Media/WebServerRoot/Media/ -v /appdata/AgentDVR/commands:/AgentDVR/Commands/ --restart unless-stopped mekayelanik/ispyagentdvr:latest

(Optional) Install Indi-Allsky

Use putty, or your preferred app and connect to adsb-feeder.local. Assuming that the user and password were set when the SD card was created, they are pi/raspberry.

The Almanor system is also being configured to have a SkyCam as part of the configuration. The Git library for this application is at: Indi-AllSky. The installation instructions are at Getting Started.

Do a full install, steps 1, 2 and 3.

Step 1 should not be necessary since git has already been installed.

For step 2, enter:

cd /opt
sudo git clone https://github.com/aaronwmorris/indi-allsky.git
sudo chown -R pi:pi indi-allsky
cd indi-allsky

If there is a conflict between applications on ports 80 and 443 the ports on Indi-AllSky can be changed in the setup script. Prior to running the script, it canbe modified so that the web ports are moved to 8080,8443. Edit the setup.sh script and change lines 65 and 66 to 8080 and 8443 respectively and then run:

./misc/build_indi.sh before running setup.sh

Select Automatic for the build Accept the configuration and select Yes to upgrade all of the system packages.

Go have coffee, watch a TV show. It takes a while. Depending on the base image, a reboot may be recommended and a list of services restarted. Just select OK to both. It may do this more than once but will continue.

When it completes reboot if it was recommended and continue to:

./setup.sh

Accept the configuration, select libcamera as the camera interface and the the IMX708 camera module 3 for the camera. Answer yes to add additional Python modules.

ADS-B Receiver

A Raspberry Pi system runs this setup.

Name: pi
IP: 192.168.86.50, 192.168.86.51

A second Raspberry Pi system has been setup intending to replace the original one

Name: argon-pi/adsb
IP: 192.168.86.52

Hardware

Pi Server

Hardware Configuration

This is the system that has been running the ADS-b receiver since about 2023.

Raspberry Pi 4-B
Memory: 4GB
Disk: 4GB SD card
OS: Raspbian - Buster
Default Login: pi/raspberry

Argon-pi Server

Hardware Configuration

Raspberry Pi 5-B
Memory: 8GB
Disk: 64GB SD Card
      1TB NVMe stick
OS: Ubuntu 24.04.2
Default Login: ubuntu/ubuntu

Assembly and configuration instructions are here for this hardware.

Argone-One

Initial Setup

This step installs and configures the base operating system and configures it to run the aplications

Install Ubuntu Linux

This step can be done from a PC or a running Raspberry system. A bit of a chicken or egg situation on the latter.

PC Instructions

Download and run the Raspberry Pi Imager utility.

Download from: https://raspberrypi.com/software

Raspberry Pi Instructions

The rpi-imager program will be on the Accessories menu. Install it if it isn't found.

sudo apt install rpi-imager

Select the appropriate items. In our case we are using a Raspberry Pi 5. Choose "Other general-purpose OS" from the Operating System drop down/Ubuntu/24.04.3 LTS (64-bit). Finally, select the appropriate target SD card.

Click on Next.

The OS will be loaded onto the SD card. Remove the card, install it in the SD slot on the processor board and start up the system. Linux will be running using hardwired keyboard and mouse. The KVM configuration will not work for some reason.

Login to the system GUI using the credentials that were setup when the SD card was created. Beware, you will be the superuser at this point.

Install Cockpit

Cockpit is a convenient GUI for relatively simple system management.

sudo apt install cockpit

Open a browser window and click on:

Cockpit

Initial Configuration

Enable Bluetooth and pair

Since having two keyboards and mice is a bit awkward, we will start by installing more convenient ones. In my case, I can easily use Bluetooth with the Pi and also use the Logitech dongles to connect to everything else with the KVM.

Bluetooth is not installed by default on Ubuntu. To install the support software:

sudo apt install pi-bluetooth
reboot

After logging back in there will be a Bluetooth icon on the upper right. This is the management interface. Click on Add Device and then pair Bluetooth keyboard and mouse. The wired devices can be removed and put away.

OS Configuration

It is good practice to run through the system update process after installation. The distributed versions can be days, weeks, months out of date. As part of the process, specific support software will be installed.

For the Argon-pi system the following is needed:

curl https;//download,argon40.com/argon-eeprom.sh|bash
reboot

Log back in and continue

apt update
apt full-upgrade -y
curl https://download.argon40.com/argon1.sh | bash
reboot
argon-config

On a non-argon, do just the following:

apt update
apt full-upgrade -y
reboot

Log back in again.

Install the ssh server and client software so that the system can be accessed from a ssh client like putty or kitty.

apt install openssh
apt install openssd
apt install openssh-server putty-tools -y

We will probably need nfs, at least initially

apt install nfs-kernel-server nfs-common -y </dev/null
mkdir /nfs
mkdir -p /nfs/media /nfs/multimedia /nfs/mediaarchive /nfs/public
chmod -R 777 /nfs
chown -R nobody:nogroup /nfs
echo ' ' >>/etc/fstab
echo 'macey.lan:/share/Multimedia         /nfs/multimedia         nfs defaults 0 0' >>/etc/fstab
echo 'macey.lan:/share/Media_Archive      /nfs/mediaarchive       nfs defaults 0 0' >>/etc/fstab
echo 'macey.lan:/share/Public             /nfs/public             nfs defaults 0 0' >>/etc/fstab
echo 'macey.lan:/share/TR004              /nfs/tr004              nfs defaults 0 0' >>/etc/fstab
systemctl restart nfs-kernel-server
systemctl daemon-reload
mount -a
df

Do the following as a normal user

. /etc/os-release
mkdir /home/${SUDO_USER}/.ssh
chmod 755 /home/${SUDO_USER}/.ssh
cp /nfs/public/authorized_keys /home/${SUDO_USER}/.ssh
chown ${SUDO_USER}:${SUDO_USER} /home/${SUDO_USER}/.ssh/authorized_keys


Receivers

FlightAware Pro Stick and Pro Stick Plus

The Plus is an integrated receiver, 1090MHz filter and amplifier combination. The normal Pro Stick does not have the 1090MHz filter and is setup to receive UAT reports on 978MHz.

Antenna

The receiver came with a 1/4 wave antenna that works to about 20 miles. I replaced it with this antenna and get coverage out to over 100 miles. It is still pretty weak and quite directional.

ADS-B Indoor Blade Antenna

Currently reaching 178 NM in range. The coverage looks like this:

Software

Raspbian - Buster
Default login: pi/raspberry

The main guide for installing this is: Docker ADSb Ultrafeeder which draws heavily from: ADSB Guide.

The ADSB software package is installed at /opt/adsb

Normal maintenance is run the following a superuser:

cd /opt/adsb
docker compose up -d

This will restart the application and pull new images if they are available. Periodically look at the web pages and review the docker-compose.yml listed there and update the local one accordingly. There is also plenty of information on running the application and getting information from it.

Occasionally, review the docker-compose.yml file and encorporate any changes that are interesting.

The primary software feed service is Ultrafeeder. Ultrafeeder supplies ADS-B and MLAT data to:

ADSBExchange
ADSB.lol
Planespotters
TheAirTraffic
avdelphi 

As well as others.

In addition, the docker-compose.yml has the following additional services:

ADSBhub
FlightRadar24 (fr24)
Opensky
PlaneFinder (pfclient)
FlightAware (piaware)
PlaneWatch
RadarPlane
RadarVirtuel
RadarBox (rbfeeder)

Additional services:

Planefence
tar1090
autoheal
dozzle
watchtower

Other Tools

Line of sight profiles for the apartment

http://www.heywhatsthat.com/

Enter KCIC-6 in the View box

Ports

ADS-B Subscription feeds

The software configuration is run under Docker/Docker-compose. This allows significant flexibility to add feeders that run concurrently beside themselves.

These are configured using this guide: ADS-B Reception, Decoding & Sharing with Docker

The list of sites that my receiver is feeding is:

ADS-B Exchange

ADS-B Exchange Map Display

Status

ADSBX_UUID=f8f214bc-0a1e-4057-8513-ab144e6b72b3 ADSBX_SITENAME=T-KCIC6

Benefits: Ad free subscription ($2.99/month) May require attention Follow the status link from the Pi server to reset the clock if necessary.

ADSB.fi

adsb.fi

A non-profit aggregator fed through ultrafeeder.

Benefits: None that are apparent.

ADSBHub

ADSBHub Statistics

Station: T-KCIC6 
User: lynnmacey@gmail.com
Password: Mc....

ADSBHUB_STATION_KEY='Ms54?dI#:M!]JxU4A[_!43oe4u[q_Sm]o+JtEMu6$>~4JP--Z<?W:Ifdo{?-o9}]1%u#e_N=If_2Ab%|~Vt_}o1Y!li*l}#3'

The Air Traffic

Air Traffic

No registration yet

Flightaware

Flightaware

User: sjclynn
Password: Mc....
Site Statistics: https://flightaware.com/adsb/stats/user/sjclynn
Global Statistics: https://flightaware.com/adsb/stats/
Local access: http://pi.local:8081

Benefits: Enterprise level account ($89.95/month)

PIAWARE_FEEDER_ID=3963acce-ab0f-41f0-ae30-e4a32174bdbc

Flightradar24

Flightradar24 Chico map

User: lynnmacey@gmail.com
Password: Mc....

Benefits: Business level account ($39.95/month)

FR24_SHARING_KEY=e19faa3795c3fe88

HP Radar

HP Radar

No registration yet

OpenSky Network

Opensky Network

User: sjclynn
Password: Mc....

Plane Finder

Plane Finder receiver stats
User: lynnmacey@gmail.com
Password: Mc....

Benefits: Plane Finder Premium account ($39.95/mo)

PLANEFINDER_SHARECODE=62c905c8d6175

Plane.Watch

Plane.Watch Desktop

Radar Box

RadarBox - Chico station

Benefits: Business account $39.95/mo

RADARBOX_SHARING_KEY=3baefd423abd202b5cccdf27ab7cbc68

Radar Plane

This aggregator is pretty new to the game. The site is in a pretty early beta.

Radarplane - Chico station
User: sjclynn
Password: Ea...

Radarvirtuel

[https://www.radarvirtuel.com/stations/KCIC Radarvirtuel station 

Benefits: This is a crowd sourced site

RV_FEEDER_KEY=kcic:BDB35CF29690E75A14D905F65839549A