Test build. Stable stays beta_65.
Flash it at flasher.wadamesh.com with the Beta toggle on, or on-device via Settings → Firmware with "Get test builds (beta)" enabled.
⚠️ App developers and testers: this is the build to hammer
The Lua SDK gained the ability to hold a whole conversation, and it is the least-proven part of this release. It builds on all ten images and has not been exercised on hardware — I would rather say that plainly than have you find out.
wada.mesh.send_dm(to, text) -- ok, "sent" | "room" | err (contact NAME, a room is a contact)
wada.mesh.channels() -- names of the channels configured on this device
app.on_message(m) -- m.kind = "channel" | "dm" | "room"
wada.crypto.hmac_sha1(k, m) -- + sha1/sha256/hmac_sha256/hex, on EVERY boardWhat would help most:
- Send a DM from an app and confirm it lands in that contact's thread on the device, not just on the air. This is the highest-consequence call in the SDK: it writes as you.
- Receive a DM and a room post with an app open and check
m.kind. Apps previously only ever got channel messages, because the delivery hook ran before the sender and body were parsed. That is fixed but unverified. - Toggle the four permissions independently in Settings → App permissions and confirm one does not clear another.
- Run SDK Test 1.2 from the Store. Its crypto section checks against published RFC 2202 / 4231 vectors, so a PASS is real evidence rather than "it returned something", and it times 200 HMACs so you can see why this belongs in C.
Permissions went two → four: post to channels as me, read channel messages, send private messages as me, read private messages. Posting to a channel you are already in is not the same act as writing to one person as you, and channel traffic is not your private conversations, so each is granted separately.
Two bugs found while building it. Granting one permission silently revoked another (the grant wrote the whole permission set rather than the one switch) — invisible with one permission, constant with four. And apps could only ever receive channel messages, never DMs or room posts.
wada.crypto exists because Tiamat and Jade hit "instruction budget exceeded" doing HMAC-SHA1 in pure Lua for a one-time-password app. That is a legitimate use of 100k VM instructions, not a runaway: SHA-1 is 80 bit operations per block and the interpreter multiplies each one. mbedTLS is already linked, so it is now microseconds. Deliberately available on every board, including those without the rest of the extended toolkit, since it only computes over data the app already holds.
Full API at wadamesh.com/sdk.html.
ThinkNode M9 and Heltec V4-R8: a large audit pass
@cvhviz, #287, validated on hardware. M9 navigation soft-locks fixed, including a hardware Back key that had stopped working and a permission dialog that could not be answered on a touchless board; "Store data on SD" now honoured, with chat history and the tile cache following it; deep sleep really drops the rails; and terminal, keyboard and update features that had been quietly T-Deck-only were widened.
Spectrum on the M9 now runs to the LR1110's specification: roughly 2× faster per sweep, correct 150–960 MHz clamps, and opening it mid-transmission waits rather than truncating the packet on the air.
V4-R8: chat history and battery log follow SD adoption, the Orientation reboot trap is defused, and a crash when Wi-Fi associated with Bluetooth already on is fixed.
T-Display P4
The battery percentage no longer flickers between 0 and the real value. The gauge shares its bus with several other chips, so a lost reading is normal — the code was treating a failed read as a genuine 0%. It now keeps the last good figure, as the voltage path always did. (Regression from the fuel-gauge change in beta_66.)
Fixes
- Map tile packs in
MAPS/now load. The device creates that folder and the card's own readme names it, but the loader only ever looked for/maps, so following our own instructions could leave the map blank. Reported via @pisti87 for w7aaf (#286). - "Save update bin to SD" appears on every board with a card, instead of a hand-maintained list of three that left the T-Lora Pager out. Reported by @oumike (#289).
- Every screen is fully translated again — 40 strings added across recent releases had never reached the language files (#277). Hungarian by @pisti87.
- The supported-device list finally matches reality: Pager, V4-R8, T-Display P4 and Attaky all ship and none were listed.
Community
M9 and V4-R8 audits by @cvhviz. Hungarian by @pisti87. Thanks to @wb6zsu, who measured the P4 transmit-power fix on a test set and confirmed it, and to Tiamat and Jade, whose OTP app is the reason wada.crypto exists.
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.