Repository navigation
wadamesh beta_65 (stable)
This is now the stable release. It supersedes beta_63 and covers everything from beta_64 and beta_65.
Flash it at flasher.wadamesh.com, or on-device via Settings → Firmware.
The Heltec V4 freeze, properly this time
V4 units that froze whenever a new contact arrived are fixed, and both reporters have confirmed it on their own devices. beta_62 moved one storage delete off the packet path, which helped but left the larger half in place.
A contact record is 152 bytes and the table holds up to 2000 of them, so saving contacts rewrote the entire 304 KB file on every change, and the crash-safe write keeps a second copy of the same size beside it during the swap. Roughly 600 KB of flash churn because one contact changed. On a card-less board that lands on internal flash, whose garbage collection suspends the flash cache and stalls both CPU cores. That is why the whole device went away rather than dropping a packet.
But the table never changes in bulk: replacing the oldest contact overwrites one slot, and hearing from a known node touches one entry. So each record is now compared against what is stored and only the differences are written back. A new contact replacing an old one writes 152 bytes instead of 304,000, and a save with nothing to change writes nothing at all. Every patched record is read back and compared, and on any disagreement the firmware falls through to the old whole-file write, so your contact list cannot end up half-written by the new path.
Thanks to @Yoss101 and @pisti87 — and particularly to @Yoss101 for coming back to say a first fix had only half worked, which is the report that found the rest of it.
Apps can do much more, and now ask permission
Lua apps gained the real date and time, the buzzer, battery state, GPS position, a scoped and rate-limited private folder each, hardware key presses, and the ability to send mesh messages and receive replies (#245).
Anything reaching outside an app asks you first, per app, once. Sending and receiving are separate permissions, so granting one does not grant the other, and a refusal is remembered rather than nagged. New page: Settings → App permissions, listing every installed app and what it may do, with a switch to take any of it back. The extended toolkit is limited to boards with the memory to carry it, so the Heltec V4 keeps its resources for the mesh.
If you tried to write a Lua app and gave up, try again. The SDK page was wrong about the very first thing an app does: it said to define callbacks as globals named on_start/on_stop, which the firmware has never called. An app is a table you build and return, with on_open, on_tick, on_input, on_message, on_close. The old example produced an app where nothing ran and nothing was reported. The page is corrected and now documents all of the above. An SDK Test app in the Store checks every call on your own board.
Share your position without broadcasting it
An advert broadcasts your position in the clear to every node in range. You can now instead answer on request, encrypted to the contact that asked, and only for contacts you chose: Settings → Radio & Mesh → "Share my location when asked" (Never / Chosen contacts only / Anyone who asks), with the per-contact grant in each contact's own menu. No protocol change, so it interoperates with the MeshCore app. Requested by @janmashat (#266).
Fixes
- Accented and non-Latin characters showed as empty boxes in the grey hint text of empty fields — the Wi-Fi password box, the MQTT bridge fields, ~two dozen others. Fixed everywhere, in every language.
- A translated line whose placeholders do not match the English original is now ignored rather than used. Since language files download from the Store, this closes off a whole class of crash, including in files you write yourself.
- Channel messages could be silently dropped when an unused channel slot matched first; sends also match by name at transmission, so a message can no longer go out encrypted to the wrong channel.
- Updating no longer strands the device on "LoRa radio not detected" on boards where the radio sits behind a peripheral power switch.
- Leaving an app by the back arrow no longer also opens the status bar dropdown.
- The Store no longer jumps back to the top while you scroll it.
- The app and language Store is served from a path nothing was publishing to, so translations lagged and a published app never appeared. Fixed and current.
- "Overwrite oldest" now says plainly that favourites are never overwritten (#178).
- A companion app can opt into the full radio log over Bluetooth (#256).
- More of the interface is translatable (#257).
Community
Pager keyboard shortcuts, portrait layout fixes, a theme-matching Wi-Fi icon and Heltec UI tweaks — @oumike, #263. Thanks also to @pisti87 for the 2048 app now in the Store, and for finding the last field that still showed boxes.
Boards: Heltec V4 TFT · Heltec V4-R8 TFT · LilyGo T-Deck · T-Lora Pager (LR1121 / SX1262) · ThinkNode M9 · RAK TAP v2 · Attaky Mesh Series · LilyGo T-Display P4 (AMOLED + LCD).
Use -merged.bin for a fresh install at offset 0x0; the plain .bin is the app-only image for OTA and the Launcher.