尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
MeshSonar: open-source MeshCore coverage mapping for iPhone and iPad. Drive, ping, see which repeaters hear you. Community map at meshsonar.com.
翻譯準備中
正在載入完整 README。
檢視完整 README ↗Drive. Ping. See who hears you. Open-source coverage mapping for MeshCore LoRa mesh radios, for iPhone and iPad.
MeshSonar turns your MeshCore companion radio into a coverage survey tool. While you drive, it sends a short ping through your radio, listens for every repeater that echoes it, and records where the ping went and how strong the signal was (SNR). The drive lands on a live map, in a drive report, and on the shared community map at meshsonar.com, so everyone can see where the mesh actually reaches and where it does not.
No account. No sign-up. Open the app and it creates its own driver key.
Screenshots are from a debug build with the built-in simulator (no radio, simulated GPS); release builds always use your real radio and GPS.
Survey
MS: and 10 random characters.See
Own your radios
Open and private by design
flowchart LR
P["📱 MeshSonar app<br/>GPS + drive logic"] <-- Bluetooth --> R["📻 Your MeshCore radio"]
R -. "ping (LoRa)" .-> T["📡 Repeaters"]
T -. "echo + SNR" .-> R
P -- "drives, retry-safe" --> S["☁️ meshsonar.com<br/>community map"]
O["👁 Observers"] -. "adverts, packets" .-> S
#wardriving) through your radio.You also need a MeshCore companion radio (Bluetooth) and, to cover ground, a car.
flutter pub get
flutter analyze
flutter test # unit, widget, contract and end-to-end tests
flutter build ios --release # needs your own Apple team: see docs/DEVELOPMENT.md
Your Apple team ID goes in the untracked ios/Flutter/Signing.xcconfig; nothing secret is committed. Use
xcrun devicectl device install app to put a build on a phone (never flutter install: it wipes on-device drives).
Some contract tests run the real website endpoint code when a checkout of the website repo is available, and skip
otherwise. Full details are in docs/DEVELOPMENT.md.
| Document | What is in it |
|---|---|
| ARCHITECTURE | Layers and dependency rules, a drive end to end, state, timers, the save-first rule |
| PROTOCOL | The MeshCore companion protocol as implemented: BLE, frames, channel crypto, ping text, echo recognition, claims |
| DATA_MODEL | Every record field with units, on-device storage, crash recovery, export format, sync rules |
| FEATURES | Every screen and behaviour rule |
| DEVELOPMENT | Mac set-up, signing, installing on a phone, running every kind of test, release checklist |
| TESTING | What each test file covers and how to run subsets |
| APP_STORE | App Store and TestFlight answers: privacy, review notes, encryption |
| PORTING | Reusable code, platform seams, and a rewrite guide for other platforms |
| REGIONS_AT_SCALE | How the app copes with hundreds of regions |
| CHANGELOG · ROADMAP | What changed, and what is next |
Code lives in lib/core (model, store, server client, sync; pure Dart), lib/radio (MeshCore protocol, wardrive
engine, Bluetooth), lib/app (state and wiring) and lib/ui (screens, map, report). Contributors and coding agents:
start with AGENTS.md.
MeshSonar is built for the MeshCore community and shares the idea of crowd-sourced coverage with MeshMapper; the two projects are independent. Map data © OpenStreetMap contributors; repeater positions from MeshCore Map; weather from Open-Meteo. Ported and adapted code from the MeshCore firmware, the MeshMapper web client and MeshCore Open is credited in THIRD_PARTY_NOTICES.md.
MIT. Bluetooth uses flutter_reactive_ble (BSD-3-Clause), so there is no paid licence to carry.