MeshCore Signal Tester
Monitoring / Management StableWeb and Android signal-analysis tool for MeshCore companions and repeaters, with grouped packet reception, RSSI/SNR history, repeater statistics, GPS-tagged 3D mapping and CSV capture.
- Maintainer
- Aleš Janda ↗
- Kind
- Monitoring & Management
- Maturity
- Stable
- Languages
- JavaScript Kotlin
- Licensing
- Open source
- Latest version
- 1.2.3 · 2026-07-10
- License
- MIT
- Platforms
- Web Android
Screenshots
Capabilities
Interfaces
- ✓ Web
- ✓ Mobile
Connections
- ✓ BLE
- ✓ Serial
- ✓ USB
- ✓ TCP
Capabilities
- ✓ Monitoring
- ✓ Telemetry
- ✓ Packet analysis
- ✓ Mapping
Node role
- ✓ Companion
- ✓ Repeater
Install
Releases
from GitHub · updated 2026-07-10v1.2.3 # Latest 10 days ago · 2026-07-10 15:51 UTC
Added
- Tap a point in a 2D chart to open that packet in the Received Packets table.
Changed
- 2D charts now follow live data while zoomed in — during measurement a zoomed SNR/RSSI chart keeps up with new packets at the right edge and stays within the recorded time range, instead of drifting onto old or empty time.
- The 2D-chart tooltip shows the time down to the millisecond and the packet type, plus how many receptions a clustered point stands for.
- Smoother, steadier 3D-map clustering — points no longer flicker or shuffle as you move or zoom the camera, more individual points are shown when you zoom into a sparse area, and points appear right after zooming in.
- Received Packets columns are ordered by recent activity — the most active repeaters lead, and columns with nothing in the newest packets no longer jump to the front (noticeable right after loading saved data).
- CSV export shows the saved file's size, and the notification's speaker icon appears as "(🔊)" when sound is set to "Disconnect only".
Fixed
- The 3D-map show/hide (eye) button now works for repeaters that share an ID prefix (collision columns).
- No more duplicate rows for the same repeater when it is seen at different ID lengths over a long run.
- The Received Packets table no longer clears when you open certain repeater columns.
- Seen Repeaters no longer scrolls on its own — it jumps to a repeater only when you select it.
- The "Load previously captured data?" prompt reliably appears when you reopen the app with saved data.
- "Show all repeaters" now works for loaded or long-running sessions — it places every known repeater that has a position, not only the ones that sent a packet in the recent in-memory window (previously it could do nothing even though each repeater still appeared when clicked individually).
- No more burst of queued beeps when you return to the app after it was in the background — per-packet sounds keep playing while the phone still allows audio, but once it suspends audio in the background they're skipped instead of piling up and all playing at once on return.
Internal
- Unit test suite (
node --test, 84 tests) covering CSV round-trips, the spatial index, tile/geo math, serial framing, repeater ID collision handling, the 3D-map LOD pyramid, and the chart zoom window — run automatically by a new GitHub Actions workflow on every push. - Several self-contained pieces of logic were extracted from
app.jsinto pure, tested modules:column-key.js(repeater ID prefix/collision semantics),frame.js(serial frame extraction),geo.js(map tile math),maplod.js(3D-map level-of-detail pyramid), andchart-zoom.js(live-follow zoom window). - Headless-browser regression harness (
tools/browser-check) that drives the real page in Chromium — imports a CSV and asserts the stats, column order, and "Show all repeaters" behave; used before every build.
v1.2.2 # 23 days ago · 2026-06-27 14:23 UTC
Added
- Import multiple CSV files at once — select several files and they're merged in a single import.
- 3D map keeps loading tiles while "Center on me" follows you — only while the map is on-screen and the app is in the foreground, to save data.
- Auto-reconnect after Bluetooth returns (for example after leaving airplane mode).
Changed
- Android 15 support with true edge-to-edge — the dark border around the UI is gone; content runs to the screen edges and stays scrollable to the very top.
- Android app package renamed to
cz.kyblsoft.meshcore.signaltester. It installs as a new app — the previous build is not replaced.
Fixed
- "Connected but no packets" after airplane mode — Bluetooth turning off is now detected as a disconnect instead of leaving the app stuck "connected".
- Tables no longer go blank after long runs — Seen Repeaters and Received Packets are restored from disk once old data ages out of memory.
- 3D map repeater icons are now correctly hidden behind signal balls in front of them, plus various other UI and chart fixes and polish.
Internal
- The
usb-serial-for-androidlibrary is vendored and built from source (no JitPack); the build is reproducible with pinned tooling and dependency checksum verification, and a CI workflow builds and lints the app on every change.
v1.2.1 # 28 days ago · 2026-06-22 15:32 UTC
Added
- Auto-reconnect — an optional toggle that automatically retries the last device after an unexpected drop, before the disconnect alarm. Shown only where it can actually work (not for Bluetooth in a mobile browser).
- Nicer packet sound — a pleasant bell whose pitch still tracks signal strength, plus a new "disconnect only" sound mode. The disconnect alarm now sounds on every unexpected drop.
Changed
- Location now starts automatically when you connect (Android) — no need to tap the 3D map's "Enable location" button anymore.
- Steadier location on the 3D map — occasional GPS jumps (sudden ~200 m hops) are filtered out.
- 3D map zooms in to street level even on large maps, and deep zoom is smoother.
- 3D camera framing — "Center on me" no longer jerks at the end of its move, and repeaters are framed with a little headroom above them.
Fixed
- 2D charts could stop updating with Display set to All, until you switched the Display window and back.
- Help (?) tooltips could appear away from their icon.
- Seen Repeaters now shows the true last RSSI/SNR, not a rounded/averaged value.
- Received Packets always lists every repeater as a column, not only the ones on the current page.
- 3D map selection no longer clears itself on its own.
- 3D map tiles no longer flicker while panning or zooming.
- Footer text now has proper contrast in light mode.
Project signals
popularity 2026-07-20 verification 2026-07-20
- GitHub stars
- 13
- Forks
- 1
- Watchers
- 1
- Open issues
- 0
- Contributors
- 2
- Release downloads
- 114
- Latest downloads
- 21
- Source available
- Yes
- Releases available
- Yes
- Signed releases
- No
- CI builds
- Yes
- Documentation
- Yes
- The Android app adds background capture and raw TCP connections to WiFi companion firmware.
- Browser Bluetooth and serial support depends on the browser and platform.