SigurdOS T-Deck
CustomStandalone off-grid MeshCore messaging firmware for the LilyGo T-Deck, with a launcher-style touch UI, persistent conversations, maps, diagnostics and Wi-Fi or GitHub-based update support.
- Maintainer
- hermes-gadget ↗
- Status
- Active
- Maturity
- Beta
- Lifecycle
- Active
- Latest version
- 0.1.42-RC4
- Released
- 2026-06-20
- Runtime
- Arduino · C++
- Distribution
- Community
- Licensing
- Open source
- License
- GPL-3.0
Capabilities
Transports
- ✓ BLE
- ✓ USB serial
- ✓ Wi-Fi AP
Operations
- ✓ OTA updates
Hardware
- ✓ GPS
- ✓ Display
Protocol
- ✓ MeshCore compatible
Node role
CompanionStandalone UI
Features
- Standalone direct and channel messaging
- Touch, trackball and keyboard controls
- Maps, GPS and signal diagnostics
- Wi-Fi and GitHub OTA updates
Releases
from GitHub · updated 2026-06-24v0.1.42-RC4 # Latest Pre-release 7 days ago · 2026-06-20 21:09 UTC
SigurdOS T-Deck Firmware — beta-0.1.42-RC4
Flash with esptool
# Full flash (first install): esptool.py --chip esp32s3 --port /dev/ttyACM0 write_flash 0x0 firmware-merged.bin # App update (keep settings): esptool.py --chip esp32s3 --port /dev/ttyACM0 \ write_flash 0x10000 firmware.binWeb Flasher
Use the manifest at
webflasher/manifest.jsonwith esptool.js.File Use firmware.binApp only (flash at 0x10000) firmware-merged.binFull flash (flash at 0x0) SigurdOS-tdeck-launcher.binFor bmorcelli/Launcher install (same bytes as merged) What's Changed
- fix: scope radio param force-override to dedicated debug flag by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/626
- [codex] docs: remove completed roadmap items by @gadgethd in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/638
- fix: bug sweep — display init, GPS baud timeout, DM name buffer, channel routing, save counter overflow by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/641
- [codex] ci: serialize release asset uploads by @gadgethd in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/640
- T13: SD lazy retry — single attempt at boot, retry on demand by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/642
- fix: QIO→DIO flash mode for PSRAM compatibility + CI smoke matrix expansion by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/662
- fix: HAL — battery Li-ion lookup, trackball LEFT deadtime, BLE state ordering by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/664
- fix: mesh — static sender buffer race + path discovery race by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/665
- fix: UI — chart data, nav stack, trace timer, brightness, search state by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/666
- fix: reset cache_clock on map reinit (#661) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/667
- fix: SPIFFS flush before device reset + NVS write dedup in radio setup by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/663
- fix: roomserver double-send + UTF-8 emoji truncation by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/668
- fix: free outgoing screen on navigation to stop LVGL pool leak / freeze (#670) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/671
- fix: theme change refreshes current screen immediately (#654) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/669
- fix: null guard getRTCClock() in updateSignalSample (fixes #675) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/676
- docs: correct HARDWARE.md inaccuracies and fix touch comment (fixes #679) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/680
- fix: add missing P_LORA_* build flags for MeshCore visibility (fixes #677) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/681
- chore: update MeshCore submodule to latest dev (fixes #678) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/682
- ci: add debug and remote_test_radio builds to PR matrix by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/684
- fix: restore Settings back navigation by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/674
- fix: resolve Launcher warm-handoff freeze + settings crash by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/685
- fix: chat channel-state corruption + harden WiFi OTA auth by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/689
- fix: SPIFFS warning spam (#683) + navigation hang (#672) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/690
Full Changelog: https://github.com/ …
v0.1.41.1 # Pre-release 13 days ago · 2026-06-14 22:52 UTC
SigurdOS T-Deck Firmware — beta-0.1.41.1
Flash with esptool
# Full flash (first install): esptool.py --chip esp32s3 --port /dev/ttyACM0 write_flash 0x0 firmware-merged.bin # App update (keep settings): esptool.py --chip esp32s3 --port /dev/ttyACM0 \ write_flash 0x10000 firmware.binWeb Flasher
Use the manifest at
webflasher/manifest.jsonwith esptool.js.File Use firmware.binApp only (flash at 0x10000) firmware-merged.binFull flash (flash at 0x0) SigurdOS-tdeck-launcher.binFor bmorcelli/Launcher install (same bytes as merged) Full Changelog: https://github.com/hermes-gadget/SigurdOS-tdeck/compare/beta-0.1.41...beta-0.1.41.1
v0.1.41 # Pre-release 14 days ago · 2026-06-13 13:03 UTC
SigurdOS T-Deck Firmware — beta-0.1.41
Flash with esptool
# Full flash (first install): esptool.py --chip esp32s3 --port /dev/ttyACM0 write_flash 0x0 firmware-merged.bin # App update (keep settings): esptool.py --chip esp32s3 --port /dev/ttyACM0 \ write_flash 0x10000 firmware.binWeb Flasher
Use the manifest at
webflasher/manifest.jsonwith esptool.js.File Use firmware.binApp only (flash at 0x10000) firmware-merged.binFull flash (flash at 0x0) SigurdOS-tdeck-launcher.binFor bmorcelli/Launcher install (same bytes as merged) What's Changed
- Fix fresh-install GPS defaults in prefs load by @n30nex in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/517
- refactor: split 1707-line sigurd_mesh_v2.h into declaration header + .cpp implementation (#521) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/532
- fix: replace delay(0) with delay(1) in tile scan loops to feed TWDT (#518) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/525
- fix: apply consistent NVS getString return-value guards to all string fields (#523) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/529
- fix: stop onAnonDataRecv from mutating packet buffer in-place; increase anon name entropy (#522, #524) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/527
- maintainability: replace unsafe strcpy with strncpy; replace hardcoded buffer sizes with sizeof (#520) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/528
- feat: multibyte path hash support (1/2/3-byte adverts & messages) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/533
- fix: correct test module table syntax in README.md by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/534
- docs: update README screenshots by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/535
- feat: duration-limited auto-advert (24h/72h/168h) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/537
- fix: auto-advert sends one advert per interval (24h/72h/168h), not every 30min by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/538
- fix: forward channel messages to logged-in room servers by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/539
- fix: correct guest permission display and hide admin-only controls by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/540
- fix: use INPUT_PULLUP for trackball center click GPIO 0 (#549) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/554
- fix: zero-initialize NVS string buffer in repeater password functions (#548) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/555
- fix: increase SignalSample key from 2 to 4 bytes to prevent RSSI/SNR aliasing (#544) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/556
- fix: stack buffer overflow in DM name formatting (#543) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/553
- fix: add nvs_flash_erase() to factory reset for complete NVS wipe (#551) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/557
- fix: block trackball events during PIN entry to prevent back-swipe bypass (#541) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/558
- fix: stop I2C clock tug-of-war between touch (GT911) and keyboard (#547) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/559
- docs: add OUT OF DATE warning to TELEMETRY_ARCHITECTURE.md (#550) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/560
- fix: clamp append_channel_message capacity to actual buffer size to prevent OOB write (#542) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/561
…
Device compatibility (1)
✓ 1 Supported
| Device | MCU | Radio | Status | Notes |
|---|---|---|---|---|
| LilyGo T-Deck | esp32-s3 | Semtech SX1262 | ✓ Supported | The project reports successful beta flashes by several users. |