MeshCore Wardrive

February 13, 2026 ยท View on GitHub

A Flutter-based Android application for mapping MeshCore mesh network coverage in real-time.

Source Code: Meshcore-Wardrive-Android-Source

๐Ÿš€ Quick Start

  1. Download the APK from the releases folder
  2. Enable "Install from Unknown Sources" in your Android settings
  3. Install the APK on your device
  4. Connect your LoRa device via USB or Bluetooth
  5. Start wardriving!

โœจ Features

Mobile App

  • Real-time GPS Tracking - Background support with screen-lock capability
  • LoRa Device Support - Connect via USB or Bluetooth to MeshCore companion radios
  • Auto-Ping Mode - Configurable intervals from 50 meters to 1 mile
  • Manual Ping - Test coverage at specific locations
  • Success Rate Visualization - Color-coded coverage map:
    • ๐ŸŸข Green (โ‰ฅ80%): Very reliable coverage
    • ๐ŸŸข Yellow-Green (50-80%): Usually works
    • ๐ŸŸก Yellow (30-50%): Spotty coverage
    • ๐ŸŸ  Orange (10-30%): Rarely works
    • ๐Ÿ”ด Red (<10%): Dead zone
  • Repeater Discovery - See which repeaters are in range
  • Data Export - Save and share your wardrive data
  • Web Map Upload - Contribute to community coverage map

Web Map

View the live community coverage map at: https://meshwar-map.pages.dev

  • Interactive coverage visualization
  • Success rate analytics per grid square
  • Repeater tracking
  • Real-time updates every 30 seconds

๐Ÿ“‹ Requirements

  • Android device with GPS
  • MeshCore companion radio device

๐ŸŽฏ How It Works

  1. The app connects to your MeshCore companion radio
  2. Repeaters that hear your ping respond with an echo
  3. The app records which repeaters responded and their signal quality
  4. Coverage is visualized as colored grid squares (~1.2km x 610m)
  5. Data can be uploaded to the web map for community viewing

๐Ÿ”ง Configuration

Adjustable Settings

  • Ping Interval: 50m, 200m, 0.5 miles, or 1 mile
  • Ignore Mobile Repeater: Filter out your own mobile repeater by prefix
  • Map Theme: Light or dark mode
  • Color Mode: Quality (signal strength) or Age (data freshness)

Default Settings

  • Ping interval: 0.5 miles (805 meters)
  • Grid size: ~1.2km x 610m squares (precision 6)
  • GPS accuracy: High
  • Update frequency: Every 5 meters of movement

๐ŸŽจ Understanding the Map

Grid Squares show coverage quality based on success rate:

  • Multiple users' pings are aggregated per square
  • Color shows: successful pings / total pings
  • More samples = more accurate representation
  • Gray squares = no ping data (GPS tracking only)

Each square popup shows:

  • Number of samples collected
  • Success rate percentage
  • Received vs. lost pings
  • Number of repeaters heard
  • Repeater IDs (first 2 characters)

๐Ÿ“– Usage Tips

  1. Connect Device: Use USB for most reliable connection
  2. Enable Tracking: Press green play button to start GPS tracking
  3. Enable Auto-Ping: Toggle the switch to auto-ping while driving
  4. Manual Testing: Use manual ping button to test specific locations
  5. Upload Data: Share your findings via Settings โ†’ Upload Data

๐Ÿ› Troubleshooting

Location not updating?

  • Check GPS permissions are granted
  • Enable "Location Always" for background tracking
  • Press the manual location button to refresh

Can't connect to device?

  • Check USB cable supports data transfer (not just charging)
  • For Bluetooth: Make sure device is paired in Android settings first
  • Try disconnecting and reconnecting

No repeater responses?

  • Verify you're in an area with repeater coverage
  • Check LoRa device is connected (icon in app)
  • Try manual ping to test connection

๐Ÿ“Š Statistics

The top panel shows:

  • Total Samples: Number of pings collected
  • Total Repeaters Heard: Unique repeaters across entire map
  • Last Update: When data was last refreshed

๐Ÿ” Privacy

  • GPS data is only stored locally on your device
  • Only uploaded to web map when you explicitly choose to upload
  • No personal information is collected or transmitted
  • Repeater IDs are shortened to first 2 characters on web map

๐Ÿค Contributing to Coverage

Help build the community coverage map:

  1. Wardrive your local area
  2. Open Settings โ†’ Upload Data
  3. Your samples contribute to the global success rate statistics

The more users contribute, the more accurate the coverage map becomes!

๐Ÿ†˜ Support

For issues, questions, or feature requests:

  • Open an issue on GitHub
  • Check existing issues for solutions

๐Ÿ› ๏ธ Development

For developers who want to build from source, see the source code repository which includes:

  • Complete Flutter project structure
  • Development setup instructions
  • Build configuration
  • Architecture documentation
  • Contributing guidelines

๐Ÿ“„ License

[Specify your license here]

๐Ÿ™ Credits

Built for the MeshCore mesh networking community.

๐Ÿ“ง Support

For issues and questions:

  • Open an issue on GitHub
  • Check existing documentation in the repository

Current Version: 1.0.27

Minimum Android Version: Android 5.0 (API 21)

Happy Wardriving! ๐Ÿš—๐Ÿ“ก