All firmwares

Wadamesh

Fork

A touch-UI MeshCore firmware for the LilyGo T-Deck / T-Deck Plus and Heltec V4 TFT (ESP32-S3), built with LVGL. Split out from meshcomod. Provides a full touch-driven companion experience with on-screen keyboard and WiFi connectivity.

Fork of MeshCore (Reference)

Maintainer
ALLFATHER-BV ↗
Status
Active
Maturity
Beta
Lifecycle
Active
Latest version
beta_59
Released
2026-08-04
Runtime
Arduino · C++
Distribution
Community
Licensing
Open source
License
GPL-3.0

Capabilities

Transports

  • BLE
  • USB serial
  • Native TCP
  • Wi-Fi AP

Operations

  • Web flasher
  • OTA updates

Networking

  • Repeater
  • Room server
  • Observer
  • KISS modem

Hardware

  • GPS
  • Display
  • Sensors
  • Low-power RX

Protocol

  • MeshCore compatible

Node role

Companion

Features

  • LVGL touch UI
  • On-screen keyboard
  • WiFi companion connectivity
  • USB + TCP transports
  • Split from meshcomod (same maintainer)

Project signals

popularity 2026-08-05 verification 2026-08-05
GitHub stars
93
Forks
22
Watchers
3
Open issues
51
Contributors
16
Release downloads
3,823
Latest downloads
13
Source available
Yes
Releases available
Yes
CI builds
Yes

Releases

from GitHub · updated 2026-08-04
  1. beta_59 # Latest Pre-release 9 hours ago · 2026-08-04 22:50 UTC

    Test build. Stable stays beta_50.

    The big one: WADAMESH runs apps written in Lua now, installed from a Store on the device and updated over the air without reflashing. The runtime, the API, the Store and the first converted apps all ship together in this tag.

    Flash it from https://flasher.wadamesh.com (flip the Beta toggle), or on-device via Settings → Firmware with "Get test builds (beta)" enabled.


    Lua apps

    An app is a single .lua file. It installs from the Store, appears in the app drawer beside the built-ins, and updates when a newer version lands in the catalog — no firmware flash involved.

    Store lives in the app drawer, with three tabs:

    • Apps — install, update or remove what the catalog offers.
    • Built-in — hide the stock apps you never open, so the drawer holds what you actually reach for. The MQTT bridge is hidden by default now.
    • Languages — download translations (see below).

    RF Monitor and Airtime are Lua apps rather than firmware pages, and they gained things the native versions never had: RF Monitor scrolls the full packet list, Airtime has proper Y-axis labels and a Reset button. Snake is a Lua app too. Removing one really removes it; reinstalling brings it back with your scores intact.

    Write your own. Drop a bare .lua file into /apps/ on the card and it appears in the drawer — no manifest needed. The API is about thirty functions covering the screen, input, read-only mesh data, an HTTP fetch and a little per-app storage.

    📖 API reference: https://wadamesh.com/sdk.html

    Two constraints worth knowing up front. The mesh is read-only in v1 — an app can read contacts, the packet log and radio statistics, but cannot transmit; a buggy or hostile app must not be able to put packets on the air in your name. And http_get is plain HTTP, because after Wi-Fi associates there is not enough internal heap left for a TLS handshake on the smaller boards.

    Languages are files now

    Translations are no longer baked into the firmware. They download from the Store's Languages tab as versioned files, so a translation can be fixed and shipped without waiting for a firmware release — the device offers Update when a newer one exists.

    Every language got a full sweep: roughly 150 strings that had quietly stayed English for months — the channel settings sheets, the message menus, most buttons — are translated across all 13 languages. Settings → Language opens the Languages tab directly, and switching one now tells you it is restarting before it does, instead of rebooting under your finger.

    Heltec V4

    The V4 has 2 MB of PSRAM and very little free internal memory, which made the Store unreliable there. It now ships every language and every catalog app inside the firmware image — the apps are in the drawer on first boot and all 13 languages are already installed. Its Store is a picker rather than a shop.

    Around 17 KB of internal memory reclaimed on the V4, measured step by step: the store and Discover tables moved out of static memory, and the allocator now places ordinary allocations in PSRAM instead of forcing everything under 4 KB into internal RAM.

    Fixes

    • "Save update bin to SD" works again. It failed with "SD write failed" at 1–7% on every T-Deck and had been broken since the feature shipped in beta_36. The download buffer sat in PSRAM, which the SD card cannot reliably DMA from, so the write died partway through at a point that moved with the network. Nothing to do with card size or formatting. Reported by Marshal W7TER, df2080 and Dennis.
    • The same defect is fixed in two places nobody had hit yet: copying any file to the SD card from the Files app, and exporting a crash dump.
    • The Store fits narrow and high-DPI screens. Cards measure their own text instead of assuming two lines, so nothing is cut off and a long title no longer lands on top of the description. This also fixes every board for languages whose tex …
  2. beta_58 # Pre-release 23 hours ago · 2026-08-04 09:08 UTC

    Test build. Stable stays beta_50.

    Update strongly recommended if you ran beta_57 — this fixes the upgrade bug that left devices booting into remote mode with the screen frozen on the boot logo.

    Flash it from https://flasher.wadamesh.com (flip the Beta toggle), or on-device via Settings → Firmware with "Get test builds (beta)" enabled.


    The beta_57 upgrade bug

    Updating from beta_56 to beta_57 corrupted part of the stored settings. beta_57's new retry preference was inserted into the middle of the persisted settings layout instead of appended at the end; the settings blob is a raw byte copy, so every later value shifted by one on upgrade. The worst casualty: the remote-mode flag inherited a neighbouring value that an old migration forces to 1 on every install — so upgraded devices enabled Remote Mode without consent, which renders the interface off-screen for a browser and stops drawing to the physical panel. From the outside that looked like a device frozen on a half-drawn boot logo, on the T-Display P4 as much as the Pager. The map's developer debug overlay switched on the same way, and a chat-history safety flush was silently disabled.

    Independently found, byte-for-byte analysed, and fixed by @PixPMusic (#229, #230) — including compile-time guards that make this class of mistake a build error from now on, and a test suite over the migration paths. Affected devices repair themselves on this update: a normal install, no erase. On devices that ran beta_57, the repaired settings (web control panel, remote mode and its orientation, web terminal, map debug overlay, history-flush tuning) return to their defaults — the pre-beta_57 values were overwritten and cannot be recovered. Everything else, including your language, radio settings and per-chat history limits, is preserved. Devices coming straight from beta_56 or older upgrade losslessly.

    Auto-retry is now opt-in

    beta_57 turned "retry sends until heard" on for everyone. That choice should be yours: it now defaults off, and the toggle lives in Settings → Radio & Mesh if you want your sends retransmitted until the mesh confirms them.

    Magyar

    Hungarian translation across the full interface, contributed by @pisti87 (#227). Existing language choices are preserved across the update. Köszönjük!

    Fixes

    • The lock screen finally says WADAMESH. The old MESHCOMOD was baked into the wallpaper image itself rather than drawn as text, so the earlier branding fix missed it — both the built-in wallpaper and the copy seeded to storage are replaced. Reported by @smhawkes (#228).
    • T-Display P4: profile export and backups work again. The backup writer still pointed at the storage system beta_54 retired, so every save failed with "can't open file" — the backup list and restore were equally affected. Reported by @D-Melhede (#231).

    Both P4 panel variants are built fresh for this tag: wadamesh-tdisplay-p4* (AMOLED) and wadamesh-tdisplay-p4-lcd* (TFT-LCD).

    Full notes: release-notes/beta_58.txt.

  3. beta_57 # Pre-release 2 days ago · 2026-08-03 15:18 UTC

    Test build. Stable stays beta_50.

    Flash it from https://flasher.wadamesh.com (flip the Beta toggle), or on-device via Settings → Firmware with "Get test builds (beta)" enabled.

    Most of this beta is contributed work: @PixPMusic (storage and Pager fixes) and @mikecarper (the new send retry). Thank you both.


    Sends retry until the mesh has heard them

    Until now a message was transmitted exactly once. If that single transmission collided with other traffic or a repeater was mid-hop, it was simply gone — the app showed it as sent, the mesh never saw it. Built by @mikecarper (#207): the device now listens for evidence its message went out (a repeater echoing it, or the delivery ACK) and retransmits on a growing backoff until something confirms it was heard — direct and flood sends alike, including sends from the phone app. If you prefer the old single-shot behaviour, there is a new toggle under Settings → Radio & Mesh → "Retry sends until heard" (on by default).

    Saving settings on SD storage was broken

    If your device stores data on the SD card (T-Deck, V4-R8, Pager, Launcher installs), every settings save has been failing with "Couldn't save name to storage" and quietly surviving only through a recovery file. The commit step renamed a file onto itself because both rename arguments shared one path buffer, so it could never succeed. Found and fixed by @PixPMusic (#211).

    Two more storage fixes from the same series: watchdog state is now preserved around long SD/flash work instead of being blindly re-armed afterwards, which removes a cause of spurious watchdog reboots (#213), and preference reads no longer hand out pointers into a shared cache that another task could invalidate mid-read (#212).

    Pager radio: the oscillator voltage was wrong

    The SX1262 T-Lora Pager drove its radio oscillator at a generic 1.6 V fallback; LilyGo's own reference code uses 3.0 V for this exact board. The result was a weak link — transmissions nearby nodes missed, ACKs that never arrived. @PixPMusic confirmed on hardware that the voltage was the difference (#209).

    Fixes

    • Discover froze when a node name contains an emoji or a #. The scanner list colours each row with text markup, and a name cut mid-emoji (or a stray hash) broke that markup for every row after it — the list looked frozen from that point on. Names are now cleaned and escaped before display, here and in the message-info repeat list. Reported by @4nuts with the exact culprit name, "Ouderkerk☀️" (#223).
    • Formatting an SD card on the V4-R8 or ThinkNode M9 hung forever. The Format button exists on both boards, but the code that performs the format was only compiled for the T-Deck — the "this can take up to a minute" notice stayed up with nothing running behind it, and the card stayed unusable until a reboot. Reported by @TrustYourTechnoLust (#172).
    • Files-app Copy/Paste silently did nothing except on the T-Deck — same root cause as the format hang, fixed the same way.

    Both P4 panel variants are built fresh for this tag: wadamesh-tdisplay-p4* (AMOLED) and wadamesh-tdisplay-p4-lcd* (TFT-LCD).

    Full notes: release-notes/beta_57.txt.

Show all 20 releases →

Device compatibility (2)

✓ 2 Supported
DeviceMCURadioStatusNotes
LilyGo T-Deckesp32-s3Semtech SX1262✓ Supported
Heltec V4esp32-s3Semtech SX1262✓ Supported