Official Meshtastic ATAK Plugin for sending Cursor on Target (CoT) events to IMeshService in the Meshtastic Android app.
The Meshtastic ATAK Plugin enables seamless integration between the Android Team Awareness Kit (ATAK) and Meshtastic mesh networking devices. This plugin allows tactical teams to share position location information (PLI), chat messages, and other CoT events over Meshtastic's long-range, low-power mesh network.
- Position Location Information (PLI) - Share real-time location data between ATAK devices via Meshtastic
- Chat Integration - Send and receive GeoChat messages through the mesh network
- File Transfer - Transfer mission packages and files using fountain code encoding (requires Short_Turbo modem preset)
- Voice Memos - Record speech-to-text messages and broadcast via Meshtastic
- External GPS Support - Use Meshtastic device's GPS as external GPS source for ATAK
- Server Relay - Forward CoT events between Meshtastic mesh and TAK servers
The plugin has been refactored for better maintainability and performance:
- Modular architecture with separated concerns
- Centralized service management
- Improved error handling and logging
- Fountain code encoding for reliable large data transfers over lossy networks
- Thread-safe singleton patterns for shared resources
- Install the Meshtastic Android app from Google Play
- Install ATAK-CIV from tak.gov
- Download the latest Meshtastic ATAK Plugin APK from Releases
- Install the plugin APK on your Android device
- Launch ATAK and load the Meshtastic plugin from the plugins menu
Access plugin settings via: Settings → Tool Preferences → Specific Tool Preferences → Meshtastic Preferences
- Meshtastic Channel Index - Select the Meshtastic channel to use for ATAK traffic (0-7, default: 0)
- Filter by Channel Index - Only receive messages from the specified channel (default: off)
- Hop Limit - Maximum number of hops for outgoing messages (1-7, default: 3)
- Request ACK - Request delivery acknowledgment, increases channel usage (default: off)
- Limit PLI Reporting Rate - Reduce PLI frequency to conserve mesh bandwidth (default: on)
- PLI Reporting Interval - How often to send position updates (30s to 30min, default: 5min)
- Only Send PLI and Chat - Use optimized protobuf format, recommended for Meshtastic (default: off)
- Send Read/Delivery Receipts - Send delivery and read receipts for chat messages (default: on)
- Show Meshtastic Devices - Display all Meshtastic nodes as markers on the map (default: on)
- Hide Devices Without GPS - Don't show nodes reporting 0,0 coordinates (default: off)
- Hide Local Node - Don't show your own Meshtastic device on map (default: off)
- Relay to Server - Forward messages from Meshtastic to connected TAK servers (default: off)
- Relay from Server - Forward PLI and chat from TAK servers to Meshtastic (default: off)
- Enable File Transfer - Allow sending files via Meshtastic, requires Short_Turbo preset, max 56KB (default: off)
- Text to Speech - Read incoming Meshtastic text messages aloud (default: off)
- PTT KeyCode - Hardware button code for voice memo recording (default: 79)
- Use Meshtastic GPS - Use Meshtastic device GPS as ATAK's external GPS source (default: off)
- Enable Extra Encryption - Encrypt all outgoing messages with AES-256-GCM using PSK (default: off)
- Encryption PSK - Pre-shared key for encryption, all users must have the same key
To use your Meshtastic device as ATAK's GPS source:
- Meshtastic device with GPS receiver (e.g., LILYGO T-Beam)
- GPS enabled and configured on Meshtastic device
- Position packets configured in Meshtastic settings
- Navigate to Settings → Callsign and Device Preferences → Device Preferences → GPS Preferences
- Set GPS Option to "Ignore internal GPS / Use External or Network GPS Only"
- Enable Use Meshtastic GPS in plugin settings
- Disable Show Meshtastic Devices to avoid duplicate markers
The Voice Memo tool allows hands-free message transmission:
- Access via Meshtastic Plugin Tool Menu → Voice Memo
- Press and hold configured PTT button to record
- Release to convert speech to text and transmit
- Recipients with TTS enabled will hear the message
Note: Currently supports English only, powered by Vosk speech recognition library.
- MeshServiceManager - Handles connection and communication with Meshtastic Android app
- CotEventProcessor - Processes and converts between CoT and Meshtastic formats
- FountainChunkManager - Manages fountain code encoding for large data transfers
- NotificationHelper - Handles user notifications for file transfers
- CoT events from ATAK are intercepted by the plugin
- Events are processed and converted to Meshtastic protobuf format
- Large messages (>231 bytes) are encoded using fountain codes (LT codes)
- Packets are sent via IMeshService to connected Meshtastic device
- Incoming Meshtastic packets are converted back to CoT format
- CoT events are injected into ATAK's event dispatcher
- Position Location Information (PLI)
- GeoChat messages (All Chat Rooms and Direct Messages)
- Sensor data from Meshtastic nodes
- Generic CoT events (with EXI compression)
- Fountain code encoding for reliable large payload transfer over lossy networks
- EXI compression for generic CoT events
- Optimized protobuf for PLI and chat messages
- Configurable hop limits for network reach control
- Android Studio Arctic Fox or later
- Android SDK 33
- Android NDK
- ATAK SDK (CIV or MIL)
# Clone the repository
git clone --recurse-submodules https://github.com/meshtastic/ATAK-Plugin.git
cd ATAK-Plugin
# Configure local.properties with SDK paths and signing keys
cp local.properties.example local.properties
# Edit local.properties with your configuration
# Build the plugin
./gradlew assembleCivDebug
# Output APK will be in app/build/outputs/apk/For a comprehensive demonstration of features and setup, watch our video walkthrough.
Plugin not connecting to Meshtastic:
- Ensure Meshtastic app is installed and running
- Check that Meshtastic device is paired and connected
- Verify plugin has necessary permissions
Messages not being received:
- Confirm channel settings match between devices
- Check hop limit is sufficient for your network
- Verify nodes are within radio range
GPS not working:
- Ensure Meshtastic device has GPS fix
- Verify position packets are enabled in Meshtastic
- Check ATAK GPS settings are configured for external GPS
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
See CONTRIBUTING.md for detailed guidelines.
- Issues: GitHub Issues
- Discussions: Meshtastic Discord
- Documentation: Meshtastic Docs
See the LICENSE file for details.
- ATAK development team at TAK.gov
- Meshtastic community and contributors
- Vosk speech recognition library
- EXIficient compression library
See CHANGELOG.md for version history and release notes.