Meshtastic on XIAO ESP32C6 + Wio SX1262

100% working custom firmware — 9 bugs fixed, EU_868, LONG_FAST, 27dBm

✅ 23/23 CLI Commands Tested 🇪🇺 EU_868 📡 SF11 / BW250 ⚠️ Pinout Different from Docs
📦 GitHub Repo ⬇️ Download Firmware

⚡ Quick Install (3 Steps)

  1. Flash the firmware:
    esptool --chip esp32c6 --port /dev/ttyACM0 write-flash -z 0x0 \
      firmware-xiao-esp32c6-sx1262-2.7.24.0a7b3c7.factory.bin
  2. Set EU region:
    python3 -m meshtastic --port /dev/ttyACM0 --set lora.region EU_868
  3. Name your node:
    python3 -m meshtastic --port /dev/ttyACM0 --set-owner "MyNode" --set-owner-short "MN"

Done! Your XIAO ESP32C6 is now a fully functional Meshtastic node.

⚠️ IMPORTANT: The official Seeed Studio pinout documentation is WRONG. NSS is on D5 (not D7) and RST is on D2 (not D4). We discovered this through hours of brute-force GPIO scanning. Use the pinout below.

🔌 Correct Pinout (Verified)

SX1262 SignalXIAO D-pinGPIO
NSS (CS)D523
SCKD819
MOSID1018
MISOD920
RSTD22
BUSYD321
DIO1D11

🐛 The 9 Bugs We Fixed

#BugRoot CauseFix
1WDT crash5s timeout during 10s+ radio initTimeout → 120s
2Wrong pinoutSeeed docs incorrectNSS=D5, RST=D2
3SPI HW conflictSS pin vs bit-bang NSSSPI.begin(..., -1)
4GPIO matrix latencyHW SPI broken on C6Custom bit-bang HAL
5findChip() failsSPI stream protocolBypassed
6SPIparseStatus0x00 treated as error0x00 accepted
7WRONG_MODEM (-20)getPacketType garbageForced to LoRa
8setDio2AsRfSwitchNot on Wio SX1262Neutralized
9BUSY timingCommands during busywaitBusy() added

📊 Technical Specifications

ParameterValue
ChipESP32-C6FH4 (QFN32) v0.2
RadioSX1262 (Wio SX1262 for XIAO)
Frequency868 MHz (EU_868)
Modem PresetLONG_FAST
Spreading FactorSF11
Bandwidth250 kHz
Coding Rate4/5
TX Power27 dBm
SPI MethodBit-bang (~100 kHz)
RAM Available~340 KB
WiFi / BluetoothDisabled (RAM savings)
Base FirmwareMeshtastic 2.7.24

✅ All CLI Commands Tested

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

🔧 Build from Source

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

🌍 Community & Support

This project is tested and stable. If you encounter issues, open an issue on GitHub.

Compatible with any other Meshtastic node on EU_868.