SlopScupper
00 crowd

Meck

Meshcore + Fork = Meck. A fork created specifically to focus on enabling BLE & WiFi companion firmware for the LilyGo T-Deck Pro, T-Deck Max and T5 E-Paper S3 Pro. Created wholly with Claude AI using Meshcore v1.11 code. 100% vibecoded. 100% free.
Open repo on GitHubgithub.com/pelgraine/Meck
C · ★ 32 · 4 forks · MIT · paperwork by the Cap'mmostly ai (inferred)light human (inferred)works-on-my-machine (inferred)other
listed 9 hours ago by pelgraine · last checked 1 hour ago
The owner didn't write this. This repo never submitted itself. The Cap'm found it on a truffle trawl and wrote its paperwork from what GitHub already shows. Picked by hand by the Cap'm on 2026-09-11: MeshCore companion firmware for LilyGo T-Deck and e-paper devices, "Created wholly with Claude AI using Meshcore v1.11 code. 100% vibecoded.". 32 stars; MIT license. The owner did not submit this. Votes count; awards don't until the owner claims it.

I'm not calling your project slop! Geeze, it's a joke... Do you own this repo?

Log in with GitHub as pelgraine. There's no account to make: SlopScupper only asks GitHub who you are (read:user), never sees your code, and keeps just your id, login and avatar. Then you can:

  • Keep it, on your terms. Commit your own slopscore.md (spec) and press Refresh. Your paperwork replaces the Cap'm's, and you can submit it for Slop of the Day.
  • Take it down. One click on Remove. It stays gone; the trawl never brings it back.

Log in with GitHub

Can't log in as the owner? Request a takedown. No login needed, and a trawled listing comes down right away.

GitHub says
Meshcore + Fork = Meck. A fork created specifically to focus on enabling BLE & WiFi companion firmware for the LilyGo T-Deck Pro, T-Deck Max and T5 E-Paper S3 Pro. Created wholly with Claude AI using Meshcore v1.11 code. 100% vibecoded. 100% free.
topics
meshcore
created
2026-01-28 · pushed 4 days ago · 2695 commits · 101 contributors
release
v1.12.6 · 2026-07-26
languages
C 67%C++ 33%Python 1%Shell 0%Linker Script 0%Nix 0%
paperwork
licensereadme 42% health
dependencies
no dependency graph (no manifest, or disabled) · OSV.dev, checked 9 hours ago

Disclosures, inferred by the Cap'm

slopbucket
vibe-coded
category
other
ai_generated
mostly
human_touch
light
status
works-on-my-machine
language (detected)
ccpplinker-scriptnixpythonshell
topic (detected)
meshcore
license (detected)
mit

The Cap'm's log

The Cap'm wrote this paperwork, not the owner. This repo never submitted itself to SlopScore. The Cap'm picked it by hand: MeshCore companion firmware for LilyGo T-Deck and e-paper devices, "Created wholly with Claude AI using Meshcore v1.11 code. 100% vibecoded.". It carries the MIT license. The disclosures above are his best guess from what GitHub shows.

Is this yours? Commit a real slopscore.md and press Refresh to replace this, or remove the listing in one click. There's no account to make: you log in with GitHub.

README — the repo's own words, folded up so the grading fits on one screen

Meshcore + Fork = Meck

A fork created specifically to focus on enabling BLE & WiFi companion firmware for the LilyGo T-Deck Pro, LilyGo T-Deck Max & LilyGo T5 E-Paper S3 Pro. Created wholly with Claude AI using Meshcore v1.11 code. 100% vibecoded.

Check out the Meck discussion channel on the MeshCore Discord

Meck Watch -- the LilyGo T-Watch S3 and T-Watch S3 Plus firmware -- is a separate, private repository, available to monthly GitHub sponsors from $2 USD per month.

IMG_1453

Contents


Supported Devices

Meck currently targets three LilyGo devices and also supports the Heltec V3 and V4 as remote repeaters:

