Skip to content

VirusPilot/docker-ogn2readsb

Repository files navigation

New features (as of 27 June 2026)

  • DroneAware support:
    • requires running DroneAware service (as of DroneAware release v1.4.0)
    • set DRONEAWARE_LOCAL_UDP_TARGETS=127.0.0.1:9999 in DroneAware environment settings
    • set DRONEAWARE_UDP_PORT=9999 in compose.yaml or compose-multifeed.yaml
  • new default setting RESPECT_OGN_ADDRESS_TYPE=True
    • aircraft addresses indicated as non-ICAO will receive a "~" prefix for readsb to not merge them with a potential ICAO-address aircraft
    • if set to False, all OGN addresses are passed as if they were ICAO addresses; this mainly helps with SafeSky targets when an aprs_subscribe_filter is set; these are ALWAYS reported as OGN addresses, despite actually being valid ICAO addresses

docker version of ogn2readsb

consisting of the following components:

  • ogn2dump1090
    • simple Python tool to inject Open Glider Network Traffic (from an existing local OGN decoder instance) into an existing readsb ADS-B decoder instance for display on a unified tar1090 map
    • furthermore online aggregated traffic from aprs.glidernet.org can optionally be injected for a reasonably selected radius around a given location
    • OGN traffic will be displayed as other traffic alongside ADS-B traffic, using the readsb tar1090 web interface (e.g. http://yourRaspberryPi.local/tar1090/)
  • rtlsdr-ogn (feeding glidernet.org with OGN traffic)
  • readsb (feeding glidernet.org with ADS-B traffic and decoding/forwarding traffic to the tar1090 map)
  • mlat-client-adsbx (display MLAT traffic from adsbexchange.com)
  • tar1090 (traffic map)
  • optional feeds (advanced docker build):
    • adsbexchange.com
    • airplanes.live
    • adsb.lol
    • adsb.fi
    • planefinder.net
    • flightradar24.com
    • airnavradar.com
    • flightaware.com
    • opensky-network.org

ogn2readsb

supported operating systems

Debian or Debian-based Linux Operating Systems (64-bit Debian 13 Trixie or newer):

  • Debian
  • Ubuntu
  • DietPi
  • RaspiOS

supported hardware architectures

  • arm64 (64-bit ARM CPUs with hardware floating point processor)
  • x64 (64-bit AMD/Intel CPUs)
  • SDRs: native support for RTL-SDR Blog v4 SDR since Debian 13 Trixie

prepare system and docker

  • sudo apt update && sudo apt install --yes git wget
  • bash <(wget -q -O - https://raw.githubusercontent.com/sdr-enthusiasts/docker-install/main/docker-install.sh)
  • you may be asked Y/n a couple of times, it is safe to answer all of them with Y
  • sudo reboot

prepare SDR_868_SERIAL and SDR_1090_SERIAL

  • identify or set both SDR serials (e.g. 868 and 1090), they are required for the config.vars below
  • unplug all SDRs, leaving only the SDR to be used for 868 MHz reception plugged in, then issue the following command:
    • docker run --rm -it --device /dev/bus/usb --entrypoint rtl_eeprom ghcr.io/sdr-enthusiasts/docker-adsb-ultrafeeder -s 868
  • unplug all SDRs, leaving only the SDR to be used for 1090 MHz reception plugged in, then issue the following command:
    • docker run --rm -it --device /dev/bus/usb --entrypoint rtl_eeprom ghcr.io/sdr-enthusiasts/docker-adsb-ultrafeeder -s 1090

prepare SDR_868_PPM and SDR_1090_PPM

  • unplug all SDRs, leaving only the SDR to be used for 868 MHz reception plugged in, then issue the following command:
    • docker run --rm -it --device /dev/bus/usb --entrypoint rtl_test ghcr.io/sdr-enthusiasts/docker-adsb-ultrafeeder -p
    • let it run for 10-15 min (important so that the SDR warms up)
    • note the ppm listed in the related output, e.g. ... cumulative PPM: -1 and use that for SDR_868_PPM
    • modern SDRs have a TCXO, therefore SDR_868_PPM = 0 is the default
  • unplug all SDRs, leaving only the SDR to be used for 1090 MHz reception plugged in, then issue the following command:
    • docker run --rm -it --device /dev/bus/usb --entrypoint rtl_test ghcr.io/sdr-enthusiasts/docker-adsb-ultrafeeder -p
    • let it run for 10-15 min (important so that the SDR warms up)
    • note the ppm listed in the related output, e.g. ... cumulative PPM: -1 and use that for SDR_1090_PPM
    • modern SDRs have a TCXO, therefore SDR_1090_PPM = 0 is the default

prepare ogn2readsb

  • git clone https://github.com/VirusPilot/docker-ogn2readsb

configuration

  • cd ./docker-ogn2readsb
  • nano config.vars
    • save changes with CTRL O
    • exit nano with CTRL X
variable example description
STATION_LAT 50.0 your station latitude [deg] (as positive or negative decimal number)
STATION_LON 10.0 your station longitude [deg] (as positive or negative decimal number)
STATION_ALT_MSL_M 300 your station altitude AMSL [m]
STATION_NAME OGNTEST your max. 9 letter station name, please comply with naming convention
STATION_COMMENT_ANTENNA VINNANT CC868/8-PEL optional information about your station antenna
STATION_COMMENT_FILTER optional information about your station filter
STATION_COMMENT_AMPLIFIER Uputronics HAB-FPA868 optional information about your station amplifier
STATION_COMMENT_DONGLE rtl-sdr v3 silver optional information about your station dongle
STATION_COMMENT_CLUB optional name of your Flight Club
STATION_COMMENT_EMAIL optional station email contact
STATION_COMMENT_WEBSITE optional station website
STATION_COMMENT_NOTE optional notes about your station
FREQ_PLAN 0 0=automatic (default), 1=EU/Africa, 2=USA/Canada, 3=South America/Australia, 4=New Zealand, 5=Israel, 6=EU/Africa 433MHz, 7=Japan
GSM_CENTER_FREQ 935.8 default = 0, change only if you know your closest GSM900 station frequency [MHz]
ADSB_MAX_ALT_FT 18000 ADSB max OGN feed altitude [ft]
METAR_SOURCE_ICAO EDDF 4-letter ICAO code of a nearby airport with METAR service
APRS_SUBSCRIBE_FILTER r/50.0/10.0/100 circle in [km] around a defined position (example: LAT 50.0, LON 10.0, CIRCLE 100 km) for which you want to receive traffic from the OGN APRS servers
SDR_868_SERIAL 868 enter your OGN SDR serial
SDR_868_PPM 0 change only if you know your SDR's ppm
SDR_868_BIAS_T_ENABLE 0 set to 1 to enable Bias Tee on your SDR, e.g. to power a LNA
SDR_1090_SERIAL 1090 enter your ADSB SDR serial
SDR_1090_PPM 0 change only if you know your SDR's ppm
SDR_1090_BIAS_T_ENABLE 0 set to 1 to enable Bias Tee on your SDR, e.g. to power a LNA

standard build (only feeding glidernet and adsbexchange.com)

  • cd ./docker-ogn2readsb
  • docker compose up -d

advanced build (with additional feeders)

  • quite some manual editing is required, please use it only if you know what you are doing
  • cd ./docker-ogn2readsb
  • nano compose-multifeed.yaml
    • add your feeder credentials (e.g. SHARING KEY, USERNAME, LAT, LON, ALT)
    • delete (or comment out) unused/unwanted feeder entries
  • docker compose --file compose-multifeed.yaml up -d

apply configuration changes

  • cd ./docker-ogn2readsb
  • nano config.vars
  • docker compose up -d (or docker compose --file compose-multifeed.yaml up -d)

monitor all ADSB and OGN traffic consolidated in a single tar1090 instance

  • http://yourReceiverIP.local/tar1090

enable DE and AT traffic patterns

  • quick hack for now: enable "UK Radar Corridors":
DE AT Traffic Patterns

monitor OGN details

  • http://yourReceiverIP:8080
  • http://yourReceiverIP:8081

monitor docker containers

  • docker compose logs -f or docker compose --file compose-multifeed.yaml logs -f (monitor all containers)
  • docker logs -f rtlsdr-ogn
  • docker logs -f mlat-client-adsbx
  • docker logs -f readsb
  • docker logs -f ogn2dump1090
  • docker logs -f tar1090

monitor docker statistics

  • docker stats (CTRL C to exit)

open a shell inside your container

  • docker exec -it <yourDockerContainer> bash

useful docker commands (examples for standard build)

  • docker ps -a list all docker containers, including stopped ones
  • docker container related commands
    • docker stop <container_name_or_id> stop a running container
    • docker rm <container_name_or_id> deactivate a stopped container
    • docker container prune remove all stopped containers
    • docker compose down stop and remove all containers and networks
    • docker compose up -d recreate and start containers
  • docker image related commands
    • docker image ls list docker images
    • docker rmi <image_id_or_name> delete docker image
    • docker image prune delete all unused docker images
  • docker system related commands
    • docker system prune clean your docker environment
  • clean your entire docker environment e.g. for a fresh setup
    • docker rm -f $(docker ps -aq) force remove ALL containers
    • docker system prune -af --volumes clean your entire docker environment

docker terms and related meaning

Term Meaning
Dockerfile Build instructions
Image Built / immutable system image
Container Running instance of an image
Compose Orchestration / startup plan for multiple containers

About

docker version of ogn2dump1090 with optional feeds

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages