Important
TestFlight beta has expired.
Professional drone and aircraft detection for iOS/macOS Built for WarDragon Pro.
Real-time Remote ID • ADS-B tracking • FPV detection • Encrypted drone monitoring • Advanced spoof detection
|
Remote ID Broadcasts
ADS-B Aircraft
Encrypted Drones (DJI Ocusync)
FPV Video Transmitters
Threats and Anomalies
|
Features
- Live Map View - All detections on unified map with color-coded markers
- Detection Details - Full telemetry: position, altitude, speed, heading, manufacturer
- FAA Registry Lookup - Real-time drone registration data with operator info
- History & Analysis - Search, filter, export encounters (KML, CSV). Data is stored securely in iOS Keychain (TAK) and the app uses SwiftData.
- System Monitoring - CPU, memory, temperature, GPS, ANTSDR sensors
- Proximity & System Alerts - Configurable distance thresholds with notifications. Memory and temperature alert triggers.
|
|
|
|
|
Push Detection Data To:
- MQTT - Home Assistant auto-discovery, TLS support, QoS 0-2
- TAK/ATAK - CoT XML via multicast/TCP/TLS with iOS Keychain .p12
- Lattice DAS - Structured detection reports to Lattice platform
- Webhooks - Discord, Slack, custom HTTP POST with event filtering
Receive Data From:
- ZMQ - Ports 4224 (detections) and 4225 (system status) from DroneID backend
- Multicast CoT - 239.2.3.1:6969 from DragonSync.py wrapper
- ADS-B - readsb, tar1090, dump1090 JSON feeds and OpenSky Network
- Background Mode - Continuous monitoring with local notifications
- A database migration guide can be found here
- Data flow and system information is here
| Setup | Time | WiFi RID | BT RID | SDR | FPV | Best For |
|---|---|---|---|---|---|---|
| WarDragon Pro | 5 min | ✓ | ✓ | ✓ | ✓ | Full-spectrum deployment |
| Drag0net ESP32 | 15 min | ✓ 2.4GHz | ✗ | ✗ | ✗ | Portable WiFi RID only |
| Custom Build | 60 min | ✓ | ✓ | ✓ | ✓ | DIY / maximum control |
Pre-configured system with ANTSDR E200, RX5808, GPS hardware.
Keeping up with all the changes to the hardware is difficult. This uses my own zmq_decoder fork for FPV and other changes, but should be working with the latest version on the WarDragon. Be sure to git pull in both DroneID and DragonSync directories.
The hardware may also have other issues working with the app if commands are not used as referenced below. Use the troubleshooting guide to fix common issues.
Quick Start:
- Power on device
- Connect iOS device to same network
- App → Settings → ZMQ → Enter WarDragon IP
- Start monitoring
Troubleshooting:
No Network Connection/Data:
A. Toggling the in-app connection off and on is sometimes needed first run for Apple to request connections.
B. Backend connection settings that may need modification:
- Edit the Config file:
/home/dragon/WarDragon/DragonSync/config.ini- Change if localhost fails to *listen for zmq
zmq_host = 0.0.0.0 - Alternative multicast address
tak_multicast_addr = 224.0.0.1
- Change if localhost fails to *listen for zmq
System Status:
A. To send data, wardragon_monitor.py requires GPS lock (use --static_gps flag or wait for lock)
B. SDR temps require DJI firmware on ANTSDR (UHD firmware won't report temps)
Flash ESP32-C3/S3 or LilyGO T-Dongle for standalone WiFi RID detection.
Automated Flash:
curl -fsSL https://raw.githubusercontent.com/Root-Down-Digital/DragonSync-iOS/refs/heads/main/Util/setup.sh -o setup.sh
chmod +x setup.sh && ./setup.sh
# Select option 4 (ESP32-C3) or 5 (ESP32-S3)Connect to Device:
- SSID:
Dr4g0net - Password:
wardragon1234 - IP Address:
192.168.4.1 - App Settings → ZMQ IP:
192.168.4.1 - Web UI: Navigate to
192.168.4.1in browser
Manual Flash: Download firmware
esptool.py --chip auto --port /dev/YOUR_PORT --baud 115200 \
--before default_reset --after hard_reset write_flash -z \
--flash_mode dio --flash_freq 80m --flash_size detect \
0x10000 firmware.binComplete detection stack with all protocols.
Hardware Requirements:
- Dual-band WiFi adapter (2.4/5GHz)
- Sniffle Bluetooth sniffer dongle
- Optional: ANTSDR E200 (SDR), GPS module, RX5808 (FPV)
Automated Install:
curl -fsSL https://raw.githubusercontent.com/Root-Down-Digital/DragonSync-iOS/refs/heads/main/Util/setup.sh -o setup.sh
chmod +x setup.sh && ./setup.sh
# Follow prompts for your platformManual Installation Steps
Linux:
sudo apt update
sudo apt install -y python3 python3-pip git gpsd gpsd-clients lm-sensors
git clone https://github.com/alphafox02/DroneID.git
git clone https://github.com/alphafox02/DragonSync.git
cd DroneID && git submodule update --init && ./setup.shmacOS:
brew install python3 git gpsd
git clone https://github.com/alphafox02/DroneID.git
git clone https://github.com/alphafox02/DragonSync.git
cd DroneID && git submodule update --init && ./setup.shWindows: Use WSL2 or manually install Python 3.9+ and Git
Run Detection Stack:
# Terminal 1 - WiFi RID Receiver
cd DroneID
python3 wifi_receiver.py --interface wlan0 -z --zmqsetting 127.0.0.1:4223
# Terminal 2 - Bluetooth RID Receiver
cd DroneID/Sniffle
python3 python_cli/sniff_receiver.py -l -e -a -z -b 2000000
# Terminal 3 - Decoder (aggregates all sources)
cd DroneID
python3 zmq_decoder.py -z --zmqsetting 0.0.0.0:4224 --zmqclients 127.0.0.1:4222,127.0.0.1:4223 -v
# Terminal 4 - System Health Monitor
cd DragonSync
python3 wardragon_monitor.py --zmq_host 0.0.0.0 --zmq_port 4225 --interval 30iOS App Configuration:
- Settings → ZMQ → Host IP address, Port 4224
- Advanced → Status Port 4225
- Enable ADS-B, MQTT, TAK, webhooks as needed
Persistence: Use systemd service files for auto-start
┌─────────────────────────────────────────────────────┐
│ Detection Sources │
│ │
│ WiFi RID (2.4/5GHz) ─── wifi_receiver.py │
│ Bluetooth RID ────────── sniff_receiver.py │
│ SDR Decode ──────────── ANTSDR E200 │
│ FPV Video ───────────── RX5808 + fpv_mdn_receiver │
│ ESP32 Standalone ────── Drag0net WiFi 2.4GHz │
└────────────────────┬────────────────────────────────┘
│
┌────────────┴────────────┐
│ │
┌──────▼────────┐ ┌────────▼────────┐
│ zmq_decoder │ │ DragonSync.py │
│ Port 4224 │ │ (wrapper) │
│ (JSON) │ │ Multicast CoT │
└──────┬────────┘ └────────┬────────┘
│ │
└──────────┬──────────────┘
│
┌──────────▼──────────┐ ┌────────────────┐
│ DragonSync iOS │◄─────┤ ADS-B Source │
│ │ │ HTTP JSON │
│ ZMQ: 4224, 4225 │ │ readsb/tar1090 │
│ CoT: 239.2.3.1 │ └────────────────┘
└──────────┬──────────┘
│
┌──────────▼──────────┐
│ Output Channels │
│ │
│ MQTT │
│ TAK/ATAK (CoT) │
│ Webhooks │
│ Lattice DAS │
└─────────────────────┘
Data Flow:
- Ingestion: ZMQ JSON (4224 detections, 4225 status), Multicast CoT (239.2.3.1:6969), ADS-B HTTP
- Processing: SwiftData persistence, spoof detection, signature analysis, rate limiting
- Output: MQTT, TAK/ATAK, Webhooks & Lattice
| Task | Command |
|---|---|
| System Monitor | python3 wardragon_monitor.py --zmq_host 0.0.0.0 --zmq_port 4225 --interval 30 |
| Static GPS | python3 wardragon_monitor.py --static_gps 37.7749,-122.4194,10 |
| SDR Decode | python3 zmq_decoder.py --dji -z --zmqsetting 0.0.0.0:4224 |
| WiFi Sniffer | python3 wifi_receiver.py --interface wlan0 -z --zmqsetting 127.0.0.1:4223 |
| BT Sniffer | python3 Sniffle/python_cli/sniff_receiver.py -l -e -a -z -b 2000000 |
| Decoder | python3 zmq_decoder.py -z --zmqsetting 0.0.0.0:4224 --zmqclients 127.0.0.1:4222,127.0.0.1:4223 -v |
| FPV Detection | python3 fpv_mdn_receiver.py -z --zmqsetting 127.0.0.1:4222 |
ZMQ (Recommended) - Full JSON telemetry with complete detection data
- Port 4224: Drone detections
- Port 4225: System health and status
Multicast CoT - TAK/ATAK integration with reduced detail
- Address: 239.2.3.1:6969
- Protocol: CoT XML
ADS-B HTTP - Aircraft tracking from standard feeds or OpenSky
- Endpoints: readsb, tar1090, dump1090
- OpenSky Network: Use with or without an account
MQTT - Publish to Home Assistant or broker
- Formats: JSON, Home Assistant discovery
- TLS and authentication support
git clone https://github.com/Root-Down-Digital/DragonSync-iOS.git
cd DragonSync-iOS
pod installOpen WarDragon.xcworkspace in Xcode 15+.
Requirements:
- Xcode 15.0 or later
- iOS 17.0+ / macOS 14.0+ deployment target
- CocoaPods for dependencies
Built on: DroneID • DragonSync • Sniffle
Third-party frameworks used:
SwiftyZeroMQ5
CocoaMQTT
CocoaAsyncSocket
Starscream
API Data Sources:
- faa.gov
- opensky-network.org
READ BEFORE USE
While receiving RF signals is generally legal in most jurisdictions, users are solely responsible for:
- Complying with all applicable local, state, federal, and international laws
- Ensuring proper authorization before monitoring any communications
- Understanding that monitoring transmissions you are not authorized to receive may be illegal
- Obtaining necessary licenses or permissions from local regulatory authorities
- Using appropriate frequencies and power levels per local regulations
The authors, contributors, and maintainers of this software:
- Make NO WARRANTIES, express or implied
- Accept NO RESPONSIBILITY for any use, misuse, or consequences
- Accept NO LIABILITY for any legal violations, damages, or harm
- Provide this software "AS IS" without guarantee of fitness for any purpose
By using this software, you acknowledge:
- You are solely responsible for your actions and consequences
- You will use this software only in compliance with applicable laws
- The authors bear no responsibility for your use
USE AT YOUR OWN RISK
Note
Keep WarDragon and DragonOS updated for optimal compatibility.
Caution
Use only in compliance with local regulations and laws.