Device Display Input LoRa Battery GPS RTC
T-Deck Pro 240×320 e-ink (GxEPD2) TCA8418 keyboard + optional touch SX1262 BQ27220 fuel gauge, 1400 mAh Yes No (uses GPS time)
T-Deck Max 240×320 e-ink (GxEPD2) + frontlight TCA8418 keyboard + CST328 capacitive touch + 3 capacitive buttons SX1262 BQ27220 fuel gauge, 1400 mAh Yes (multi-constellation) No (uses GPS time)
T5S3 E-Paper Pro (V2, H752-B) 960×540 e-ink (FastEPD, parallel) GT911 capacitive touch (no keyboard) SX1262 BQ27220 fuel gauge, 1500 mAh No (non-GPS variant) Yes (PCF8563 hardware RTC)
Heltec V3 (remote repeater only) 0.96" OLED (SSD1306) SX1262 No No
Heltec V4 (remote repeater only) 0.96" OLED (SSD1306) SX1262 No No

The T-Deck Pro, T-Deck Max, and T5S3 use the ESP32-S3 with 16 MB flash and 8 MB PSRAM. The Heltec V3 and V4 use the ESP32-S3 with 8 MB flash and 8 MB PSRAM.


SD Card Requirements

An SD card is essential for Meck to function properly. Many features — including the e-book reader, notes, bookmarks, web reader cache, audiobook playback, firmware updates, contact import/export, and WiFi credential storage — rely on files stored on the SD card. Without an SD card inserted, the device will boot and handle mesh messaging, but most extended features will be unavailable or will fail silently.

Recommended: A 32 GB or larger microSD card formatted as FAT32. Meck's extensive feature set — audiobooks, e-books, voice recordings, contact exports, alarm sounds, web reader cache, notes, and firmware images — can accumulate significant storage over time, so a larger card is worthwhile. MeshCore users have found that SanDisk microSD cards are the most reliable across both the T-Deck Pro and T5S3.


Flashing Firmware

Download the latest firmware from the Releases page. Each release includes two types of .bin files per build variant:

File Type When to Use
*-merged.bin First-time flash — includes bootloader, partition table, and firmware in a single file. Flash at address 0x0.
*.bin (non-merged) Upgrading existing firmware — firmware image only. Also used when loading firmware from an SD card via the Launcher.

First-Time Flash (Merged Firmware)

If the device has never had Meck firmware (or you want a clean start), use the merged .bin file. This contains the bootloader, partition table, and application firmware combined into a single image.

Using esptool.py:

esptool.py --chip esp32s3 --port /dev/ttyACM0 --baud 921600 \
  write_flash 0x0 meck_t5s3_standalone-merged.bin

On macOS the port is typically /dev/cu.usbmodem*. On Windows it will be a COM port like COM3.

Using the MeshCore Flasher (web-based, T-Deck Pro only):

  1. Go to https://flasher.meshcore.io
  2. Select Custom Firmware
  3. Select the merged .bin file you downloaded
  4. Click Flash, select your device in the popup, and click Connect

Note: The MeshCore Flasher detects merged firmware by the -merged.bin suffix in the filename and automatically flashes at address 0x0. If the filename doesn't end with -merged.bin, the flasher writes at 0x10000 instead, which will fail on a clean device.

Upgrading Firmware

If the device is already running Meck (or any MeshCore-based firmware with a valid bootloader), use the non-merged .bin file. This is smaller and faster to flash since it only contains the application firmware.

Using esptool.py:

esptool.py --chip esp32s3 --port /dev/ttyACM0 --baud 921600 \
  write_flash 0x10000 meck_t5s3_standalone.bin

Tip: If you're unsure whether the device already has a bootloader, it's always safe to use the merged file and flash at 0x0 — it will overwrite everything cleanly.

First boot: On a fresh flash, the device will format its internal storage partition. The display shows "Formatting storage... First boot - please wait" — this takes 1-2 minutes and only happens once. If the device was previously running different firmware (e.g. stock LilyGo or Meshtastic), the partition is automatically erased and reformatted to ensure a clean start.

Launcher

If you're loading firmware from an SD card via the LilyGo Launcher firmware, use the non-merged .bin file. The Launcher provides its own bootloader and only needs the application image.

OTA Firmware Update (v1.3+)

Once Meck is installed, you can update firmware directly from your phone — no computer or serial cable required. The device creates a temporary WiFi access point and you upload the new .bin via your phone's browser.

  1. Download the new non-merged .bin to your phone (from GitHub Releases, Discord, etc.)
  2. On the device: Settings → OTA Tools → Firmware Update → Enter (T-Deck Pro) or tap (T5S3)
  3. The device starts a WiFi network called Meck-Update-XXXX and displays connection details
  4. On your phone: connect to the Meck-Update WiFi network, open a browser, go to 192.168.4.1
  5. Tap Choose File, select the .bin, tap Upload
  6. The device receives the file, saves to SD, verifies, flashes, and reboots

The partition layout supports dual OTA slots — the old firmware remains on the inactive partition as an automatic rollback target. If the new firmware fails to boot, the ESP32 bootloader reverts to the previous working version automatically.

Note: Use the non-merged .bin for OTA updates. The merged binary is only needed for first-time USB flashing.

OTA Tools (v1.5+): The firmware update has moved into Settings → OTA Tools, a submenu that also contains the new SD File Manager. The file manager creates the same WiFi access point and serves a browser-based interface where you can browse, upload, download, and delete files on the SD card from your phone — useful for managing audiobooks, alarm sounds, e-books, and notes without ejecting the SD card. Both OTA tools work on all variants including standalone builds.


Path Hash Mode (v0.9.9+)

Meck supports multibyte path hash, bringing it in line with MeshCore firmware v1.14. The path hash controls how many bytes each repeater uses to identify itself in forwarded flood packets. Larger hashes reduce the chance of identity collisions at the cost of fewer maximum hops per packet.

You can configure the path hash size in the device settings (press S from the home screen on T-Deck Pro, or open Settings via the tile on T5S3) or set it via USB serial:

set path.hash.mode 1
Mode Bytes per hop Max hops Notes
0 1 64 Legacy — prone to hash collisions in larger networks
1 2 32 Recommended — effectively eliminates collisions
2 3 21 Maximum precision, rarely needed

Nodes with different path hash modes can coexist on the same network. The mode only affects packets your node originates — the hash size is encoded in each packet's header, so receiving nodes adapt automatically.

For a detailed explanation of what multibyte path hash means and why it matters, see the Path Diagnostics & Improvements write-up.


Region Scope (v1.7+)

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.

Meck does not pre-set any region on a fresh flash. 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), but communities may also use custom names for their area. Region names must be lowercase alphanumeric characters and hyphens only, max 29 characters.

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

Per-channel region: In Settings → Channels, select a channel and press Enter to edit its region scope. This overrides the device default for that specific channel only.

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 scope can also be configured via serial commands — see the Serial Settings Guide for set region, get region, set channel.scope, and get channel.scope commands.


T-Deck Pro

T-Deck Pro Build Variants

Variant Environment BLE WiFi 4G Modem Audio DAC Web Reader Max Contacts
Audio + BLE meck_audio_ble Yes Yes (web reader only) PCM5102A Yes 2,000
Audio + WiFi meck_audio_wifi Yes (TCP:5000) PCM5102A Yes 2,000
Audio + Standalone meck_audio_standalone PCM5102A No 2,000
4G + BLE meck_4g_ble Yes Yes A7682E Yes 2,000
4G + WiFi meck_4g_wifi Yes (TCP:5000) A7682E Yes 2,000
4G + Standalone meck_4g_standalone Yes A7682E Yes 2,000
Remote Repeater (4G) meck_remote_repeater A7682E (MQTT) No
WiFi Repeater meck_wifi_repeater Yes (MQTT) No

