Skip to content

Meck v1.7 — Channel Picker, Region Scope, Custom Fonts

Pre-release
Pre-release

Choose a tag to compare

@pelgraine pelgraine released this 19 Apr 11:28
· 104 commits to main since this release

An update for the T-Deck Pro and T5S3 E-Paper Pro. This release adds a channel picker screen for quick channel switching, MeshCore region scope support for controlling flood message propagation, selectable font styles (Classic, Noto Sans, Montserrat), an expanded emoji picker, and numerous bug fixes. Ten firmware variants across both platforms.

📄 Meck_README_v1.7.pdf is included in this release — it covers all keyboard controls, touch gestures, screen navigation, settings, and feature documentation for all platforms, provided in PDF form for convenience.


⚠️ 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 (including OTA updates from your phone).
  • 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.

Flashing with the MeshCore Web Flasher (recommended)

  1. Go to https://flasher.meshcore.io/
  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

What's New Since v1.6

📋 Channel Picker Screen (T-Deck Pro & T5S3)

The A and D keys (T-Deck Pro) and swipe left/right (T5S3 channel screen) now open a channel picker instead of cycling through channels one at a time. The picker shows all your channels and the DM inbox in a single view with unread message badges, so you can jump directly to any channel.

On the T5S3, the picker displays a vertical bubble list matching the Meck P4 aesthetic — full-width outlined bubbles with the channel name left-aligned and unread badge right-aligned. On the T-Deck Pro, it uses a compact vertical list. Select a channel and press Enter (or tap) to switch to it. Press Q or Boot to go back.

The previous A/D cycling behaviour on the channel messages screen has been replaced — A and D now both open the picker. The footer hints have been updated accordingly (A/D:List instead of A/D:Ch).

🌏 Region Scope (MeshCore v1.15+ Compatibility)

Meck now supports region scoping for flood messages, bringing it in line with MeshCore v1.15. Regions limit how far your flood messages propagate through the mesh — when you set a region, outgoing messages are tagged with a transport code that repeaters use to decide whether to forward them. Messages sent without a region reach all repeaters via the default wildcard, same as always.

Device-wide default region: Set a default region in Settings → Default Region (e.g. au-nsw). This applies to all channels and DMs unless a channel has its own override.

Per-channel region: Each channel can have its own region scope. In Settings → Channels, select a channel and press Enter to edit its region. Setting a per-channel region overrides the device default for that channel only.

Serial commands: set region au-nsw, get region, set channel.scope 2 au-syd, get channel.scope 2, get channels (now shows region scope tags). See the Serial Settings Guide for full documentation.

Settings nudge: When exiting settings, if no region is configured anywhere (no device default and no per-channel scopes), a prompt reminds you to consider setting one. You can dismiss it to stay unscoped.

Region names are determined by your local mesh community — check with your local group for the names in use. Common patterns follow ISO 3166 country/subdivision codes (e.g. au for Australia, gb-eng for England, us-ca for California). Region names must be lowercase alphanumeric characters and hyphens only, max 29 characters.

Note: Channel data is automatically migrated from the v1.6 format to the new v1.7 format (channels3) on first boot. The migration is seamless — channels imported from older config files are sanitised to prevent display corruption.

🔤 Custom Font Styles (T-Deck Pro & T5S3)

Choose between three font styles for the entire UI: Classic (the original FreeSans look), Noto Sans (clean, excellent Latin Extended coverage), or Montserrat (geometric, distinctive).

Change the font style in Settings → Font — use A/D to cycle through styles with a live preview, then press Enter to apply. The selected font is applied across all screens, including channel messages, contacts, settings, and the e-reader. Press Q to cancel and revert.

Font styles are available in both Tiny and Larger text size modes. Custom fonts at Tiny size use 7pt glyphs (slightly larger than the built-in 6×8 monospaced font but still compact). At Larger size, they use 9pt — matching the existing FreeSans9pt layout.

😀 Expanded Emoji Picker (T-Deck Pro & T5S3)

The emoji picker has been expanded from 65 to 76 emoji and reordered so faces and emotions appear first (😂,☹️,😭,😬,🤪,🤠), followed by 👍 and ♥️, then all other emoji. New additions include 😭, ♥️, ♦️,♠️,🍕,🍀,☁️,🚀,🛃,📶, and ✳️.

Scrolling now wraps around — pressing W on the first row wraps to the last row, and S on the last row wraps to the first.

On the T5S3 virtual keyboard, the emoji picker ($) now displays a scrollable grid with page indicators and a Back button, replacing the previous inline insertion.

🐛 Bug Fixes & Improvements

  • Contacts screen — contact list now sorts by lastmod (when your device received the advert) instead of last_advert_timestamp (the remote node's self-reported time). Timestamps before January 2026 are treated as unsynced and sort to the bottom, preventing stale contacts from floating to the top.
  • Contact hop estimates — contacts with no confirmed direct path now show flood hop estimates from recently heard adverts (~D for direct, ~2 for 2 hops, etc.) drawn from a cache of up to 1,000 recent adverts. Previously these showed ?.
  • Last Heard — advert path table expanded from 40 to 1,000 entries (PSRAM-allocated), providing a much deeper history of heard nodes.
  • Fixed contacts add/delete/favourite toggle — resolved issues where adding, deleting, or toggling favourites on contacts could fail or produce inconsistent state.
  • Fixed T5S3 contact limit — corrected a bug that could prevent the T5S3 from storing the full 2,000 contacts.
  • Fixed T5S3 touch selector favourite bug — touch selection on favourite contacts now works correctly.
  • Fixed WiFi companion sync — resolved a sync bug in WiFi companion builds.
  • Fixed notes screen touch — touch recognition and file open on the notes screen now work reliably.
  • Fixed home screen display with custom fonts — the home menu layout now renders correctly with Noto Sans and Montserrat fonts, using adaptive column positioning.
  • Fixed e-reader word wrapping — word wrapping in the text reader now works correctly when a larger custom font is selected.
  • Fixed splash screen — updated loading splash screen to show a clear SPIFFS failure message on first-time flash.
  • Fixed battery threshold — corrected battery capacity threshold calculations in TDeckBoard.cpp (changed from * 3 / 2 to > designCapacity_mAh).
  • Fixed channel migration — channels imported from older config files (channels2 format) no longer display gibberish in scope fields. The channels3 format includes sanitisation for invalid characters.
  • Improved compose mode — key responsiveness and debounce in compose mode have been improved.
  • Footer text — fixed crowded footer text when using custom fonts or larger font mode (conditional Ent:New display).
  • Room server display — room servers now show as RS in the contacts type prefix instead of S.
  • Build improvements — improved compilation time across all T-Deck Pro builds. Removed unnecessary SerialBLEInterface from non-BLE builds.

⚠️ Serial Command Changes

The following serial commands have been renamed for consistency:

Old Command New Command
set tx.fail.reset set tx.fail.threshold
set rx.fail.reboot set rx.fail.threshold
get tx.fail.reset get tx.fail.threshold
get rx.fail.reboot get rx.fail.threshold

The set largefont / get largefont serial commands have been removed — font size is now controlled via the Settings screen only.

New serial commands:

Command Description
set region <name> Set device-wide default region (e.g. set region au-nsw)
set region none Clear default region (return to unscoped)
get region Show current default region
set channel.scope <idx> <name> Set region override for a specific channel
set channel.scope <idx> none Clear channel region (use device default)
get channel.scope <idx> Show region for a specific channel
get channels Now shows region scope tags alongside channel names
set backlight on/off/<0-255> Control T5S3 front-light (T5S3 only)

T-Deck Pro Firmware Variants

Six companion firmware variants for the LilyGo T-Deck Pro:


v1.7-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, web browser, and OTA firmware update. Up to 2,000 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.7W-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 2,000 contacts and 20 channels.

v1.7-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, map viewer, and OTA firmware update are all still available (they use WiFi independently, not as a companion transport). Up to 2,000 contacts and 20 channels.

v1.7A-Meck-Audio-BLE (PCM5102A Audio only).bin
Everything in the 4G-BLE build plus the audiobook player, alarm clock, sleep timer, auto-queuing, and voice notes over LoRa — minus the 4G modem features. BLE companion support included. Up to 2,000 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.7AW-Meck-Audio-WiFi (PCM5102A Audio only).bin
Same as the Audio-BLE build but with WiFi replacing BLE as the companion transport. Includes voice notes over LoRa. No BLE companion app support. Up to 2,000 contacts and 20 channels.

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

v1.7A-SA-Meck-standalone-firmware (PCM5102A Audio only).bin
Same as the Audio-BLE build but with Bluetooth and WiFi completely removed at compile time. Includes voice notes over LoRa. 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 2,000 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.7-Meck-T5S3Pro-BLE_NOGPS.bin
BLE companion build. Connect to MeshCore companion apps via BLE. Touch-driven UI with virtual keyboard. Up to 2,000 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.7-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, IRC client, and OTA firmware update. Up to 2,000 contacts and 20 channels.

v1.7-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 2,000 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: