A Flutter mobile and desktop app for monitoring and controlling a Rivr LoRa mesh network.
- Chat — multi-channel messaging (Global, Ops, Local, Emergency, Sensor, and custom channels); send and receive
PKT_CHATframes over the mesh - Nodes — live view of neighbour nodes with RSSI, SNR, hop count, link score, and role
- Network Map — geographic mesh map with GPS markers for nodes that report a position; haversine distance between nodes
- Diagnostics — real-time
PKT_METRICScounter display and@SUPPORTPACKcapture - Settings — connection management, callsign, node GPS position (set/clear), dark mode, and advanced controls
The companion app connects to a Rivr node via:
- USB serial (Android, Linux, Windows) — direct UART at 115 200 baud
- Bluetooth LE — wireless connection to a BLE-enabled node
| Tool | Minimum version |
|---|---|
| Flutter SDK | 3.22.0 |
| Dart SDK | 3.3.0 |
| Android SDK / Xcode | as required by your target platform |
cd rivr_companion
flutter pub get
flutter run| Platform | Status |
|---|---|
| Android | Supported (USB + BLE) |
| Linux | Supported (USB serial) |
| Windows | Supported (USB serial) |
| iOS | Planned |
| macOS | Planned |
- Flash a Rivr client node (see FLASHING.md)
- Open the app and tap Settings → Connect
- Select USB Serial or Bluetooth LE
- The app will negotiate the connection and begin streaming metrics
Tap Diagnostics → Export Supportpack to capture a @SUPPORTPACK JSON block,
then attach it to your issue at github.com/MichTronics/Rivr/issues.