{"id":32471193,"url":"https://github.com/meshtastic/pluginmeshtastic","last_synced_at":"2025-10-26T16:55:34.368Z","repository":{"id":315439502,"uuid":"1057413868","full_name":"meshtastic/pluginmeshtastic","owner":"meshtastic","description":"A standalone Meshtastic plugin for ATAK","archived":false,"fork":false,"pushed_at":"2025-09-18T19:33:01.000Z","size":2971,"stargazers_count":6,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-10-23T00:30:46.285Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/meshtastic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-15T17:35:47.000Z","updated_at":"2025-10-17T15:18:49.000Z","dependencies_parsed_at":"2025-09-18T17:29:10.891Z","dependency_job_id":"18532c39-455b-4e5a-ae99-a79875696e85","html_url":"https://github.com/meshtastic/pluginmeshtastic","commit_stats":null,"previous_names":["meshtastic/pluginmeshtastic"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/meshtastic/pluginmeshtastic","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meshtastic%2Fpluginmeshtastic","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meshtastic%2Fpluginmeshtastic/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meshtastic%2Fpluginmeshtastic/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meshtastic%2Fpluginmeshtastic/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/meshtastic","download_url":"https://codeload.github.com/meshtastic/pluginmeshtastic/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meshtastic%2Fpluginmeshtastic/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281139028,"owners_count":26450137,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-26T02:00:06.575Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-10-26T16:55:33.435Z","updated_at":"2025-10-26T16:55:34.363Z","avatar_url":"https://github.com/meshtastic.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Meshtastic ATAK Plugin\n\nA comprehensive Android Team Awareness Kit (ATAK) plugin that seamlessly integrates Meshtastic mesh networking devices for tactical communications and situational awareness.\n\n## Overview\n\nThis plugin bridges ATAK with Meshtastic devices, enabling secure, decentralized communications over long-range LoRa radio networks. It provides automatic device configuration, intuitive connection management, and robust message handling for tactical operations.\n\n## Key Features\n\n### 🚀 **One-Click Setup \u0026 Auto-Configuration**\n- **Automatic TAK Optimization**: Intelligently configures your Meshtastic device for optimal ATAK operation\n- **Tactical Settings**: Automatically applies covert, radio-silent settings including:\n  - TAK role configuration\n  - LOCAL_ONLY rebroadcast mode\n  - SHORT_TURBO modem preset for fast data transmission\n  - Disables position broadcasts, telemetry, and MQTT for stealth operations\n  - Power-saving configuration with appropriate wake settings\n- **Smart Channel Management**: Generates secure PSK from user-provided passwords\n- **Minimal User Input Required**: Simply pair your device via Bluetooth and set a channel password\n\n### 📡 **Advanced Connectivity**\n- **Multi-Interface Support**: Bluetooth LE and USB Serial connections\n- **Auto-Reconnection**: Automatically reconnects to previously paired devices\n- **Connection Persistence**: Remembers device preferences across app restarts\n- **Real-Time Status Monitoring**: Live RSSI readings and connection health indicators\n\n### 🔧 **Comprehensive Device Management**\n- **Device Discovery**: Intelligent Bluetooth scanning with Meshtastic device detection\n- **Configuration Validation**: Compares current vs. optimal settings before applying changes\n- **Selective Updates**: Only modifies settings that need changing to minimize device disruption\n- **Post-Reboot Handling**: Manages device reboots from critical configuration changes\n\n### 💬 **Robust Message Handling**\n- **Dual Protocol Support**:\n  - **ATAK Plugin Port (72)**: Direct protobuf message transmission\n  - **ATAK Forwarder Port (257)**: Large message chunking and compression\n- **Automatic Chunking**: Handles large messages by splitting into optimal-sized chunks\n- **Queue-Aware Transmission**: Monitors device queue status for efficient sending\n- **Message Acknowledgment**: Full ACK/NACK handling with automatic retries\n- **Error Recovery**: Comprehensive error handling with user-friendly messages\n\n## User Interface\n\nThe plugin features a clean, tabbed interface designed for tactical environments:\n\n### 🔗 **Connection Tab**\n- **Device Scanning**: One-click Bluetooth discovery of nearby Meshtastic devices\n- **Connection Status**: Real-time display of connection state with color-coded indicators\n- **Device List**: Sorted list showing device names, addresses, and signal strength (RSSI)\n- **Quick Actions**: Scan, Connect, and Disconnect buttons with progress indicators\n- **Auto-Detection**: Highlights confirmed Meshtastic devices in the scan results\n\n### 📊 **Status Tab**\n- **Connection Details**: Shows connection type, device address, and current name\n- **Signal Quality**: Live RSSI readings and connection state monitoring\n- **Statistics**: Real-time message counters (sent, received, failed)\n- **Device Information**: Hardware model, firmware version, and region settings\n- **Performance Metrics**: Connection uptime and data throughput\n\n### ⚙️ **Settings Tab**\n- **Channel Security**:\n  - Password-based PSK generation\n  - Secure channel configuration\n  - Persistent password storage using ATAK preferences\n- **Device Metadata**:\n  - Comprehensive device information display\n  - Node ID with hex formatting\n  - GPS capability detection\n  - Device role and region configuration\n\n## Technical Architecture\n\n### Core Components\n\n- **MeshtasticManager**: Central communication handler with connection state management\n- **MeshtasticConfigManager**: Intelligent device configuration with TAK optimization\n- **BluetoothInterface**: BLE communication layer with Nordic BLE library integration\n- **AtakMeshtasticBridge**: High-level message routing and protocol handling\n- **MeshtasticBleScanner**: Advanced device discovery with filtering\n\n### Message Flow\n\n1. **ATAK Plugin Messages (Port 72)**: Direct protobuf transmission for small, time-critical data\n2. **ATAK Forwarder Messages (Port 257)**: Chunked transmission for large payloads with compression\n3. **Automatic Protocol Selection**: Intelligently chooses optimal transmission method\n4. **Queue Management**: Monitors device transmission queue to prevent overruns\n\n### Configuration Intelligence\n\nThe plugin employs a sophisticated configuration strategy:\n\n1. **Current State Analysis**: Reads existing device configuration before making changes\n2. **Selective Modification**: Only updates settings that need optimization\n3. **Phased Deployment**: Handles critical configs that require device reboots\n4. **Validation**: Verifies configuration success and handles failures gracefully\n\n## Installation\n\n1. Install the plugin APK on your ATAK device\n2. Enable the Meshtastic plugin in ATAK's plugin manager\n3. Access via the plugin toolbar or dropdown menu\n\n## Quick Start Guide\n\n### First Time Setup\n\n1. **Pair Your Device**:\n   - Open the Meshtastic plugin\n   - Go to the Connection tab\n   - Tap \"Scan for Devices\"\n   - Select your Meshtastic device from the list\n\n2. **Configure Security**:\n   - Switch to the Settings tab\n   - Enter a secure channel password\n   - Tap \"Save Password\"\n\n3. **Auto-Configuration**:\n   - The plugin automatically applies TAK-optimized settings\n   - Device may reboot during configuration (normal behavior)\n   - Status tab will show \"Connected \u0026 Configured\" when ready\n\n### Daily Use\n\n- Plugin automatically reconnects to your paired device\n- Monitor connection status in the Status tab\n- Send/receive ATAK messages transparently through the mesh network\n- Check signal strength and message statistics as needed\n\n## Advanced Features\n\n### Tactical Configuration\n- **Covert Operations**: Disables all unnecessary broadcasts and telemetry\n- **Power Efficiency**: Optimizes battery life for extended field operations\n- **Local-Only Mode**: Prevents message forwarding beyond immediate mesh\n- **Custom PSK**: Uses AES-256 encryption with user-defined passwords\n\n### Message Optimization\n- **Adaptive Chunking**: Automatically splits large messages for reliable transmission\n- **Compression Support**: GZIP compression for efficient bandwidth usage\n- **Queue Awareness**: Monitors device queue status to prevent message loss\n- **Retry Logic**: Intelligent retry mechanisms for failed transmissions\n\n### Device Intelligence\n- **Multi-Device Support**: Remembers multiple paired devices\n- **Firmware Compatibility**: Works across different Meshtastic firmware versions\n- **Region Awareness**: Automatically detects and displays device region settings\n- **Hardware Detection**: Identifies device capabilities and limitations\n\n## Troubleshooting\n\n### Connection Issues\n- Ensure Bluetooth is enabled on your Android device\n- Grant location permissions (required for BLE scanning)\n- Verify your Meshtastic device is powered on and in pairing mode\n- Check that the device isn't connected to another application\n\n### Configuration Problems\n- Allow time for device reboot after configuration changes\n- Verify the channel password matches across all devices in your network\n- Check that your device supports the features being configured\n\n### Message Delivery\n- Monitor signal strength in the Status tab\n- Ensure channel passwords match across all devices\n- Check for duty cycle limitations in your region\n- Verify message sizes are within Meshtastic limits\n\n## Dependencies\n\n- **ATAK-CIV 5.5.0** or later\n- **Android SDK 21+** (Android 5.0+)\n- **Bluetooth LE support** for device connectivity\n- **Nordic BLE library** for reliable Bluetooth communication\n- **Google Protobuf** for message serialization\n\n## Development\n\n### Build Requirements\n- Android Studio with Kotlin support\n- ATAK SDK 5.5.0\n- Gradle 8.8.2+\n- Kotlin 2.1.0+\n\n### Key Libraries\n- `no.nordicsemi.android:ble:2.6.1` - BLE communication\n- `com.github.mik3y:usb-serial-for-android:3.5.1` - USB serial support\n- `com.google.protobuf:protobuf-javalite:3.21.12` - Message serialization\n- `org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3` - Async operations\n\n## License\n\nGPLv3\n\n## Support\n\nFor technical support and feature requests, please refer to the ATAK plugin documentation or contact your system administrator.\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeshtastic%2Fpluginmeshtastic","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmeshtastic%2Fpluginmeshtastic","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeshtastic%2Fpluginmeshtastic/lists"}