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 which Meshtastic channel to use (0-7, default: 0)
- Meshtastic Hop Limit - Set maximum hop count for messages (1-8, default: 3)
- Request ACK - Request acknowledgment for outgoing messages
- Show All Meshtastic Devices - Display all Meshtastic nodes as sensor markers on map
- Do Not Show Devices Without GPS - Hide nodes reporting 0,0 coordinates
- Do Not Show Your Local Node - Hide your own Meshtastic device from map
- Enable Relay to Server - Forward CoT events (except DMs) to connected TAK servers
- Enable Relay from Server - Forward PLI and chat messages from TAK servers to mesh
- Only Send PLI and Chat - Use optimized protobuf format (no EXI compression)
- Use Text to Speech - Read incoming Meshtastic text messages aloud
- PTT KeyCode - Configure hardware button for voice memo recording
- Use Meshtastic GPS as External GPS - Use Meshtastic device's GPS for ATAK positioning
- Enable Reporting Rate Controls - Override ATAK's position reporting interval
- Reporting Rate - Set position update interval (1, 5, 10, 20, or 30 minutes)
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 as External GPS in plugin settings
- Disable Show All 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.