MeshCore Wardrive
Tool BetaAndroid coverage-mapping app that pairs GPS tracks with automatic MeshCore repeater pings, visualizes response rates and signal quality, exports survey data and can contribute results to a community web map.
Screenshots
Details
- Kind
- Tools
- Maturity
- Beta
- Maintainer
- mintylinux
- Language
- dart
- Licensing
- Open source
- License
- GPL-3.0-only
- Latest version
- 1.0.40 · 2026-06-09
Capabilities
Platforms
androidweb
Interfaces
MobileWeb
Connections
BLEUSB
Capabilities
MonitoringTelemetryPacket analysisMapping
Node roles
companionrepeater
Install
Releases
from GitHub · updated 2026-06-23v1.0.40 # Latest 15 days ago · 2026-06-09 00:04 UTC
Changelog
v1.0.40 - 2026-06-09
Added
- Device Tracking & Comparison: The app now logs which LoRa companion device (by Bluetooth ID and name) you use for each wardrive session. View all paired devices and their performance stats in the new Device Comparison screen (Settings → Data Management). Compare two devices side-by-side: success rate, fail rate, total pings, unique cells, avg response time, avg SNR, and avg RSSI.
- Dead Zone Alert Toggle: New setting to enable/disable the "Entering known dead zone" notification
- New Repeater Alert Toggle: New setting to enable/disable the new repeater discovery notification
Fixed
- New Repeater Discovery Alert: Now only fires for repeaters that have truly never been seen before in the database. Previously the in-memory set reset on every app restart, causing false "new" alerts. Known repeater IDs are loaded from sample history on startup.
Technical
- Database version 11 → 12: new
devicestable, newdevice_idcolumn on samples LoRaCompanionService: captures connected device ID (BT remoteId for Bluetooth, product name for USB)- All ping samples (distance, time, and carpeater) tagged with
device_id DatabaseService: device CRUD, per-device stats queries (success rate, avg SNR/RSSI/response time, unique cells)- New
device_comparison_screen.dartwith device cards and side-by-side comparison table SettingsService:deadZoneAlertsEnabledandnewRepeaterAlertsEnabledtoggles
v1.0.39 # 16 days ago · 2026-06-08 00:24 UTC
Changelog
v1.0.39 - 2026-06-08
Added
- Multiple Ignore Repeaters: Comma-separated list support for ignoring multiple repeater prefixes at once
- Live Notification Stats: Foreground notification now shows real-time success rate, ping count, and distance (e.g.,
✅ 85% | 📍 247 pings | 🛣️ 12.3mi) - Repeater Contacts in JSON Export: Discovered repeaters now included in unified JSON exports
- Privacy Zones: Define circular exclusion areas on the map — data inside zones is stripped from uploads and exports. Long-press to add, manage via Settings menu
- New Repeater Discovery Alert: Sound + snackbar notification when a never-before-seen repeater is discovered during wardriving
- Dead Zone Alerts: Vibration + snackbar warning when entering a previously-mapped dead zone (throttled to once per cell per session)
- Battery Saver Mode: Automatically doubles ping interval when device battery ≤20%, restores at >30%. Shows orange "🔋 Saver" badge in control panel
- Coverage Redundancy View: New "Redundancy" color mode showing repeater count per cell (green=3+, yellow=2, orange=1)
- Coverage Score: New Score tab in Analytics — single shareable number computed from
uniqueCells × successRate × freshnesswith letter grade (S/A/B/C/D) - Wardrive Achievements: 14 milestone badges (First Ping, Kilopinger, Road Warrior, Mesh Master, etc.) with unlock notifications and dedicated Achievements screen
- Repeater Downtime Detection: Repeater Health screen now flags repeaters not seen in 7+ days (with 10+ total pings) with offline icon and day count
- Quick Settings Gesture: Double-tap the tracking FAB to show a floating overlay with ping distance, timeout, and mode dropdowns for quick adjustments
Technical
- Database version 10 → 11: new
privacy_zonestable - New
achievement_service.dartwith SharedPreferences-based badge tracking - New
achievements_screen.dartwith progress bar and unlock history - Added
battery_plusdependency for device battery monitoring DatabaseService: addedisDeadZoneCell(), privacy zone CRUD, export with repeatersLocationService: dead zone stream, battery saver stream, battery monitoring lifecycleAggregationService: newredundancycolor mode branch- Analytics: new Coverage Score tab with share button, 5-tab bottom nav
- Repeater Health:
isOffline/daysSinceSeenfields, offline badge in app bar
v1.0.38 # 2 months ago · 2026-04-28 23:08 UTC
Changelog
v1.0.38 - 2026-04-28
Added
- Planned Repeater Markers: Long-press anywhere on the map to place a marker for a potential repeater location. Add an optional label, tap to view details or delete. Markers persist in the database.
- Delete Mode: Remove bad data before uploading. Activate from Data Management menu, then tap a coverage square to delete all samples in that cell, or tap individual sample dots to remove one at a time. Red banner shows when active.
- Planned Repeaters menu entry: Shows marker count with option to clear all markers
Fixed
- Show Successful Pings Only toggle: Was incorrectly writing to map rotation setting instead of the filter. Now works correctly and persists across restarts.
Technical
- Database version 9 → 10: new
planned_markerstable DatabaseService: added marker CRUD methods,deleteSample(),deleteSamplesByGeohash()SettingsService: addedshowSuccessfulOnlypersistence + export key- Map long-press handler for marker placement
- Delete mode routing in sample and coverage tap handlers
Project signals
popularity 2026-06-23 verification 2026-06-23
- GitHub stars
- 92
- Forks
- 9
- Watchers
- 1
- Open issues
- 10
- Contributors
- 2
- Release downloads
- 3,712
- Latest downloads
- 257
- Source available
- Yes
- Releases available
- Yes
- Signed releases
- No
- CI builds
- No
- Documentation
- Yes
- Application releases and GPL-3.0 source code are maintained in separate GitHub repositories.
- GPS survey data remains local unless the operator explicitly uploads it to the community map.