All firmwares

Meck-P4

Fork

A 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

CompanionRepeaterRoom server

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

popularity 2026-08-05 verification 2026-08-05
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-04
  1. v1 # 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.1 merged 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 at 0x0. 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.

    1. Go to https://flasher.meshcore.io/
    2. Scroll to the bottom and select Custom Firmware
    3. Select dualmesh-launcher-merged.bin
    4. Click OK on the merged-binary warning
    5. 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.bin
    

    On macOS the T-Display P4 appears as /dev/cu.wchusbserial* (not /dev/cu.usbmodem*) -- run ls /dev/cu.* to find it. On Linux it is typically /dev/ttyACM0, on Windows a COM port like COM3. 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

    1. On a FAT32 microSD card, create a folder named firmware at the root
    2. Copy your Meck app-only image (TFT or AMOLED) into it
    3. Insert the card, reboot into the launcher
    4. Tap the file to select it, tap Install > Slot 0, and wait for the progress bar
    5. Tap slot 0's Boot button

    A brief cyan flash of the screen when installing or switching firmware is norm …

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

    correct port usage for flashing

    Flashing with the MeshCore Web Flasher (recommended)

    1. Go to https://flasher.meshcore.io/
    2. Scroll to the bottom and select Custom Firmware
    3. Select the .bin file you downloaded
    4. Click OK on the merged-binary warning
    5. 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 PORT with /dev/cu.usbmodemXXXX on macOS, /dev/ttyACM0 on Linux, or COM3 on 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 0x20 and a TCA8418 keypad scanner at 0x34, 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 …

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

Show all 16 releases →

Device compatibility (1)

✓ 1 Supported
DeviceMCURadioStatusNotes
LilyGo T-Display P4esp32-p4Semtech SX1262✓ Supported