From e2d07d8428f9e18f58aee0a0d9bb8a7164abd7ea Mon Sep 17 00:00:00 2001 From: Kaj Schittecat Date: Fri, 21 Aug 2026 17:08:29 +0200 Subject: [PATCH] fix + docs: "Save update bin to SD" on every board with a card, and list the boards we actually ship (#289) oumike's gap list. Three of the four are closed here. "Save update bin to SD" was gated on a list of board names that had grown to three entries and still left the T-Lora Pager out, despite it having both a card and OTA. It is now gated on the capability that actually decides it, CAP_SD && CAP_OTA (plus the ESP32 / companion conditions it already carried), which is what device_caps.h exists for: a new board with a card no longer has to remember to add itself to a list. Both halves were gated separately - the helper block and the button that uses it - so widening only the button broke the pager build on undefined symbols. They are now character-for-character identical, which is the point: they cannot drift apart again. Docs were further behind than the issue said. DEVICES.md listed five boards and we ship ten: the T-Lora Pager, Heltec V4-R8, T-Display P4 and Attaky Mesh Series were all missing from the support matrix, and the Pager was still sitting under "Requested boards" with an open issue link. README listed five envs and claimed the repo covers "the two boards". Both now match what release.sh actually builds. Still open from #289: the static deploy/flasher/ page carries only two manifests. Left alone for now - flasher.wadamesh.com redirects to the site flasher, which generates its manifests from gen-flasher-meta.py and already covers every board, so that directory may simply be dead. Worth confirming before adding files to it. All 8 S3 boards build. Co-Authored-By: Claude Opus 5 --- DEVICES.md | 5 ++++- README.md | 8 ++++++-- src/ui-touch/UITask.cpp | 9 +++++++-- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/DEVICES.md b/DEVICES.md index 5f8e96b..2b75e33 100644 --- a/DEVICES.md +++ b/DEVICES.md @@ -13,6 +13,10 @@ USB) and the [GitHub releases](https://github.com/ALLFATHER-BV/wadamesh/releases | Tanmatsu | ESP32-P4 + ESP32-C6, SX1262 | 4" 800x480, 69-key keyboard (no touch) | Tanmatsu app store on the device (runs under the badge.team launcher, not web-flashable) | Store tracks the test channel | Fully supported; LoRa + Wi-Fi + Bluetooth simultaneously, standalone and companion in one | | Elecrow ThinkNode M9 | ESP32-S3, LR1110 | 2.4" 240x320 (no touch), I2C QWERTY + d-pad | Web flasher | Beta (new in beta_38) | Hardware-complete community port by ded (#138): GPS, microSD, buzzer, lock screen, d-pad navigation | | RAK WisMesh Tap V2 (RAK3312) | ESP32-S3, SX1262 | Touch display (LovyanGFX, 30+ fps) | Web flasher | Beta (new in beta_38) | Early community port by Ethac.chen (#136); core mesh, chat and map working | +| LilyGo T-Lora Pager | ESP32-S3, LR1121 or SX1262 | 2.33" AMOLED (no touch), QWERTY + rotary encoder | Web flasher (pick the build matching your radio) | Stable | Fully supported; keyboard-first navigation, microSD, map tile packs | +| Heltec V4-R8 + Expansion Kit V2 | ESP32-S3 (8 MB octal PSRAM), SX1262 | 2.4" touch (CHSC6x) | Web flasher | Stable | As the V4 plus microSD and the Expansion Kit sensors; buzzer supported | +| LilyGo T-Display P4 | ESP32-P4 + ESP32-C6, SX1262 | AMOLED or TFT-LCD, touch | Web flasher (AMOLED) or the .bin for the LCD SKU | Stable | Two screen SKUs; fuel-gauge battery reporting, full TX power | +| Attaky Mesh Series | ESP32-S3, SX1262 | Touch display | Web flasher | Beta (new in beta_47) | Community port by attakygit (#158/#169); detachable keyboard supported | ## Feature notes per board @@ -41,7 +45,6 @@ Open hardware requests, roughly in demand order. Ports are welcome, see PRs. - LilyGo T-Deck Pro Max: [#62](https://github.com/ALLFATHER-BV/wadamesh/issues/62) -- LilyGo T-pager: [#60](https://github.com/ALLFATHER-BV/wadamesh/issues/60) - SenseCAP Indicator D1L: [#14](https://github.com/ALLFATHER-BV/wadamesh/issues/14) ## Channels diff --git a/README.md b/README.md index ef57ef6..5d1996a 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@

A real touchscreen UI for your mesh radio. · open source · GPL-3.0

Touch-UI [MeshCore](https://github.com/meshcore-dev/MeshCore) companion-radio -firmware for the **LilyGo T-Deck / T-Deck Plus** and **Heltec V4 + TFT** +firmware for the **LilyGo T-Deck / T-Deck Plus**, **Heltec V4 + TFT** and eight other boards (ESP32-S3). An LVGL touch UI — map, chat, contacts, channels, settings — split out of @@ -25,11 +25,15 @@ per-board status. - Tanmatsu (ESP32-P4) — built from `tanmatsu/` (ESP-IDF), ships via the Tanmatsu app store - Elecrow ThinkNode M9 — env `ThinkNode_M9_companion_radio_touch` (beta) — [keyboard & d-pad guide](THINKNODE_M9_SHORTCUTS.md) - RAK WisMesh Tap V2 (RAK3312) — env `rak_tap_v2_companion_radio_touch` (beta) +- LilyGo T-Lora Pager — envs `tlora_pager_lr1121_companion_radio_touch` / `tlora_pager_sx1262_companion_radio_touch` (stable) — [keyboard shortcuts](TLORA_PAGER_SHORTCUTS.md) +- Heltec V4-R8 + Expansion Kit V2 — env `heltec_v4_r8_tft_companion_radio_usb_tcp_touch` (stable) +- LilyGo T-Display P4 — built from `tdisplay_p4/` (ESP-IDF); AMOLED by default, `WADA_P4_LCD=1` for the TFT-LCD SKU +- Attaky Mesh Series — env `attaky_mesh_series_companion_radio_touch` (beta) ## Architecture This repo holds only the **app**: the `companion_radio` glue, the `ui-touch` -LVGL UI, the two boards' glue/variants, and `platformio.ini`. The **MeshCore +LVGL UI, each board's glue/variants, and `platformio.ini`. The **MeshCore core is not vendored here** — it's pulled as a library via `lib_deps` from the [`ALLFATHER-BV/meshcomod`](https://github.com/ALLFATHER-BV/meshcomod) monorepo (the same repo as the non-touch firmware), pinned by a lean source-only `core-*` diff --git a/src/ui-touch/UITask.cpp b/src/ui-touch/UITask.cpp index f45a07e..19dd45f 100644 --- a/src/ui-touch/UITask.cpp +++ b/src/ui-touch/UITask.cpp @@ -5369,7 +5369,7 @@ static void otaButtonRefreshState() { } } -#if (defined(HAS_TDECK_GT911) || defined(HAS_THINKNODE_M9) || defined(HELTEC_LORA_V4_R8)) && defined(ESP32) && defined(MULTI_TRANSPORT_COMPANION) && CAP_OTA +#if CAP_SD && defined(ESP32) && defined(MULTI_TRANSPORT_COMPANION) && CAP_OTA // ---- Save-update-to-SD (Launcher installs) --------------------------------- // Launcher-managed T-Decks have no spare A/B slot (touchHasOtaUpdateSlot() is // false), so Wi-Fi OTA can't work there — but the Launcher itself can flash an @@ -30931,7 +30931,12 @@ static void settingsCatBuild(int cat) { lv_obj_set_style_text_color(beta_note, lv_color_hex(COLOR_SUB), LV_PART_MAIN); } -#if (defined(HAS_TDECK_GT911) || defined(HAS_THINKNODE_M9) || defined(HELTEC_LORA_V4_R8)) && CAP_OTA +// Gated on the CAPABILITY, not a list of board names: this needs a writable Arduino-SD +// card and OTA, which is exactly CAP_SD && CAP_OTA. The board list had grown to three +// entries and still left the T-Lora Pager out despite it having both (#289) — every new +// board with a card had to remember to add itself here, which is the failure mode +// device_caps.h exists to prevent. +#if CAP_SD && defined(ESP32) && defined(MULTI_TRANSPORT_COMPANION) && CAP_OTA // "Save update bin to SD" — the Launcher-install update path: downloads // the app-only bin for the active channel into /BINS/ on the SD card, // named wadamesh-beta_-.bin, ready for the Launcher to