Meck-P4 v0.6.4
Pre-releaseMeck-P4 v0.6.4
⚠️ 18 July update: This release has a bug with the rx duty cycle. Release notes have been left up for record-keeping purposes. Please use version v0.6.5 or v0.6.3 instead.⚠️
This release rolls up everything since v0.6.2-patch. v0.6.3 was never tagged as
its own release, so its changes are folded in here.
New features
-
Mentions-only channel notifications. A channel set to the Mentions
notification level now only raises an unread badge and plays a tone when a
message actually tags this node. Both tag forms are matched
case-insensitively:@[node name]as sent by the MeshCore companion app, and
a plain@nodename. All and None behave as before. Message history is never
hidden; only the unread badge is gated. -
Reply from the path popup. Long-pressing a received channel message now
shows a Reply button next to Copy Path. It prefills the composer with
@[sender]so the reply tags the sender (and their Mentions filter catches
it), and names containing spaces survive. The button is hidden for your own
messages and in DMs. -
Per-DM custom notification tones. Each DM can now have its own
notification tone. Tap the music icon in the DM view to pick one. -
Tap-to-toggle battery display. Tap any battery reading to switch every
copy of it, on the home tiles and in the screen headers, between percentage
and cell voltage. -
Boot button screen off/on. A press of the BOOT button now blanks the
screen, and another press wakes it. -
Contacts on the share-channel screen. The share-channel screen now lists
your contacts to pick from directly.
Power
- MCU-driven RX duty cycle, enabled by default. The SX1262 now duty-cycles
its receive window instead of listening continuously, reducing idle radio
current. The listen and sleep windows are sized from the preamble airtime at
the current spreading factor and bandwidth, so an incoming preamble always
overlaps a listen window and packets are not missed. The radio holds RX while
a packet is in flight and wakes to standby before transmitting, and it falls
back to continuous RX automatically when the preamble is too short to carve
out a safe sleep window.
Changes and fixes
- Removed the per-channel delete buttons from the channel picker.
- Fixed the heading placement in the channel picker.
- Removed leftover web-fetch test code.
- Corrected the BQ27220 design-capacity note (the cell is verified at 1000 mAh).
Comment only, no behaviour change.
Developer and diagnostics
- New
cmdmode_testexample (main/examples/cmdmode_test). A standalone
diagnostic that probes the RM69A10 over the DBI command path: it brings the
panel up, reads back its mode registers, replays the vendor init sequence, and
streams test pixels into GRAM, reading mode registers back at each stage. Used
to investigate command-mode / self-refresh display for power management. Built
via the newEXAMPLE_BUILD_CMDMODE_TESToption inmain/Kconfig.projbuild.
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.
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
meck-p4-0.6.2.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.6.2.bin
(Replace PORT with /dev/cu.usbmodemXXXX on macOS, /dev/ttyACM0 on Linux, or COM3 on Windows.)
Upgrading from v0.6.2 or v0.6.1 does not require erase_flash. This patch changes program logic only and adds no new settings, so existing prefs carry over unchanged.
For the full feature list see the [README](https://github.com/pelgraine/Meck-P4/blob/main/README.md).
Reporting Issues
The Meck-P4 channel on the MeshCore Discord is the fastest path. GitHub Issues on the Meck-P4 repo also work for anything reproducible. Include the serial log if you can: Settings > Debug Logs > Start captures it to SD if a serial monitor isn't practical.
License
MIT for Meck-specific code. The combined firmware binary links libraries with mixed licensing including GPL-3.0 and LGPL-2.1 (Codec2) and is effectively GPL-3.0 when distributed.
⚠️ 18 July update: This release has a bug with the rx duty cycle. Release notes have been left up for record-keeping purposes. Please use version v0.6.5 or v0.6.3 instead.⚠️