The audio DAC and 4G modem occupy the same hardware slot and are mutually exclusive. (The T-Deck Max lifts this restriction — it runs both at once. See T-Deck Max.) The remote repeater and WiFi repeater variants operate as dedicated MeshCore repeaters — they forward mesh traffic and respond to guest logins as normal, but admin management is handled remotely via MQTT through the Meck-Mycelium dashboard, not via the standard mesh admin password login. See Remote Repeater and WiFi Repeater below.

T-Deck Pro Keyboard Controls

The T-Deck Pro firmware includes full keyboard support for standalone messaging without a phone.

Navigation (Home Screen)

Key Action
W / A Previous page
D Next page
Enter Select / Confirm
M Open channel picker
C Open contacts list
E Open e-book reader
N Open notes
S Open settings
B Open web browser (BLE, WiFi, and 4G variants -- not standalone audio)
T Open SMS & Phone app (Pro 4G & Max only)
P Open audiobook player (audio variant only)
K Open alarm clock (Pro Audio & Max only)
F Open node discovery (search for nearby repeaters/nodes)
H Open last heard list (passive advert history)
R Open trace route screen (v1.9+) -- see Trace Route Screen
J Open games menu (v1.10+) -- see Games
G Open map screen (shows contacts with GPS positions)
Mic Open voice messages (audio variant only)
Q Back to home screen
Double-click Boot Lock / unlock screen

Touch tile home screen: the first home page is a tile grid -- Messages, Contacts, Map, Notes, Settings and the rest -- that can be tapped directly instead of using the key shortcuts above. Originally a T-Deck Max feature, this is now the home screen on all T-Deck Pro builds. Tiles for features a given build does not include (for example Phone on audio builds, or Audiobooks on 4G builds) are inert.

Bluetooth (BLE)

BLE is disabled by default at boot to support standalone-first operation. The device is fully functional without a phone — you can send and receive messages, browse contacts, read e-books, and set your timezone directly from the keyboard.

To connect to the MeshCore companion app, navigate to the Bluetooth home page (use D to page through) and press Enter to toggle BLE on. The BLE PIN will be displayed on screen. Toggle it off again the same way when you're done.

WiFi Companion

The WiFi companion variants (meck_audio_wifi, meck_4g_wifi) connect to the MeshCore web app, meshcore.js, or Python CLI over your local network via TCP on port 5000. WiFi credentials are stored on the SD card at /web/wifi.cfg.

Connecting:

  1. Navigate to the WiFi home page (use D to page through)
  2. Press Enter to toggle WiFi on
  3. The device scans for networks — select yours and enter the password
  4. Once connected, the IP address is displayed on the WiFi home page

Connect the MeshCore web app or meshcore.js to <device IP>:5000.

WiFi is also used by the web reader and IRC client on WiFi variants. The web reader shares the same connection — no extra setup needed.

Clock & Timezone

The T-Deck Pro does not include a dedicated RTC chip, so after each reboot the device clock starts unset. The clock will appear in the nav bar (between node name and battery) once the time has been synced by one of these methods:

  1. GPS fix (standalone) — Once the GPS acquires a satellite fix, the time is automatically synced from the NMEA data. No phone or BLE connection required. Typical time to first fix is 30–90 seconds outdoors with clear sky.
  2. BLE/WiFi companion app — If connected to the MeshCore companion app (via BLE or WiFi), the app will push the current time to the device.

Setting your timezone:

The UTC offset can be set from the Settings screen (press S from the home screen), or from the GPS home page by pressing U to open the UTC offset editor.

Key Action
W Increase offset (+1 hour)
S Decrease offset (-1 hour)
Enter Save and exit
Q Cancel and exit

The UTC offset is persisted to flash and survives reboots — you only need to set it once. The valid range is UTC-12 to UTC+14. For example, AEST is UTC+10 and AEDT is UTC+11.

