Skip to content

Community

Become a feeder

With a Raspberry Pi, an RTL-SDR dongle and an antenna (about €55–110) you send your receiver's data to the network. In return you get the API with Pro limits for free, and you see what your receiver can't see on its own.

What you get

Your receiver knows what it received. Sending us its data gets you more:

The API with Pro limits, free

300 requests a minute, 10 million a month, the whole world. They apply to your Free keys, for non-commercial use. The Pro plan costs €49 a month + VAT.

Turn it on in My API, opened from your receiver’s network. If the receiver stops, the limits stay for 72 hours.

Turn it on in My API →

What flew past you

graphs1090 and tar1090 show what your receiver got. Lightcone also shows the aircraft that passed near you and you did not receive: our server receives every station around you.

Needs MLAT on.

Open Lightcone →

How you compare with your neighbours

See how many aircraft you receive compared with the receivers within 40 km, and where you rank. Every day you also see the aircraft only you received and the MLAT positions computed with your data.

The comparison starts with at least 3 receivers nearby.

Your check-up →

Hardware

Raspberry Pi

~€15–45

Pi 3, 4 or 5 — any model with USB and network. A Pi Zero 2W is sufficient.

RTL-SDR dongle

~€25–35

1090 MHz Software Defined Radio receiver. RTL-SDR Blog v4 is the recommended choice.

1090 MHz antenna

~€15–30

Omnidirectional vertical antenna. FlightAware 66 cm or home-built. Higher is better.

Estimated total: €55–110 The RTL-SDR Blog v4 includes a built-in 1090 MHz LNA filter

Setup with docker-adsb-ultrafeeder

The easiest way to contribute is docker-adsb-ultrafeeder, a Docker container that handles ADS-B reception, Mode-S EHS decoding, MLAT participation and feeding to multiple networks automatically.

1. Install Docker on Raspberry Pi OS
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
2. Generate your receiver’s identifier
cat /proc/sys/kernel/random/uuid

Do it once and keep it: it is how we recognise your receiver even if its address or network changes. Lightcone needs it.

3. docker-compose.yml
services:
  ultrafeeder:
    image: ghcr.io/sdr-enthusiasts/docker-adsb-ultrafeeder
    container_name: ultrafeeder
    restart: unless-stopped
    device_cgroup_rules:
      - 'c 189:* rwm'
    devices:
      - /dev/bus/usb:/dev/bus/usb
    ports:
      - 8080:80   # tar1090 and graphs1090 on your receiver
    environment:
      # The RTL-SDR dongle, with readsb's automatic gain
      - READSB_DEVICE_TYPE=rtlsdr
      - READSB_GAIN=auto

      # Antenna position: lat/lon with 5 decimals, altitude above sea level
      - READSB_LAT=45.46000
      - READSB_LON=9.19000
      - READSB_ALT=120m

      # The identifier from step 2 and a name for MLAT (letters, digits, - and _)
      - UUID=paste-your-uuid-here
      - MLAT_USER=your-name

      # Data and MLAT to FlyItalyADSB
      - ULTRAFEEDER_CONFIG=adsb,dati.flyitalyadsb.com,4905,beast_reduce_plus_out;mlat,dati.flyitalyadsb.com,30100

    volumes:
      - /opt/adsb/ultrafeeder/globe_history:/var/globe_history
      - /opt/adsb/ultrafeeder/graphs1090:/var/lib/collectd
4. Start
docker compose up -d
docker logs -f ultrafeeder

MLAT note: accurate lat/lon/altitude is critical (error < 10 m). Use Google Maps or a GPS for exact position. Altitude is the antenna height, not ground level.

Connection endpoints

Host Port Protocol Use
dati.flyitalyadsb.com 4905 BEAST TCP Send ADS-B data (in)
dati.flyitalyadsb.com 30100 TCP MLAT client

All set up?

Check whether we are receiving your stream: the answer is immediate and needs no sign-up.

Is my data arriving? →

Data archive

Network data is in the historical archive: per-aircraft traces since 2022 and coverage, self-serve through the REST API.

Browse data →