Skip to content

Meck v1.2 — T-Deck Pro & T5S3 Update & Bugfixes

Pre-release
Pre-release

Choose a tag to compare

@pelgraine pelgraine released this 20 Mar 10:41
· 187 commits to main since this release

An update for both the T-Deck Pro and T5S3 E-Paper Pro. New features include a lock screen, last heard advert list, touch tap-to-select across all list screens, non-blocking contact saves, and CardKB external keyboard support for the T5S3. Nine firmware variants across both platforms.

📄 Meck_README_v1.2_March_2026.pdf is included in this release — it covers all keyboard controls, touch gestures, screen navigation, settings, and feature documentation for both platforms.


⚠️ First-Time Flashing — Read This First

Each firmware is provided in two formats:

  • filename.bin — the application firmware only. Use this for updating an existing Meck install.
  • filename-merged.bin — includes the bootloader, partition table, and application firmware in a single image. Use this if you are flashing Meck for the first time, coming from a different firmware, or if your device is not booting correctly after an update.

If in doubt, use the -merged.bin file. It will always work regardless of what was previously on the device.

⚠️ Important: The merged filename now uses a hyphen (-merged.bin) instead of an underscore. The MeshCore web flasher uses this suffix to detect merged firmware and flash at the correct address (0x0). Files without -merged.bin in the name are written at 0x10000, which will fail on a clean device.

Flashing with the MeshCore Web Flasher (recommended)

  1. Go to https://flasher.meshcore.co.uk
  2. Select Custom Firmware
  3. Load the .bin or -merged.bin file and click Flash
  4. Select your device in the popup and click Connect

Flashing with esptool.py

esptool.py --port /dev/ttyACM0 --baud 921600 write_flash 0x0 firmware-merged.bin

Note: On first boot after a fresh flash (or after erasing flash), you may see a SPIFFS mount error in serial output — this is normal. The filesystem auto-formats on first boot and everything proceeds as expected.


What's New Since v1.1

🔒 Lock Screen (T-Deck Pro & T5S3)

Both platforms now have a lock screen that shows the current time, battery percentage, and unread message count.

  • T-Deck Pro: Double-click the Boot button to lock/unlock
  • T5S3: Long press the Boot button to lock/unlock

An auto-lock timer is available in Settings → Auto Lock with options for None, 2, 5, 10, 15, or 30 minutes of idle time. The CPU drops to 40 MHz while locked to reduce power consumption. The clock refreshes every 15 minutes while locked.

📡 Last Heard Screen (T-Deck Pro & T5S3)

A new passive advert list showing all recently heard nodes sorted by recency. Unlike Discovery (which does an active zero-hop scan), Last Heard is purely passive — it shows nodes whose adverts have been received over time.

  • Press H from the home screen (T-Deck Pro) or swipe to the Recent Adverts home page and tap "Tap here for full Last Heard list" (T5S3)
  • Shows node type, name, time since last heard, hop count
  • Nodes already in contacts are marked with [+], favourites with [★]
  • Add or remove contacts directly from the list

👆 Tap-to-Select (T-Deck Pro & T5S3)

Tap on any row in Contacts, Discovery, Last Heard, Settings, Text Reader file list, and Notes to select it. Tap the same row again (or press Enter) to activate. This brings touch interaction to the T-Deck Pro for the first time on list screens.

💾 Non-Blocking Contact Save

Large contact lists previously blocked the main loop for 500ms+ during save. Contact saves now happen in chunks across multiple loop iterations (20 contacts per chunk, ~30ms each). A write-then-verify-then-rename pattern prevents corruption if the save is interrupted.

⌨️ CardKB Support (T5S3)

The T5S3 now supports the M5Stack CardKB (or compatible I2C keyboard) connected via the QWIIC port. When detected at boot, the CardKB can be used for all text input — composing messages, entering URLs, editing notes, and navigating menus — without the on-screen virtual keyboard. Auto-detected at address 0x5F, no configuration needed.

📖 Text Reader Improvements

  • Go-to-page — press Enter while reading to type a page number and jump directly to it (T-Deck Pro keyboard; T5S3 footer tap opens VKB for page entry)
  • Improved word wrap — fixes lines overflowing the display on T5S3 portrait mode and with long URLs/spaceless text
  • A/D page turn on T-Deck Pro (W/A = previous, S/D/Space = next)
  • Enter is no longer "next page" — it opens the go-to-page input instead

🗺️ Map Screen Improvements

  • Marker array and PNG decode buffers are now deferred to first use — no longer allocated at boot, saving 20KB+ PSRAM when the map is never opened
  • PNG scanline decode buffer moved from stack to PSRAM (avoids 512-byte stack allocation per tile callback)
  • WDT yield between tile renders prevents watchdog resets at 80 MHz

