100% working custom firmware — 9 bugs fixed, EU_868, LONG_FAST, 27dBm
esptool --chip esp32c6 --port /dev/ttyACM0 write-flash -z 0x0 \
firmware-xiao-esp32c6-sx1262-2.7.24.0a7b3c7.factory.bin
python3 -m meshtastic --port /dev/ttyACM0 --set lora.region EU_868
python3 -m meshtastic --port /dev/ttyACM0 --set-owner "MyNode" --set-owner-short "MN"
✨ Done! Your XIAO ESP32C6 is now a fully functional Meshtastic node.
| SX1262 Signal | XIAO D-pin | GPIO |
|---|---|---|
| NSS (CS) | D5 | 23 |
| SCK | D8 | 19 |
| MOSI | D10 | 18 |
| MISO | D9 | 20 |
| RST | D2 | 2 |
| BUSY | D3 | 21 |
| DIO1 | D1 | 1 |
| # | Bug | Root Cause | Fix |
|---|---|---|---|
| 1 | WDT crash | 5s timeout during 10s+ radio init | Timeout → 120s |
| 2 | Wrong pinout | Seeed docs incorrect | NSS=D5, RST=D2 |
| 3 | SPI HW conflict | SS pin vs bit-bang NSS | SPI.begin(..., -1) |
| 4 | GPIO matrix latency | HW SPI broken on C6 | Custom bit-bang HAL |
| 5 | findChip() fails | SPI stream protocol | Bypassed |
| 6 | SPIparseStatus | 0x00 treated as error | 0x00 accepted |
| 7 | WRONG_MODEM (-20) | getPacketType garbage | Forced to LoRa |
| 8 | setDio2AsRfSwitch | Not on Wio SX1262 | Neutralized |
| 9 | BUSY timing | Commands during busy | waitBusy() added |
| Parameter | Value |
|---|---|
| Chip | ESP32-C6FH4 (QFN32) v0.2 |
| Radio | SX1262 (Wio SX1262 for XIAO) |
| Frequency | 868 MHz (EU_868) |
| Modem Preset | LONG_FAST |
| Spreading Factor | SF11 |
| Bandwidth | 250 kHz |
| Coding Rate | 4/5 |
| TX Power | 27 dBm |
| SPI Method | Bit-bang (~100 kHz) |
| RAM Available | ~340 KB |
| WiFi / Bluetooth | Disabled (RAM savings) |
| Base Firmware | Meshtastic 2.7.24 |
We ran the full Meshtastic Python CLI test suite. 23 out of 23 commands pass.
--info --nodes --qr --get --set
--set-owner --setlat/lon/alt --sendtext --sendtext --ack
--set-canned-message --get-canned-message --ch-longslow
--ch-longfast --ch-set --export-config
--traceroute --request-telemetry --request-position
--reply --listen --support --noproto
Requires PlatformIO. Clone meshtastic/firmware, copy the variant/ files and apply the patches/.
Full guide in README.txt.
cd firmware
pio run -e xiao-esp32c6-sx1262
This project is tested and stable. If you encounter issues, open an issue on GitHub.
Compatible with any other Meshtastic node on EU_868.