Skip to content

About

SiKW00F drone MAVLink telemetry to Cursor-on-Target (CoT) gateway, built on PyTAK.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Repository files navigation

SIKW00FCOT - Detect & Track Drones in TAK

sikw00fcot detects and tracks drones in the Team Awareness Kit (TAK) ecosystem — ATAK, WinTAK, iTAK & TAK Server — from their SiK radio telemetry links, building on SiKW00F and PyTAK.

It ships three daemons, each a PyTAK gateway:

Command What it does
sikw00fsentinel Autonomous SCAN ⇄ INSPECT state machine on one SiK radio. Scans promiscuously, squawks a CoT alert on a new drone link, switches to INSPECT to decode MAVLink into a live track, and reverts to SCAN on timeout. Emits a status marker showing its current mode. The recommended, plug-in-a-radio daemon.
sikw00fscan Promiscuous SiK NetID scanner. Emits a CoT detection alert (no position) whenever a drone telemetry link is detected near the sensor.
sikw00fcot MAVLink → CoT gateway. Consumes drone MAVLink eavesdropped and fanned-out by SiKW00F over UDP and forwards full position/track CoT.

How it fits together

sikw00fsentinel / sikw00fscan own the SiK radio directly over serial — no SiKW00F process required:

drone SiK link ──RF──> SiK radio ──serial──> sikw00fsentinel ──CoT──> TAK Server
                                             (SCAN ⇄ INSPECT)

sikw00fcot is a passive sink for SiKW00F's eavesdrop TUI. A serial port has one reader, so we don't fight SiKW00F for it: patches/apply_fanout.py teaches SiKW00F's eavesdrop loop to mirror every MAVLink frame to a local UDP socket, which sikw00fcot reads:

SiK radio ──serial──> SiKW00F eavesdrop ──UDP fan-out──> sikw00fcot ──CoT──> TAK Server
                      (owns the serial port)            (udp:127.0.0.1:14550)

Installation

Debian / Ubuntu / Raspberry Pi (.deb)

Grab the .deb from Releases:

sudo apt update
sudo apt install ./sikw00fcot_latest_all.deb

This installs all three commands and enables the sikw00fcot gateway service. To run the autonomous sikw00fsentinel instead, install its unit + config from config/ (the two radio daemons aren't auto-enabled — they conflict over the serial port).

pip

python3 -m pip install sikw00fcot
# For wss:// (TAK Protocol websocket) delivery:
python3 -m pip install 'sikw00fcot[with_takproto]'

Configuration

Configuration is via an environment file (systemd EnvironmentFile) or an .ini section. See config/ for fully-commented examples for each daemon.

Common keys (plus all PyTAK COT_URL / PYTAK_TLS_* settings):

Key Default Meaning
COT_URL — TAK destination, e.g. tls://takserver.example.com:8089
DEVICE /dev/ttyUSB0 SiK radio serial device (scan/sentinel)
BAUD 57600 SiK radio baud
SENSOR_LAT / SENSOR_LON 0 Sensor location; detections/status are placed here
SENSOR_NETID — This sensor radio's own NetID (always excluded from detections)
IGNORE_NETIDS — NetIDs to never detect (comma/space separated)
DETECT_MIN_HITS 4 NetID: hits before a detection is confirmed
INSPECT_TIMEOUT 30 Seconds with no decoded MAVLink before INSPECT → SCAN
MAV_URL udpin:127.0.0.1:14550 Where sikw00fcot reads the fan-out
COT_TYPE a-u-A-M-H-Q Drone marker (air / unknown / multirotor UAS)
COT_STALE 120 CoT stale seconds

Lat/lon are truncated to 4 decimals via pytak.truncate_float. Version 1.0.1 and later rebuild the PyTAK client in-process with bounded backoff when the CoT destination is unavailable or local network policy is being replaced. Each attempt gets new queues, workers, and transports. Local serial/configuration faults still exit cleanly for systemd to handle.

wss:// note: wss://...:8443/takproto/1 works with enrolled PEM certs but needs the takproto extra (without it pytak sends raw XML and TAK drops it), and pytak's enrollment/403 paths have footguns — see config/sikw00fsentinel.config.example.

Source / development

git clone https://github.com/snstac/sikw00fcot
cd sikw00fcot
make editable                    # pip install -e .
make install_test_requirements
make test                        # pytest
make package                     # build .deb (needs debian/install_pkg_build_deps.sh)

License & Copyright

Copyright Sensors & Signals LLC https://www.snstac.com

Licensed under the Apache License, Version 2.0. See LICENSE.

About

SiKW00F drone MAVLink telemetry to Cursor-on-Target (CoT) gateway, built on PyTAK.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages