Meck-P4
ForkA port of Meck (a MeshCore fork) to the LilyGo T-Display P4, targeting the ESP32-P4 main MCU. The onboard ESP32-C6 provides WiFi companion connectivity to the MeshCore app; BLE is not yet enabled. Features a full touch UI with virtual keyboard, channel messaging, repeater admin, trace route, position adverts, and private channels.
Fork of MeshCore (Reference)
- Maintainer
- pelgraine ↗
- Status
- Active
- Maturity
- Alpha
- Lifecycle
- Active
- Latest version
- 1
- Released
- 2026-08-04
- Runtime
- Arduino · C++
- Distribution
- Community
- Licensing
- Open source
- License
- GPL-3.0
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 role
Features
- ESP32-P4 main MCU with ESP32-C6 WiFi companion
- Touch UI with virtual keyboard
- Screen-off power saving
- Channel messaging and direct messages
- Repeater admin and room server
- Trace route and path view
- Position adverts and share position
- Private channels
- Per-contact path editor
- Region scope
Project signals
- GitHub stars
- 13
- Forks
- 1
- Watchers
- 2
- Open issues
- 1
- Contributors
- 2
- Release downloads
- 174
- Latest downloads
- 12
- Source available
- Yes
- Releases available
- Yes
- CI builds
- No
Releases
from GitHub · updated 2026-08-04v1 # Latest Pre-release 1 day ago · 2026-08-04 12:40 UTC
Meck-P4 v0.7.1 + DualMesh: Dual-Boot for the T-Display P4
Run Meck and a second firmware on the same T-Display P4, switching between them from a touch menu -- no PC needed after the first flash. This release packages Meck-P4 v0.7.1 for use with the DualMesh Boot Launcher, a fork of Mikhail-Za's DualMesh with the firmware-specific branding removed so any firmware can occupy either slot.
All of this has been tested on hardware: the launcher flashed via the MeshCore Web Flasher, and Meck installed from SD and booted alongside a second MeshCore firmware (Wadamesh) in the other slot.
The full DualMesh README is attached as a PDF and covers everything in depth -- the partition layout, preparing images, flashing, switching, going back to stock, and building from source.
What's in this release
file what it is flash how dualmesh-launcher-merged.bin The boot launcher: bootloader + partition table + launcher in one image Web flasher or esptool at 0x0, once v0_7_1-meck-tft.bin Meck-P4 v0.7.1, app-only, for the TFT (HI8561) display Copy to SD, install from the launcher v0_7_1-meck-amoled.bin Meck-P4 v0.7.1, app-only, for the AMOLED (RM69A10) display Copy to SD, install from the launcher Pick the Meck image matching your display SKU. Both are 6.24 MB and go in slot 0 (10.75 MB) -- they do not fit slot 1 (3.625 MB), which is free for a second, smaller firmware.
These app-only images are not interchangeable with the normal Meck release. The standard
meck-p4-0.7.1merged binary flashes a standalone device over USB and cannot be installed into a launcher slot; these app-only images install into a slot and cannot be flashed standalone at0x0. Same firmware, same v0.7.1 feature set (full release notes here), different packaging.
Setting it up
1. Flash the launcher (once)
This erases the device, including a standalone Meck install and its NVS settings. If Meck is already on the device with history and settings you care about, take a full backup first -- the DualMesh README covers restoring it.
- Go to https://flasher.meshcore.io/
- Scroll to the bottom and select Custom Firmware
- Select
dualmesh-launcher-merged.bin - Click OK on the merged-binary warning
- Click Flash, pick your device in the popup, and click Connect
Or with esptool:
pip install esptool esptool --chip esp32p4 -p PORT write-flash 0x0 dualmesh-launcher-merged.binOn macOS the T-Display P4 appears as
/dev/cu.wchusbserial*(not/dev/cu.usbmodem*) -- runls /dev/cu.*to find it. On Linux it is typically/dev/ttyACM0, on Windows a COM port likeCOM3. Use the right-side USB-C port (the data port).The launcher comes up with two slot cards, both
(empty).2. Install Meck from SD
- On a FAT32 microSD card, create a folder named
firmwareat the root - Copy your Meck app-only image (TFT or AMOLED) into it
- Insert the card, reboot into the launcher
- Tap the file to select it, tap Install > Slot 0, and wait for the progress bar
- Tap slot 0's Boot button
A brief cyan flash of the screen when installing or switching firmware is norm …
v0.7.1 # Pre-release 2 days ago · 2026-08-03 13:38 UTC
⚠️ Flashing this release will delete your existing channel message history. ⚠️
Channel history is now filed by channel identity rather than by slot number, which is what fixes history following the wrong channel after a delete or a companion-app rewrite. The old files cannot be trusted to belong to the channel now in their slot, so the first boot after upgrading removes them rather than migrating them. This happens once.
Not affected: your identity, contacts, channels themselves, radio and device settings, notes, and direct message history. Only stored channel messages are cleared. New messages accumulate normally from first boot.
This release brings full support for the **LilyGo T-Display-P4-Keyboard (K270)** -- physical typing across the whole UI, a brightness-controlled key backlight, and a second battery gauge column for the keyboard's 21700 pack -- together with a markdown Notes app, and a set of fixes to channel message history, WiFi companion recovery, and idle power draw.
It supersedes v0.7, which was never published. If you are coming from v0.6.5, everything below is new to you.
Meck_P4_README_v0.7.1.pdf is included in this release. It documents the keyboard end to end -- how to connect it safely, the battery model, the backlight, every key mapping -- plus the rewritten Notes section and the full settings reference.
First-Time Flashing: Read This First
Meck-P4 ships as a single merged binary (bootloader + partition table + application combined). One file, flash at offset
0x0.An SD card is recommended. With a FAT32-formatted card inserted, every saved setting, channel message, DM, room post, and note is mirrored or stored on the card, notification tones have somewhere to live, and the device recovers gracefully from a wiped NVS. Without an SD card the device still works but loses message history on reboot, and the Reader, Notes, and notification sounds have no storage.
Keyboard support is a build-time board type, not a runtime setting. A build made for the plain T-Display P4 ignores an attached K270 keyboard entirely, and a keyboard build runs correctly on a bare board -- it probes for the keyboard at boot and falls back to the on-screen keyboard when none answers. Download the image that matches your hardware.
Ensure you use the right-side USB-C port (the data port), not the high-speed charger port, to flash.
Flashing with the MeshCore Web Flasher (recommended)
- Go to https://flasher.meshcore.io/
- Scroll to the bottom and select Custom Firmware
- Select the
.binfile you downloaded - Click OK on the merged-binary warning
- Click Flash, pick your device in the popup, and click Connect
Flashing with esptool.py
pip install esptool esptool.py --chip esp32p4 -p PORT write_flash 0x0 meck-p4-0.7.1.bin(Replace
PORTwith/dev/cu.usbmodemXXXXon macOS,/dev/ttyACM0on Linux, orCOM3on Windows.)Upgrading from v0.6.5 does not require
erase_flash. Your existing settings carry over -- the one new preference (keyboard backlight level) is appended to the end of the prefs blob, and older blobs come up short and fall back to the 25% default. Channel message history is the exception: the old slot-keyed history files are purged once on first boot, for the reason described under Fixes below.
What's New Since v0.6.5
T-Display-P4-Keyboard (K270) support
The K270 keyboard is now fully supported. Meck talks to it directly -- an XL9555 I/O expander at
0x20and a TCA8418 keypad scanner at0x34, on a bit-banged I2C bus off the 1x4 P2 connector -- and polls the key FIFO from a 30 ms timer rather than the interrupt line, which keeps the d …v0.6.5 # Pre-release 17 days ago · 2026-07-19 07:00 UTC
Short on time at the moment so no release notes for this one. Sorts out the rx duty cycle bug some users were having with v0.6.4.
21 July edit - TFT version now up!
Device compatibility (1)
| Device | MCU | Radio | Status | Notes |
|---|---|---|---|---|
| LilyGo T-Display P4 | esp32-p4 | Semtech SX1262 | ✓ Supported |