A Flutter-based Android application for mapping MeshCore mesh network coverage in real-time.
Latest Release: Download from Releases Repository
- Real-time GPS tracking with foreground service
- USB and Bluetooth connectivity for MeshCore companion radios
- Auto-ping functionality with configurable intervals (50m, 200m, 0.5 miles, 1 mile)
- Manual ping testing
- Success rate based coverage visualization with color coding
- Clickable coverage squares showing detailed statistics
- Repeater discovery and tracking
- Per-repeater coverage filtering
- Coverage gap finder for identifying dead zones
- Data export to JSON, CSV, GPX, and KML
- Share coverage map screenshots with stats
- Web map upload functionality (multi-site)
- Route trail with color-coded path
- Session history with notes and replay
- Offline map tile caching
- Heatmap overlay visualization
- Signal trend charts (RSSI, SNR, response time)
- Live speed display
- Repeater response time tracking
- Color blind accessibility modes
- Debug terminal with logging
- Light/Dark theme support
- Flutter SDK (3.10.0 or higher)
- Android Studio or VS Code with Flutter extensions
- Android SDK with API level 21+
- A MeshCore companion radio device (for testing)
- Clone this repository:
git clone https://github.com/mintylinux/Meshcore-Wardrive-Android-Source.git
cd meshcore_wardrive- Install dependencies:
flutter pub get- Generate app icons:
flutter pub run flutter_launcher_icons- Run on connected device:
flutter runflutter build apk --releaseThe APK will be located at: build/app/outputs/flutter-apk/app-release.apk
lib/
βββ main.dart # App entry point
βββ constants/
β βββ app_version.dart # Version constant
βββ models/
β βββ models.dart # Data models (Sample, Coverage, Repeater, WSession)
βββ screens/
β βββ map_screen.dart # Main map interface
β βββ debug_log_screen.dart # Debug terminal
β βββ debug_diagnostics_screen.dart # Advanced diagnostics
β βββ session_history_screen.dart # Session history viewer
β βββ signal_trend_screen.dart # Signal trend charts
βββ services/
β βββ location_service.dart # GPS tracking & auto-ping
β βββ lora_companion_service.dart # LoRa device communication
β βββ database_service.dart # SQLite database
β βββ aggregation_service.dart # Coverage calculation
β βββ upload_service.dart # Web map upload
β βββ settings_service.dart # User preferences
β βββ meshcore_protocol.dart # Protocol implementation
β βββ debug_log_service.dart # Debug logging
β βββ persistent_debug_logger.dart # Persistent log storage
βββ utils/
βββ geohash_utils.dart # Geohash utilities
βββ color_blind_palette.dart # Accessible color schemes
Default ping interval can be changed in lib/services/location_service.dart:
double _pingIntervalMeters = 805.0; // 0.5 milesGrid size is set in lib/utils/geohash_utils.dart:
static String coverageKey(double lat, double lon) {
return geohash.GeoHash.encode(lat, lon, precision: 6); // ~1.2km x 610m
}Timeout for ping responses in lib/services/location_service.dart:
timeoutSeconds: 20, // 20 second timeout- LoRa Companion Guide - Device setup and connectivity
- MeshCore Auth Setup - Authentication configuration
- Quick Start - Getting started guide
Run tests with:
flutter testKey packages:
flutter_map- Map displayflutter_map_cache- Offline tile cachingflutter_map_heatmap- Heatmap overlayfl_chart- Signal trend chartsgeolocator- GPS trackingflutter_foreground_task- Background serviceusb_serial- USB connectivityflutter_blue_plus- Bluetooth connectivitysqflite- Local databasegeohash_plus- Geohash encodingpointycastle- Encryptionshare_plus- Share screenshots & exportsscreenshot/saver_gallery- Screenshot capture
See pubspec.yaml for complete list.
- Some Android devices may require "Location Always" permission for background tracking
- USB connectivity requires OTG cable and data-capable cable
- #meshwar channel must be joined in MeshCore app before first use
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes with co-author line:
git commit -m "Add amazing feature Co-Authored-By: Your Name <your.email@example.com>" - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Built for the MeshCore mesh networking community.
For issues and questions:
- Open an issue on GitHub
- Check existing documentation in the repository
Current Version: 1.0.30
Minimum Android Version: Android 5.0 (API 21)