The GPS page also shows the current time, satellite count, position, altitude, and your configured UTC offset for reference.

Channel Message Screen

Key Action
W / S Scroll messages up/down
Enter Compose new message
R Reply to a message — enter reply select mode, scroll to a message with W/S, then press Enter to compose a reply with an @mention
V View relay path of the last received message (scrollable, up to 20 hops)
Q Back to channel picker

Channel Picker

Pressing M from the home screen opens the channel picker. All your channels and the DM inbox are shown in a single view with unread message badges, letting you jump directly to any channel instead of cycling through them one at a time. Pressing Q from a channel view (e.g. the Public feed) also returns to the channel picker.

Key Action
W / S Navigate up / down
Enter Switch to selected channel
X Delete message history for highlighted channel (v1.10+)
Q Back to home screen

Pressing X on any highlighted channel brings up a confirmation overlay. Press Enter to confirm deletion or Q to cancel. This clears all stored messages for that channel from the circular buffer and saves to SD. The channel itself is not removed -- only its message history.

On the T5S3, swiping left or right on the channel messages screen also opens the channel picker, which displays a vertical bubble list matching the Meck P4 aesthetic. Long-press a channel to bring up the delete history confirmation.

Unread counts and the companion app (v1.12.3+): on standalone builds (no BLE or WiFi) the home-screen MSG count and the per-channel *N badges climb as messages arrive, and opening a channel clears that channel's count. On BLE and WiFi builds the on-device counts intentionally stay at zero while a companion app is connected, because the app marks each message read as it arrives; they resume counting once the app disconnects. Earlier firmware treated standalone builds as though a companion were permanently connected, so those counts -- along with the DM counter and the new-message screen wake -- never updated.

Contacts Screen

Press C from the home screen to open the contacts list. All known mesh contacts are shown sorted by most recently heard, with their type prefix, estimated hop count, and time since last advert.

Contact type prefixes

Prefix Type
C Chat node
R Repeater
RS Room server
? Unknown / sensor

Hop count display

Display Meaning
D Direct path known (path exchange completed)
D* Direct path, manually locked
N N-hop path known (e.g. 2 = 2 hops)
N* N-hop path, manually locked
~D Heard direct via flood advert (no path exchange yet)
~N Estimated N hops via flood advert
? No path information available

Flood-based hop estimates (~D, ~N) are drawn from a cache of up to 1,000 recently heard adverts and reset to ? on reboot until each contact re-advertises. Confirmed path values (D, N) persist until overwritten by a new path exchange.

Normal mode controls

Key Action
W / S Scroll up / down through contacts
Shift+W / Shift+S Page up / page down
A / D Cycle filter: All → Chat → Rptr → Room → Sens → Fav
Enter Enter select mode (highlights current contact, enables batch operations)
P Open path editor for the highlighted contact
Q Back to home screen

Note: The Fav filter shows only contacts you have marked as favourites. If it appears empty, no contacts have been favourited yet — use select mode (Enter) and then F to mark contacts.

Select mode — press Enter from the contacts list to enter select mode. The highlighted contact is pre-selected. Use W/S to scroll and Enter to toggle selection on any row.

Read the rest on GitHub

Scan report · 2026-09-11
  • Prohibited terms or links
  • Repository eligibility
  • slopscore.md paperwork
  • Content policy
  • Risk review — +25 binaries at repo root (readback.bin)

0 comments

log in to comment.

report this listinglog in to report
Key Action
W / S Scroll up / down
Enter Toggle selection on current contact
A Select all contacts in current filter
listed slop0
in the trough0
slopsmiths0
votes0
comments0

more stats · mod log · balcony

Why public?

Any agent can rebuild your app from a screenshot by lunch. Secrecy stopped being a moat; the only thing left to compete on is whether yours actually works. So push it, add the file, and let the trough decide.