🔧 Bug Fixes

  • T-Deck Pro backlight fix — the V1.1 T-Deck Pro has no physical backlight LED despite defining GPIO 45. turnOff() no longer sets _isOn = false on the T-Deck Pro, which was stopping the render loop and making the device appear frozen
  • GxEPD font scalingsetTextSize(1) now explicitly set for all font sizes, preventing stale 2× scaling from carrying over between render calls
  • Notes filename timestamps — now use fresh RTC time at creation instead of stale boot-time value
  • Last heard type field — advert type (Chat/Repeater/Room/Sensor) now stored in the advert path table (was missing)
  • Footer text consistency — all screens now use the same compact format (Q:Bk, Tap/Ent:Select, etc.)
  • Merged firmware filename — changed from _merged.bin to -merged.bin so the MeshCore web flasher correctly detects it and writes at offset 0x0

T-Deck Pro Firmware Variants

Six firmware variants for the LilyGo T-Deck Pro:


v1.2-Meck-4G-BLE.bin
For T-Deck Pro 4G boards. Full-featured build — messaging, contacts, direct messages, repeater admin, e-book reader, notes, emoji, GPS, map viewer, BLE companion app support, SMS & Phone app, IRC client, and web browser. Up to 500 contacts and 20 channels.

Note: BLE is toggled off at boot to save battery. Navigate to the Bluetooth home page and press Enter to enable it when you want to connect to the app.

v1.2W-Meck-4G-WiFi.bin
For T-Deck Pro 4G boards. Same as the 4G-BLE build but with WiFi replacing BLE as the companion transport — connect via the MeshCore web app, iOS/Android app, meshcore.js, or Python CLI over your local network (TCP port 5000). No BLE companion app support. Up to 1,500 contacts and 20 channels.

v1.2-4G.SA-Meck-standalone-firmware (A7682E (4G) version).bin
For T-Deck Pro 4G boards. No BLE or WiFi companion — maximum battery life. The web browser, IRC client, and map viewer are all still available (they use WiFi independently, not as a companion transport). Up to 1,500 contacts and 20 channels.

v1.2A-Meck-Audio-BLE (PCM5102A Audio only).bin
Everything in the 4G-BLE build plus the audiobook player, sleep timer, and auto-queuing — minus the 4G modem features. BLE companion support included. Up to 500 contacts and 20 channels.

⚠️ PCM5102A audio hardware only. The I2S audio pins (GPIO 7, 8, 9) conflict with the A7682E modem control lines — do not flash on 4G boards.

Note: BLE is toggled off at boot to save battery. Navigate to the Bluetooth home page and press Enter to enable it when you want to connect to the app.

v1.2AW-Meck-Audio-WiFi (PCM5102A Audio only).bin
Same as the Audio-BLE build but with WiFi replacing BLE as the companion transport. No BLE companion app support. Up to 1,500 contacts and 20 channels.

⚠️ PCM5102A audio hardware only — same GPIO conflict applies. Do not flash on 4G boards.

v1.2A-SA-Meck-standalone-firmware (PCM5102A Audio only).bin
Same as the Audio-BLE build but with Bluetooth and WiFi completely removed at compile time. The radio hardware is never initialised, giving a significant battery life improvement. The web browser, IRC client, and map viewer are not available on this variant. Up to 1,500 contacts and 20 channels.

⚠️ PCM5102A audio hardware only — do not flash on 4G boards.


T5S3 E-Paper Pro Firmware Variants

Three firmware variants for the LilyGo T5S3 E-Paper Pro (V2, H752-B):


v1.2-Meck-T5S3Pro-BLE_NOGPS.bin
BLE companion build. Connect to MeshCore companion apps via BLE. Touch-driven UI with virtual keyboard. Up to 500 contacts and 20 channels.

Note: BLE is toggled off at boot. Navigate to the Bluetooth home page and long-press the screen to enable it.

v1.2-Meck-T5S3Pro-WiFi_NOGPS.bin
WiFi companion build. Connect via MeshCore web app, meshcore.js, or Python CLI over local network (TCP port 5000). Includes the web browser and IRC client. Up to 1,500 contacts and 20 channels.

v1.2-Meck-T5S3Pro-Standalone_NOWIFI_NOBLE_NOGPS.bin
No BLE or WiFi — maximum battery life. Touch-driven standalone operation with full messaging, contacts, reader, and notes. Up to 1,500 contacts and 20 channels.

All T5S3 variants include CardKB support (auto-detected via QWIIC).


MeshCore Companion Apps

BLE variants connect to the standard MeshCore companion apps:

WiFi variants connect via TCP on port 5000: