MCLite
ForkA lightweight off-grid communicator firmware for the LilyGo T-Deck Plus and T-Watch Ultra. Purpose-built for emergency and outdoor communication — no internet, no cell towers needed. SD card configuration, web flasher, and room server support. Compatible with MeshCore apps.
Fork of MeshCore (Official)
- Maintainer
- laserir ↗
- Status
- active
- Maturity
- beta
- Lifecycle
- active
- Latest version
- 0.3.9
- Released
- 2026-06-21
- Runtime
- Arduino · C++
- Distribution
- community
- License
- MIT
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 roles
companion
Features
- Web flasher (Chrome/Edge)
- SD card configuration (one person sets up, copies to everyone)
- Room server support (up to 8)
- On-screen keyboard
- GPS support
- No accounts, no pairing, no per-device setup
Project signals
popularity 2026-06-21 verification 2026-06-21
- GitHub stars
- 17
- Forks
- 2
- Watchers
- 3
- Open issues
- 2
- Contributors
- 3
- Release downloads
- 179
- Latest downloads
- 6
- Source available
- Yes
- Releases available
- Yes
- CI builds
- Yes
Releases
from GitHub · updated 2026-06-21v0.3.9 # Latest 2 hours ago · 2026-06-21 08:09 UTC
Added
- Step-wise admin permissions. Beyond the existing
security.admin_enabled(global on/off for the Admin screen), a newpermissionsconfig block scopes what's reachable inside Admin:permissions.settings(full/restricted/none) — restricted keeps only the basics editable (brightness, auto-dim, dim brightness, keyboard brightness, theme) and shows everything else read-only (no chevron); none makes all settings read-only.permissions.companion(default on) hides the Companion group (WiFi/USB/Bluetooth) when off — configured services still run.permissions.conversation_management(default off) is reserved for a future release (on-device add/edit/remove of contacts/channels/rooms; they stay read-only views for now). All three are provisionable from the config tool. Defaults are fully permissive, so existing configs are unchanged. - Settings reorganised into per-section screens + Admin is now a pure hub. The on-device Admin screen no
longer mixes settings, diagnostics and shortcuts — it's three labelled groups of links: Companion (WiFi /
USB / Bluetooth), Conversations (Contacts / Channels / Rooms, read-only views), and Settings (Device,
Radio, Display, Messaging, Sound, GPS, Battery, Security). Each section is its own screen mirroring the config
tool, with all of its editable settings and its read-only diagnostics in one place (no more duplicated rows
across Admin and Device Settings). Newly editable on-device: Radio (region preset picker — EU/UK/CH vs
US/Canada — plus a TX-power slider and an advert-interval picker; frequency/SF/BW/CR/scope/path-hash stay read-only),
Messaging (history, max-per-chat, location format, retries, telemetry request/badges/auto-refresh, canned
messages, allow-mute), and GPS (enable, location-advert precision, timezone, clock offset, last-known max
age). Offgrid mode and the live Heard-Adverts count now live at the top of the Radio screen. Each hub link
carries an icon (gear for settings;
@/#/Rfor contacts/channels/rooms; Wi-Fi/USB/Bluetooth for companion), and the 3rd-party licenses moved to an About block at the bottom of the hub. Radio/GPS changes reboot once on exit (same batched-save model as theme/language). The old single "Device Settings" screen is superseded by this layout. - Selectable UI themes. Choose a color palette — Dark (default), Light, Amber (a "military"
night mode that preserves night vision), or High contrast — on-device (Admin → Theme, reboots to apply)
or via
display.themein config. Custom palettes can be defined underdisplay.themes(start from a built-inbase, override any color with#RRGGBB). Default appearance is unchanged. On/off switches now use the theme accent colour too. Thanks @jason-s13r (#24). - Per-row Info + Map buttons on the Heard Adverts screen. Each heard node now has an explicit info (eye) button that opens its detail dialog, and — when the advert carries a location — a map button that opens the map centered on that node. Back now returns to the Admin screen. Thanks @jason-s13r (#15).
- Map screen pan buttons + windowed chrome. The map gains an on-screen D-pad (up/left/centre/right/down)
alongside the existing drag-to-pan. On the T-Deck the map now keeps the status bar visible and uses the
standard
lv_winheader with a back button (the T-Watch stays full-screen). Thanks @jason-s13r (#22, supersedes #20/#21). - Uptime + last-charged in the Admin Battery section. Shows when the device booted (wall-clock + relative) and when charging last stopped (with the level at the time). Thanks @jason-s13r (#23).
- On-device Device Settings. A new editable settings screen (Admin → Device Settings, behind the existing
admin.enabledgate) for changing device n …
- Step-wise admin permissions. Beyond the existing
v0.3.8 # 5 days ago · 2026-06-16 09:19 UTC
Highlights
Less advert spam, more location privacy.
Added
- Location-advert privacy precision. The location-advert setting (now
gps.location_precision) can coarsen the position you broadcast: Off · Exact · ~100 m · ~750 m · ~3 km · ~12 km · ~50 km (Meshtastic-style grid snapping, centred in the cell). Only the broadcast advert is coarsened — telemetry replies to authorized contacts and the in-chat GPS insert always use your exact position. Default off; oldlocation_advert: true/falseconfigs are read automatically. Scheme adopted from @jason-s13r. - Zero-hop "Local" advert button on the Heard Adverts screen — announce yourself to immediate neighbours without flooding the whole mesh.
Changed
- No more periodic flood adverts by default (#13). MCLite previously flooded a mesh-wide advert every ~9 min; on a 110-repeater mesh one device generated ~half of all adverts. Now it sends a single flood advert on boot and otherwise advertises on demand — matching stock MeshCore clients. Thanks @stucamp and @jason-s13r.
- Opt-in periodic advert — new
radio.advert_interval_minfield (config tool → Radio) re-enables periodic adverts for ad-hoc / SAR / private meshes. Default 0 = off; if set, enforced to ≥60 min (720 / 12 h recommended). - GPS button inserts your location into the message instead of a "Send Location?" confirm — append
@ <coords>to the input, add context, send normally (byte-guarded against the 160-byte limit).
Flash from the web flasher or grab the merged
.binbelow. T-Deck Plus:mclite-v0.3.8.bin· T-Watch Ultra:mclite-watch-v0.3.8.bin.- Location-advert privacy precision. The location-advert setting (now
v0.3.7 # 6 days ago · 2026-06-15 09:34 UTC
MCLite 0.3.7 — tappable map coordinates, lv_win screen chrome, and on-device screenshots.
Added
- Tap a shared location to open it on the map. A received/sent message containing a GPS position — decimal
lat, lonor MGRS/UTMREF — shows an underlined "Open in map" link under the bubble; tapping it opens the map centered there. Touch-only, shown only when map tiles are present on SD. Adds a reverse MGRS→lat/lon parser, unit-tested. - Screenshot to SD (debug aid, off by default). Enable
debug.screenshots(config tool → Display) and capture the current screen to/screenshots/*.bmp(24-bit BMP, opens on any PC) — T-Deck: Shift+$; T-Watch: double-press the side (PEK) button. (Top-layer overlays like toasts/PIN/SOS aren't captured.)
Changed
- Heard Adverts screen now uses the standard
lv_winchrome (back arrow + title + action buttons) — the first step of rolling consistent screen headers across the app (community PR #8, @jason-s13r).
Removed
- The non-functional Alt+L "insert location" keyboard shortcut (the chat GPS button already does this).
Notes
- Config tool: "Save screenshots" toggle (Display); Security section relayout (Lock + Auto Lock on one line, Admin Screen separate).
- Both boards (T-Deck Plus, T-Watch Ultra) build; 246 native tests pass.
- Tap a shared location to open it on the map. A received/sent message containing a GPS position — decimal
Device compatibility (2)
✓ 2 Supported
| Device | MCU | Radio | Status | Notes |
|---|---|---|---|---|
| LilyGo T-Deck | esp32-s3 | Semtech SX1262 | ✓ Supported | T-Deck Plus — primary target with QWERTY keyboard, trackball, GPS. |
| LilyGo T-Watch S3 | esp32-s3 | Semtech SX1262 | ✓ Supported | T-Watch Ultra — wrist-worn with AMOLED touchscreen. |