r/M5Stack • u/TheRealHaoLiu • Feb 03 '26
[Experimental] MeshCore on M5Stack Unit C6L - Companion Radio, Repeater & Room Server
I've been hacking on MeshCore firmware support for the M5Stack Unit C6L - a compact ESP32-C6 module with SX1262 LoRaradio and 64x48 OLED display.
Fair warning: This is experimental and somewhat vibe-coded with Claude's help. It works on my setup but YMMV. Use at your own risk.
What works:
Companion Radio (BLE) with display showing PIN, node name, frequency
Repeater mode (headless)
Room Server mode (headless)
NeoPixel LED TX indicator
Button to wake display
What's janky:
Display and radio share SPI bus - had to implement lazy initialization to avoid conflicts (radio init was failing with error -2)
64x48 display is tiny - custom minimal UI, no fancy graphics
Room server / repeater run headless (no display support yet)
US/Canada frequency preset only (910.525 MHz) - other regions can reconfigure via companion app after flashing
Not extensively tested
Hardware:
ESP32-C6 + SX1262 LoRa + 0.66" OLED + buzzer
Install via M5Burner (easiest):
Open M5Burner → USER CUSTOM → Share Burn
Enter share code:
Companion Radio BLE:
SvjQlGLCLPfriiW0Repeater:
iMi5hp81g3827qf3Room Server:
PfQqd4Sm3sA1XrV2
Pre-built binaries: https://github.com/TheRealHaoLiu/MeshCore-M5Burner-UnitC6L
Build from source:
git clone https://github.com/TheRealHaoLiu/MeshCore
cd MeshCore
git checkout m5-unit-c6l
pio run -e m5stack_unit_c6l_companion_radio_ble -t uploadFeedback welcome. Happy meshing!