Skip to content

Repository files navigation

GDLCOT: Display TAK Air Pictures in ForeFlight — CoT to GDL90 Gateway

GDLCOT broadcasts the local Cursor on Target (CoT) air picture as GDL90 over UDP, so Electronic Flight Bag (EFB) apps — ForeFlight, FlyQ EFB, Garmin Pilot — display the same traffic that TAK sees. It is the reverse of adsbcot: CoT in, GDL90 out.

GDLCOT 2.0.1 and later rebuild the PyTAK client in-process with bounded backoff when the CoT source is unavailable or local network policy is being replaced. Each attempt gets new queues, workers, and transports.

GDLCOT subscribes to CoT (by default the AryaOS / ATAK Mesh SA multicast group), keeps a table of air tracks, and once a second emits GDL90 Heartbeat, Ownship and Traffic Report datagrams the way a stratux or GDL 90 receiver would. Any traffic feeding your TAK network — ADS-B via adsbcot, drone Remote ID via dronecot, tracks from a TAK Server — shows up in the cockpit.

ForeFlight setup

  1. Put the iPad/iPhone on the same Wi-Fi network as the device running GDLCOT (e.g. join the AryaOS hotspot).
  2. That's it — ForeFlight auto-detects GDL90 traffic on UDP port 4000 and lists it under More → Devices. FlyQ and Garmin Pilot behave the same.

Installation

On AryaOS / Debian, from the snstac package repo:

sudo apt install gdlcot
sudo systemctl enable --now gdlcot

Or from source:

python3 -m pip install gdlcot

The Debian package installs:

  • /usr/bin/gdlcot
  • /etc/default/gdlcot
  • /lib/systemd/system/gdlcot.service (ships disabled; enable as above)

Configuration

PyTAK-style, via /etc/default/gdlcot (systemd EnvironmentFile), the environment, or an INI file with a [gdlcot] section:

Key Default Description
COT_URL udp+ro://239.2.3.1:6969 CoT source (PyTAK URL). Default is the Mesh SA multicast group.
GDL90_URL udp+broadcast://255.255.255.255:4000 GDL90 egress. Broadcast is the stratux/ForeFlight convention; unicast udp://host:port also works.
STALE_SECS 60 Drop tracks not updated within this many seconds.
UPDATE_HZ 1 GDL90 update rate (heartbeat convention is 1 Hz).
OWNSHIP_UID CoT UID whose track becomes the Ownship Report (e.g. this device's gpstak/lincot UID).
OWNSHIP_LAT / OWNSHIP_LON / OWNSHIP_ALT_FT Static ownship position fallback. If no ownship is configured, GDLCOT sends heartbeat + traffic only.
CALLSIGN GDLCOT Ownship callsign shown in the EFB.

PYTAK_* options (TLS client certs, etc.) are passed through to PyTAK, so any PyTAK-supported CoT source works, including TAK Server over TLS.

Notes:

  • GDL90 Traffic Reports carry pressure altitude, because that is what every other aircraft's transponder reports and what an EFB needs to compute relative altitude. GDLCOT reads it from <__adsb alt_baro="...">, which adsbcot publishes from readsb.
  • When a source does not provide pressure altitude — a non-adsbcot feed, or a target reporting ground — GDLCOT falls back to CoT's geometric hae. That is approximate: geometric and pressure altitude differ with local pressure, routinely by hundreds of feet. Better than dropping the track, but it is a fallback, not the intent.
  • The Ownship Geometric Altitude message uses geometric altitude, which is what that message is for.
  • EFBs treat all of this as advisory traffic, not certified ADS-B In.
  • Tracks with UIDs like ICAO-A1B2C3 (adsbcot convention) keep their real 24-bit ICAO address; other tracks get a stable self-assigned address hashed from the UID.

Software Suite

GDLCOT is part of the snstac TAK gateway family, built on PyTAK and pre-installed on AryaOS: adsbcot (aircraft via ADS-B), aiscot (ships via AIS), dronecot (drone Remote ID), lincot / gpstak (own position via GNSS), aprscot (APRS amateur radio), windtak (weather stations) and charontak (CoT routing).

Development

make editable install_test_requirements
make pytest
make package   # Debian package via stdeb

License

Copyright Sensors & Signals LLC — Apache License, Version 2.0.

About

Display TAK air pictures in ForeFlight — Cursor on Target (CoT) to GDL90 gateway

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages