Skip to content

Releases: pelgraine/Meck

Meck v1.12.3 (patch): T-Deck Max Keyboard LED brightness & standalone unread counter

Choose a tag to compare

@pelgraine pelgraine released this 22 Jun 10:04

v1.12.3 is a small patch release on top of v1.12.2 for the T-Deck Max. It adds a configurable keyboard backlight brightness setting, and fixes the unread message counter bug on standalone (no BLE/WiFi) builds, where the home-screen count and channel unread badges never updated.

What's Changed in v1.12.3

Keyboard LED -- adjustable brightness

The keyboard backlight (toggled by pressing both Shift keys together) was previously fixed at a very dim level, too faint to be useful for some users. A new Keyboard LED setting now lets you choose the brightness.

  • Found in Settings, directly below Backlight Brightness.
  • Adjustable from 5% to 100% in 5% steps, defaulting to 50% -- noticeably brighter than before.
  • The level takes effect the next time you toggle the keyboard backlight on.

Standalone unread counter -- now updates as expected

On standalone builds (no BLE or WiFi companion), the MSG count on the home screen and the unread badges in the channel picker stayed at zero even as messages arrived and displayed normally. The device was effectively behaving as though a companion app were permanently connected, which marks each message as read the instant it arrives.

Standalone builds now track unread messages correctly:

  • The home-screen MSG count and per-channel *N badges climb as messages come in.
  • Opening a channel clears its unread count, as before.
  • The direct-message counter and the new-message screen wake, which were suppressed by the same issue, work again.

BLE and WiFi builds are unaffected -- they already track their real connection state, so on-device counts intentionally stay at zero while the companion app is connected and update once it disconnects.

Only the T-Deck Max build is updated in this release; all other devices remain on v1.12.2.

First-Time Flashing

Each build comes in two forms:

  • <name>-merged.bin -- bootloader, partition table, and firmware in a single image. Flash at address 0x0. Use this for a first-time flash, when coming from other firmware, or if a device will not boot after an update.

  • <name>.bin -- application firmware only. Use this to update an existing Meck install, including OTA updates from your phone (Settings -> OTA Tools).

The partition layout supports dual OTA slots, so the previous firmware remains on the inactive partition as an automatic rollback target if a new image fails to boot.

MeshCore Companion Apps

BLE variants connect to the standard MeshCore companion apps:

WiFi variants connect via TCP on port 5000:

Meck v1.12.2 (patch): Notes & WiFi password 'q' input fix

Choose a tag to compare

@pelgraine pelgraine released this 16 Jun 21:13

v1.12.2 is a small patch release on top of v1.12.1. It fixes a regression on the T-Deck Pro and T-Deck Max where pressing "q" (or "Q") during text entry was caught as a back/exit shortcut instead of being typed. This affected two screens -- the Notes editor and the WiFi password prompt -- so any note or WiFi password containing the letter "q" could not be entered. Both screens now accept "q"/"Q" as normal characters, with Shift+Backspace used to leave instead.

What's Changed in v1.12.2

Notes editor -- "q" now types instead of exiting

Previously, pressing "q" while editing a note could exit the editor (when the buffer was empty or unchanged) rather than inserting the letter. "q"/"Q" are now entered like any other character. Shift+Backspace continues to save and exit.

WiFi password entry -- "q" now types instead of jumping back

In the WiFi password screen, "q"/"Q" were intercepted and sent you back to the network list, so passwords containing those letters could not be entered. They are now accepted as password characters. Shift+Backspace returns to the network list, and the on-screen footer now reads Enter:Connect Sh+Del:Exit.

All other devices and features are unchanged from v1.12.1.

First-Time Flashing

Each build comes in two forms:

  • <name>-merged.bin -- bootloader, partition table, and firmware in a single image. Flash at address 0x0. Use this for a first-time flash, when coming from other firmware, or if a device will not boot after an update.

  • <name>.bin -- application firmware only. Use this to update an existing Meck install, including OTA updates from your phone (Settings -> OTA Tools).

The partition layout supports dual OTA slots, so the previous firmware remains on the inactive partition as an automatic rollback target if a new image fails to boot.

MeshCore Companion Apps

BLE variants connect to the standard MeshCore companion apps:

WiFi variants connect via TCP on port 5000:

Meck v1.12.1: T-Deck Max battery capacity correction

Choose a tag to compare

@pelgraine pelgraine released this 10 Jun 23:01

v1.12.1 is a small patch release on top of v1.12. It corrects the configured battery capacity for the T-Deck Max from 1500 mAh to 1400 mAh, matching the cell actually shipped in the device. This improves the accuracy of battery percentage and runtime estimates on the Max.

What's Changed in v1.12.1

T-Deck Max battery capacity -- 1500 -> 1400 mAh

The Max's battery capacity was set to 1500 mAh; it is now 1400 mAh to reflect the real cell. No other behaviour changes.

All other devices and features are unchanged from v1.12..

Despite the LilyGO T-Deck Max readme reflecting 1500mAh, I've removed the battery from my Max (to put in a 2500mAh battery with a custom case) and can confirm my T-Deck Max battery was actually the same 1400mAh used in the T-Deck Pro.

Screenshot 2026-06-11 at 8 56 44 am IMG_3378

First-Time Flashing

Each build comes in two forms:

  • <name>-merged.bin -- bootloader, partition table, and firmware in a single image. Flash at address 0x0. Use this for a first-time flash, when coming from other firmware, or if a device will not boot after an update.

  • <name>.bin -- application firmware only. Use this to update an existing Meck install, including OTA updates from your phone (Settings -> OTA Tools).

The partition layout supports dual OTA slots, so the previous firmware remains on the inactive partition as an automatic rollback target if a new image fails to boot.

MeshCore Companion Apps

BLE variants connect to the standard MeshCore companion apps:

WiFi variants connect via TCP on port 5000:

Meck v1.12: RX log, RX packet counter, plus T-Deck Max power fixes

Choose a tag to compare

@pelgraine pelgraine released this 06 Jun 21:30

v1.12 is a polish-and-power release across all three companion devices. The headline addition is an on-device Rx Log packet sniffer -- a live view of every packet your radio hears -- available on every build. Alongside it: an unread badge for the SMS inbox, a batch of T-Deck Max power, wake, and GPS fixes, and a set of channel and repeater refinements.

What's New in v1.12

Rx Log packet sniffer -- all devices

A new on-device packet sniffer, mirroring the Rx Log in the MeshCore companion app. Open it from Settings -> Rx Log >>. It captures every packet the radio receives -- including relays destined for other nodes, since capture happens before filtering -- into a buffer of the most recent 100 packets, newest first. Each entry shows the route type (flood/direct) and payload type, the receive time and wire size, the packet hash, the hop path, and the channel hash/name (group messages) or the From/To node hashes (addressed packets). For channel messages your device can decrypt, the decoded "sender: message" line is attached too. The log is RAM-only and clears on reboot.

A running RX packets count also appears on the radio details page on the home screen, just beneath the noise-floor reading. It counts flood and direct packets received since boot and resets on reboot or when you change radio parameters.

SMS Inbox unread badge -- 4G and Max

The SMS app's inbox entry now shows a count of unread received messages in brackets (e.g. SMS Inbox [3]), and the badge disappears once everything is read. Read state is stored per message on the SD card, so the count survives reboots and modem power-cycles. Opening a conversation marks it read.

T-Deck Max power, wake, and GPS fixes

  • USB-C wake after shutdown -- after a full power-off, plugging in USB-C now reliably powers the Max back on. The Max uses the SY6970 charger (0x6A); its BATFET shutdown is now handled to match, so charger plug-in re-wakes the board.
  • GPS power -- GPS power on the Max is routed through the XL9555 I/O expander rather than a dedicated pin; powering it on and off now works correctly.
  • CPU frequency scaling -- idle / boost / low-power CPU management to trim current draw, with the low-power floor held at 80 MHz (40 MHz breaks I2C on the Max).
  • Idle BLE power -- the BLE controller now stays powered down until you first turn Bluetooth on, reclaiming its idle current in the standalone-first default. This applies to all ESP32 BLE builds, not just the Max.
  • Minesweeper -- grid alignment fixes and a larger 15x20 / 50-mine board sized to the Max e-ink panel.

Channel and repeater refinements -- all devices

  • Region on incoming messages -- the message path-detail view now shows the resolved region for scoped channel messages it recognises.
  • Path detail -- the route line now reports hop count and bytes-per-hop (e.g. "2 hops (2-byte)"), and the last-message age line shows hop/byte info.
  • Repeater admin -- two new configuration commands: Set Flood Max Unscoped (flood.max.unscoped) and Set Flood Adv Max (flood.max.advert).

Documentation

The README and the hyperlinked Meck_README_v1.12.pdf are updated for this release.

First-Time Flashing

Each build comes in two forms:

  • <name>-merged.bin -- bootloader, partition table, and firmware in a single image. Flash at address 0x0. Use this for a first-time flash, when coming from other firmware, or if a device will not boot after an update.

  • <name>.bin -- application firmware only. Use this to update an existing Meck install, including OTA updates from your phone (Settings -> OTA Tools).

The partition layout supports dual OTA slots, so the previous firmware remains on the inactive partition as an automatic rollback target if a new image fails to boot.

Build Files

Grouped by device. Each variant ships as a merged (-merged.bin, first flash) and non-merged (.bin, OTA / update) pair.

T-Deck Max (every variant runs the 4G modem and ES8311 audio together)

  • Max -- BLE / WiFi / Standalone

T-Deck Pro

  • Audio -- BLE / WiFi / Standalone (PCM5102A: audiobook player, alarm clock, voice notes)
  • 4G -- BLE / WiFi / Standalone (A7682E modem: SMS & phone app)

T5 E-Paper S3 Pro

  • T5S3 -- BLE / WiFi / Standalone (NOGPS)

Documentation PDF

Meck_README_v1.12.pdf is included in this release -- it covers all keyboard controls, touch gestures, screen navigation, settings, and feature documentation for every platform, in PDF form for convenience.

MeshCore Companion Apps

BLE variants connect to the standard MeshCore companion apps:

WiFi variants connect via TCP on port 5000:

Meck v1.11 -- T-Deck Max Support

Choose a tag to compare

@pelgraine pelgraine released this 04 Jun 18:56

⚠️ Files from 2+hrs ago have now been patched with the correct bootloader. Please re-download fresh copies if you've been having trouble booting for the first time⚠️

This release adds the LilyGo T-Deck Max as a supported device. It runs the full Meck v1.11 feature set with the same on-device UI, keyboard controls, and screens as the T-Deck Pro -- all of those apply unchanged. The firmware version stays at v1.11 because the core feature set is the same, but the Max has hardware the other boards don't, so this build exposes several capabilities the standard T-Deck Pro builds can't.

If you are on a standard T-Deck Pro, T-Deck Pro 4G, T-Deck Pro Audio, or T5S3, use the v1.11 release builds instead.


What the T-Deck Max Adds

The headline difference is hardware: the Max carries an A7682E 4G modem and an ES8311 audio codec at the same time, wired through an XL9555 I/O expander. On the T-Deck Pro the modem and the audio DAC share one hardware slot and are mutually exclusive; on the Max you get the SMS & Phone app, the audiobook player, the alarm clock, and cellular data on a single device. The Max also adds a CST328 capacitive touchscreen, three capacitive front buttons, a DRV2605 haptic motor for vibrate alerts, an e-ink frontlight, and a 1500 mAh battery with a BQ27220 fuel gauge.

4G and Audio at the Same Time

Every Max build includes both the 4G modem and the audio codec -- there is no "audio vs 4G" split like the T-Deck Pro. The home screen carries the full app set: Audiobooks (P), Alarm (K), Phone & SMS (T), Browser & IRC (B), Discover (F), and Voice Messages (Mic). Audio output runs through a shared speaker mux that switches between the modem (calls, ringtones, modem tones) and the ES8311 codec (audiobooks, alarms, notification MP3s) automatically.

The Max records and plays voice notes through its ES8311 codec (the same output path that drives audiobooks and alarms). Sending a recorded note over the mesh is not yet verified -- see Known Limitations below.

Antenna (Internal / External)

The Max has both an on-board internal antenna and an external MMCX antenna connector, with a switch in Settings to select between them. Internal is the default -- if you want to use an external MMCX antenna, change the switch in Settings first.

E-Ink Frontlight with Adjustable Brightness

The Max has an e-ink frontlight -- a first for the T-Deck line. The on-level is set in Settings → Backlight Brightness, adjustable from 5% to 100% in 5% steps (default 100%); this setting only appears on the Max. You can switch the frontlight on with the new Heart capacitive button (turns on at the configured brightness) or with Alt + B (turns on at minimum brightness).

Capacitive Touch Buttons

The Max adds a CST328 capacitive touchscreen plus three capacitive buttons along the front bezel, none of which the T-Deck Pro has:

  • Heart -- toggle the e-ink frontlight (see above)
  • Speech bubble -- jump straight to the channel picker (same as pressing M)
  • Paper plane -- jump straight to the DM inbox

Buzzer (Vibrate) Notifications

The Max's DRV2605 haptic motor can be used for silent alerts. In Settings → Channels, highlight a channel, press T to open the notification tone picker, and choose the new Buzzer (vibrate) entry (just below "Default (silent)"). Incoming messages on that channel pulse the motor instead of sounding a tone -- useful for silent alerts. The Max also supports custom MP3 tones from the /alarms/ folder, like the T-Deck Pro audio variant.

Multi-Constellation GPS

The Max's GPS is configured for multi-constellation positioning -- GPS, Galileo, and BeiDou (via the $PCAS04,7 command) -- for faster fixes and better coverage than single-constellation GPS.

Keyboard Backlight

Press both Shift keys together to toggle the keyboard backlight on and off.

Audiobook .m4b Filtering

The audiobook player now hides .m4b files from the file list. M4B (chaptered audiobook) playback is not supported yet, so filtering them out keeps unplayable files from cluttering the explorer. This applies to all audio-capable builds, not only the Max.


Known Limitations

  • Voice-note sending is unverified. Voice-note recording and playback both work on the Max -- capture runs through the ES8311 ADC and playback through the ES8311 output. Sending a recorded note over the mesh is implemented but has not yet been verified end to end on the Max.
  • No audio under the M5 Launcher. The -merged.bin images boot and run correctly when flashed through version 2.7.2 of bmorcelli's M5 Launcher, but audio playback does not currently work in that configuration. bmorcelli is aware of the issue and working on a fix.
  • Gyroscope not yet supported. The Max has a Bosch BHI260AP gyroscope (I2C address 0x28) that the T-Deck Pro does not have. Meck does not use it yet; support is planned for a future release. See the LilyGo T-Deck-MAX hardware repo.
  • Higher average power draw than the T-Deck Pro. Each Max environment variant currently draws more average power than the equivalent T-Deck Pro build. This is under investigation and will be refined in future Meck firmware releases.

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

T-Deck Max Firmware Variants

Three companion firmware variants for the LilyGo T-Deck Max. Every variant includes both the 4G modem and the ES8311 audio codec, the web reader / IRC client, and up to 2,000 contacts and 40 channels.


v1.11-Meck-Max-BLE.bin
Full-featured build with BLE companion app support -- messaging, contacts, direct messages, repeater admin, e-book reader, notes, emoji, multi-constellation GPS, map viewer, SMS & Phone app, IRC client, web browser, OTA firmware update, custom notification tones, buzzer (vibrate) alerts, games, config export/import, private channels, the audiobook player, alarm clock, and voice notes (record and play). Up to 2,000 contacts and 40 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.11W-Meck-Max-WiFi.bin
Same as the Max-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 40 channels.

v1.11-Meck-Max-Standalone.bin
No BLE or WiFi companion -- maximum battery life. Full standalone operation with all on-device features, including the audiobook player, alarm clock, voice notes (record and play), and SMS & Phone over the 4G modem. The web reader and IRC client remain available via the modem's data path. Up to 2,000 contacts and 40 channels.


Meck_README_v1.11.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.

MeshCore Companion Apps

The BLE variant connects to the standard MeshCore companion apps:

The WiFi variant connects via TCP on port 5000:

Meck v1.11 -- Private Channels, Channel Sharing, Config Export/Import

Choose a tag to compare

@pelgraine pelgraine released this 22 May 22:10

This release adds private channel support, the ability to share channels with other Meck users via encrypted DM, and a full config export/import system for backing up and migrating device configurations. Also includes two new emoji, an expanded Minesweeper grid on the T5S3, and a fix for contacts with stuck clocks sinking in the recency-sorted contacts list.


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.10

Private Channels

Meck now supports private channels alongside the existing public hashtag channels. The difference is in how the channel secret is generated:

  • Public (hashtag) channels — type a name starting with # (e.g. #camping). The 16-byte secret is derived deterministically from the name via SHA-256, so anyone on any MeshCore device who creates the same hashtag name gets the same key and can communicate on that channel.
  • Private channels — type a name without the # prefix (e.g. team-alpha). A cryptographically random 16-byte secret is generated, meaning only devices that have been explicitly given the key can participate.

How to create a private channel:

  1. From the home screen, press S to open settings
  2. Scroll down to the Channels >> section and press Enter to open it
  3. Navigate to + Add Channel (# = public) and press Enter
  4. Type the channel name without a # prefix, then press Enter

The channel is created with a random secret. To let other Meck users join, use channel sharing (see below).

Channel Sharing via DM

You can now share any channel — public or private — with another Meck user by sending them the channel name and secret as an encrypted direct message. This is particularly useful for private channels, where sharing the secret manually would mean typing 32 hex characters.

How to share a channel:

  1. From the home screen, press S to open settings
  2. Scroll down to the Channels >> section and press Enter to open it
  3. Navigate to the channel you want to share
  4. Press C to open the contact picker
  5. Select a contact and press Enter to send

The recipient's device automatically adds the channel to their channel list (if it doesn't already exist and there's an empty slot). An alert confirms the channel was added. In the DM conversation, both sender and recipient see a sanitised message ("Shared channel: name") rather than the raw protocol data.

On the T5S3, channel sharing works the same way via the CardKB keyboard.

Config Export/Import

A new Export/Import >> sub-screen in Settings lets you back up and restore your device configuration via JSON files on the SD card. This is useful for migrating settings to a new board, keeping a backup before reflashing, or cloning a configuration across multiple devices.

Exporting:

  1. From the home screen, press S to open settings
  2. Scroll down to Export/Import >> and press Enter
  3. Select Export to SD >> and press Enter
  4. Toggle which sections to include using Enter on each checkbox:
    • Identity — public and private key (full identity backup)
    • Radio Settings — frequency, bandwidth, spreading factor, coding rate, TX power, and GPS position
    • Channels — all channel names and secrets
    • Contacts — all contacts with public keys, type, flags, position, and timestamps
    • Auto-Add Prefs — contact auto-add mode and per-type toggles
  5. Navigate to >> Export Now and press Enter

The config is saved as a timestamped JSON file in /meshcore/ on the SD card (e.g. meshcore_config_20260523_1430.json). The format is compatible with the MeshCore companion app config export.

Importing:

Place a file named import.json in the /meshcore/ folder on your SD card. Then either:

  • From settings: go to Export/Import >> → Import from SD and press Enter
  • On boot: the firmware automatically checks for /meshcore/import.json at startup and imports it if found

If the import includes a different identity (private key), the device reboots after applying the new identity. Channels and contacts are merged into the existing configuration.

Contact Recency Fix

A fix to the onAdvertRecv handler ensures that contacts are always bumped to the top of the recency-sorted contacts list when their adverts are heard, even if the advertising node has a stuck or behind clock. Previously, the MeshCore base class replay guard would silently discard adverts with timestamps that hadn't advanced, causing actively heard nodes to sink to the bottom of the contacts list over time.

New Emoji

Two new emoji have been added: 💯 (hundred points) and 😁 (grinning face), bringing the total to 79 emoji. They appear near the top of the picker after the zany face emoji.

T5S3 Minesweeper Expanded

The Minesweeper grid on the T5S3 has been expanded from 9×9 (10 mines) to 14×14 (25 mines), taking advantage of the larger virtual display. The T-Deck Pro retains the original 9×9 beginner grid.

Other Changes

  • T5S3 channel picker UI — updated footer hints: delete confirmation now shows "Tap:Yes Boot:Cancel" (previously "Enter:Yes Q:Cancel"), and the long-press footer shows "Long Press:Del Hist Boot:Back" for clarity.
  • T-Echo Card and T-Echo Lite variants removed — these nRF52840 variant folders have been removed from the repository as they are no longer being actively developed.
  • Ko-fi funding option added alongside GitHub Sponsors.

T-Deck Pro Firmware Variants

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


v1.11-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, OTA firmware update, custom notification tones, games, config export/import, and private channel support. Up to 2,000 contacts and 40 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.11W-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 40 channels.

v1.11-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 40 channels.

v1.11A-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. Custom notification tones with full MP3 flexibility. Up to 2,000 contacts and 40 channels.

Do not flash this on the 4G variant -- the I2S audio pins (GPIO 7, 8, 9) conflict with the A7682E modem control lines.
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.11AW-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 and custom notification tones. No BLE companion app support. Up to 2,000 contacts and 40 channels.

Do not flash this on the 4G variant -- same GPIO conflict applies.

v1.11A-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 and custom notification tones. 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 40 channels.

Do not flash this on the 4G variant.


T5S3 E-Paper Pro Firmware Variants

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


v1.11-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 40 channels.

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

v1.11-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 40 channels.

**`v1.11-Meck-T5S3Pro-Sta...

Read more

Meck v1.10 -- Custom Channel Notification Tones, Per-Channel Notifications, Message History Deletion, Games

Choose a tag to compare

@pelgraine pelgraine released this 14 May 23:37

A feature-packed update for the T-Deck Pro. This release adds custom notification tones for both the Audio and 4G variants, per-channel notification preferences with @mention support, the ability to delete message history per channel, a games menu with Snake and Minesweeper, and expands the maximum group channel count to 40 across all builds.


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.9

Custom Notification Tones (Audio + 4G Variants)

Each channel can now have its own notification tone instead of the default buzzer. When a message arrives on a channel with a custom tone assigned, that tone plays through the speaker and the buzzer is suppressed.

How to set a custom tone:

  1. From the home screen, press S to open settings
  2. Scroll down to the Channels >> section and press Enter to open it
  3. Navigate to the channel you want to customise
  4. Press T to open the tone picker
  5. Use W/S to browse the available tones, then press Enter to select
  6. To remove a custom tone, select Default (silent) from the top of the list

Audio variant (PCM5102A DAC): A selection of bundled tones are copied to the /alarms/ folder on the SD card on first boot. You can also drop your own MP3 files into that folder -- they'll appear in the tone picker alongside the bundled options. This gives you complete flexibility to use any short MP3 as a notification sound.

4G variant (A7682E modem): Seven bundled notification tones are embedded in the firmware as 8kHz mono WAV files. On first boot (with the 4G modem enabled in settings and the red LED on and blinking to indicate the modem is ready), the tones are transferred to the modem's internal filesystem. Playback goes through the modem's own speaker amplifier. Custom user-supplied tones are not supported on the 4G variant -- only the bundled set is available. The 4G modem must be switched on in settings for the notification tones to work, as all audio output on the 4G variant goes through the modem hardware.

Available bundled tones: Bell, Ding, High Trill, Low Soft Ding (x2), Mid Trill, and Soft Notif. All are short, 1-2 second alert sounds.

Per-Channel Notification Preferences

Each channel and the DM inbox can now be individually set to one of three notification levels:

  • All -- notify on every message (default)
  • @ (Mentions) -- only notify when someone tags you with @YourNodeName or @[YourNodeName] in their message
  • Off -- completely muted (no buzzer, no custom tone, no keyboard backlight flash, no screen wake, no toast popup)

Messages are always stored in history regardless of the notification setting -- only the alerts and unread badges are suppressed. You won't miss anything; you just won't be interrupted.

How to set notification preferences:

  1. From the home screen, press S to open settings
  2. Scroll down to the Channels >> section and press Enter to open it
  3. Navigate to the channel you want to configure
  4. Press N to cycle through the three modes: All, @, Off
  5. The current setting is shown in the channel row as N:All, N:@, or N:Off

The @mention detection is case-insensitive and supports both the plain @NodeName format and the bracketed @[Node Name] format used by the MeshCore companion app.

Delete Message History

You can now clear all stored messages for any individual channel or the DM inbox without removing the channel itself. This is useful for tidying up busy channels or clearing old conversations.

How to delete message history:

  1. From the home screen, press M to open channel messages
  2. Press A or D to open the channel picker
  3. Navigate to the channel you want to clear
  4. Press X to bring up the delete confirmation overlay
  5. Press Enter to confirm, or Q to cancel

On the T5S3, long-press a channel in the channel picker to bring up the same confirmation.

The channel itself is not removed -- only its message history. The unread counter is reset and the change is saved to SD immediately. New messages will continue to appear as they arrive.

Games

Press J from the home screen (or tap the Games tile on the T5S3) to open the games menu. Two classic games are included:

Snake -- the Nokia classic. Guide the snake around the screen to eat food and grow longer. The game ends if you crash into the walls or your own tail. The game runs at a pace suited to the e-ink refresh rate, so it's surprisingly playable.

Key Action
W Turn up
A Turn left
S Turn down
D Turn right
Q Quit to games menu
IMG_2933

Minesweeper -- clear the board without hitting a mine. Each revealed cell shows a number indicating how many of its eight neighbours contain mines. Use flags to mark cells you suspect are mined so you can keep track of your progress. Clear all non-mine cells to win.

Key Action
W / A / S / D Move cursor
Enter Reveal cell
F Toggle flag on cell
Q Quit to games menu
IMG_2932

Other Changes

  • MAX_GROUP_CHANNELS expanded to 40 across all T-Deck Pro build variants (previously 20). This accommodates networks with large channel lists.

Known Limitations

  • 4G ringer cannot be silenced via software. The A7682E modem drives the speaker directly on incoming calls through its SPKP/SPKN pins. There is no software-accessible path to mute or intercept the hardware ringer. If you need silence, the modem can be toggled off in settings -- incoming calls will not be received while the modem is off, but LoRa messaging continues to work normally.

T-Deck Pro Firmware Variants

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


v1.10-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, OTA firmware update, custom notification tones, and games. Up to 2,000 contacts and 40 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.10W-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 40 channels.

v1.10-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 40 channels.

v1.10A-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. Custom notification tones with full MP3 flexibility. Up to 2,000 contacts and 40 channels.

Do not flash this on the 4G variant -- the I2S audio pins (GPIO 7, 8, 9) conflict with the A7682E modem control lines.
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.10AW-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 and custom notification tones. No BLE companion app support. Up to 2,000 contacts and 40 channels.

Do not flash this on the 4G variant -- same GPIO conflict applies.

v1.10A-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 and custom notification tones. 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 40 channels.

Do not flash this on the 4G variant.


T5S3 E-Paper Pro Firmware Variants

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


v1.10-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 a...

Read more

Meck v1.9 — Trace Route Screen, DM Persistence, Minor fixes

Choose a tag to compare

@pelgraine pelgraine released this 07 May 10:35

A small but meaningful update for the T-Deck Pro and T5S3 E-Paper Pro. This release adds an on-device trace route screen, fixes DM message history loss across reboots, and patches a handful of settings that weren't being persisted properly.


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.8

🔍 Trace Route Screen (T-Deck Pro)

Meck now has an on-device equivalent to the trace path feature in the MeshCore companion app. Press R from the home screen to open the trace screen, build a repeater chain, and run a trace — no BLE/WiFi pairing or phone needed.

The path can be built two ways:

  • + Add repeater — opens a picker showing all known Repeater contacts. Press Enter on a repeater to append it to the path. Repeat to build multi-hop chains.
  • Type Path — opens an inline text editor for comma-separated decimal hash values (e.g. 3601,2198,1244,2198,3601), matching the format the companion app uses. Useful when the repeater isn't in your contacts but you know its hash.

Once the path is built, select Run Trace and Meck sends a PAYLOAD_TYPE_TRACE packet direct-routed through the chain. Each repeater that recognises its hash appends its receive SNR before forwarding. When the packet completes the round-trip, the screen shows per-hop SNR results and the round-trip time.

A few things worth knowing:

  • The path must be symmetric for a round-trip. To trace through repeaters A → B → C and back, type A,B,C,B,A. You also need to be able to hear the last repeater in the chain (the one that responds) directly.
  • 1-byte vs 2-byte hash mode is selectable on the screen and follows your device's path.hash.mode setting by default. The companion app uses 2-byte mode in most regions.
  • Up to 16 hops, with a 30-second timeout per trace.
Key Action
W / S Navigate menu items
Enter Select / confirm / open editor
A / D Toggle hash mode (1-byte / 2-byte) on the mode row
0–9 , Enter path values when the inline editor is open
Q Cancel edit / back to home screen

T5S3 users with a CardKB attached can also access the trace screen via the R key.

📩 DM Message Persistence

DM message history now survives reboots correctly. Previously, the in-memory ChannelMessage struct tracked which peer each DM belonged to, but the on-disk MsgFileRecord did not — so although the messages themselves were saved to SD, every DM lost its peer association on reload and ended up in a single muddled bucket.

The fix adds a dm_peer_hash field to the on-disk record and bumps MSG_FILE_VERSION from 3 to 4. New DMs received under v1.9 will persist correctly with their peer association intact.

⚠️ Existing v1.8 message history on the SD card will be discarded on first boot of v1.9 due to the version bump. Channel messages and DMs received under v1.8 will not migrate forward — only messages received from v1.9 onward will appear in your history. This is a one-time event.

Minor Home UI Alignment Update (T-Deck Pro)

The hibernate and shutdown icon vertical positioning has been corrected to sit consistently with the prompt text below it.

Persistence Fixes

Three settings that should have been saving across reboots but weren't:

  • Font Style — the Classic / Noto Sans / Montserrat selection now sticks across power cycles (previously reverted to Classic on every boot).
  • Default Region (scope name) — the region tag set in Settings → Default Region now persists.
  • Default scope key — the corresponding 16-byte channel secret now persists, so channels created under a default region keep working after reboot.

These fields were defined in NodePrefs but were missing from the loadPrefs/savePrefs reads and writes in DataStore, so they silently reset to defaults on every boot. They now load and save correctly alongside the rest of the preferences.


T-Deck Pro Firmware Variants

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


v1.9-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.9W-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.9-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.9A-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.9AW-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.9A-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.9-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.9-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.9-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).


📄 Meck_README_v1.9.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.

MeshCore Companion Apps

BLE variants connect to the standard MeshCore companion apps:

WiFi variants connect via TCP on port 5000:

Meck v1.8 — Diacritics, Faster Page Scroll, True Power Off, BLE Boost

Choose a tag to compare

@pelgraine pelgraine released this 03 May 11:29

An update for the T-Deck Pro and T5S3 E-Paper Pro. This release adds accented character support for international users, page scroll on all list screens, true deep sleep power-off, BLE performance improvements, and numerous fixes. Ten firmware variants across 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 (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.7

🇨🇿 Accented Character Support

Meck now properly handles accented and diacritical characters throughout the UI — channel messages, contact names, and the e-book reader. Czech (ěščřžýáíé), Polish (ąćęłńóśźż), French (àâçéèêëïôùûü), German (äöüß), and all other Latin Extended characters are now supported.

Previously, non-ASCII characters in received messages would either disappear entirely or render as emoji sprite artifacts. All three font styles now display these characters correctly — no more missing letters where diacritics used to be.

Noto Sans at Larger text size renders accented characters with their full diacritical marks (carons, accents, cedillas, etc.) thanks to regenerated font files with Latin Extended-A glyph coverage. All other font and size combinations fold accented characters to their ASCII base letter (ě→e, ž→z, ñ→n, etc.) — you won't see the diacritic marks, but the letter itself is always visible.
586669026-a3d22972-4b66-4b2c-b736-528f814b9ca4
586668415-a3c38456-b98c-47f6-8c41-6cbacb2901c4

Faster Page Scroll (T-Deck Pro)

Shift+W and Shift+S now jump a full page at a time on all scrollable list screens: Contacts, Discovery, Last Heard, Notes (file list), Text Reader (file list), and Settings. The page size is calculated from the screen height and current font metrics, so it adapts automatically to your font and text size choices.

Single-press W/S still scrolls one item at a time.

True Power Off (T-Deck Pro)

The home screen now includes a Shutdown page. Selecting it enters ESP32-S3 deep sleep with no software wake sources — the CPU halts, peripheral power is cut (keyboard, fuel gauge, sensors), and the LoRa module is powered down with NSS held high to prevent parasitic current draw.

Only a hardware reset (reset button) or USB power-on will wake the device. This replaces the previous hibernate behaviour which maintained wake-on-packet capability. The old hibernate (with wake-on-LoRa) remains available on the auto-lock timeout.

New Emoji

Beer mug (🍺) added as emoji #77. The emoji picker now has 77 total sprites.

586668547-bd80ae7c-5d09-4016-b1ea-7d219a0d681c 586668673-89009912-e1af-45ee-8923-8023b5bed023

BLE Performance Improvements

The BLE companion transport has been upgraded for faster sync with companion apps:

  • 2M PHY negotiation — requests doubled air data rate on BLE 5.0 capable phones (supported on ESP32-S3)
  • Data Length Extension (DLE) — requests 251-byte link-layer PDU for larger transfers per connection event
  • Faster write interval — reduced from 15ms to 7ms between BLE writes
  • Larger frame size — MAX_FRAME_SIZE increased from 172 to 255 bytes
  • All channels marked read on app connect — connecting the companion app now clears all unread badges, so the device UI stays in sync with what you've seen in the app

Bug Fixes & Improvements

  • First-boot SPIFFS formatting — first-time flashers previously saw a static "Loading..." screen for 1-2 minutes while the internal storage partition was formatted, with no indication anything was happening. The device now displays "Formatting storage... First boot - please wait" during the format. If the auto-format fails (e.g. the partition contains leftover data from a previous firmware like stock LilyGo or Meshtastic), the partition is explicitly erased and reformatted with retries, rather than leaving the firmware in a broken state with no persistence.
  • Contact save deferral — contact saves are now deferred until 15 seconds after the last keypress, preventing SPI bus contention and micro-stutters during active typing. Voice session save deferral continues to work as before.
  • Contact auto-add serial commands — the contact auto-add settings (previously only configurable via the Settings screen or companion app) are now available via serial CLI: set contact.mode, set contact.autoadd, set contact.maxhops. The get all diagnostic output now includes contact mode info.
  • UTF-8 word wrapping — channel messages containing multi-byte UTF-8 characters now wrap correctly instead of breaking mid-character.

T-Deck Pro Firmware Variants

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


v1.8-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.8W-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.8-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.8A-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.8AW-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.8A-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.8-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.8-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.8-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).


📄 Meck_README_v1.8.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.

MeshCore Companion Apps

BLE variants connect to the standard MeshCore companion apps:

Read more

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

Choose a tag to compare

@pelgraine pelgraine released this 19 Apr 11:28

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 ...

Read more