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 chunked data transmission
- 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
- Optimized chunking for large data transfers
- 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)
- Allow SWITCH Command - Enable remote switching to Short/Fast mode for file transfers
- 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
- ChunkManager - Manages chunked data transmission for large files
- 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
- Data is chunked if necessary (>236 bytes)
- 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)
- Chunked transmission for large payloads
- EXI compression for generic CoT events
- Optimized protobuf for PLI and chat messages
- Configurable hop limits and retry mechanisms
- 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.