Quick disclaimer first: I’m not an embedded engineer — I built this with heavy AI assistance (mostly trial, error, and reading logs together with an AI). So please don’t take this as expert advice; think of it more as “here’s a path that worked, plus the mistakes I made along the way” than a definitive guide. If something looks off to someone who actually knows this stuff, I’d genuinely appreciate corrections.
If anyone wants a two-chip (ESP32-C6 host + ESP32-H2 RCP) variant instead of a single native-radio board, I just finished documenting one end-to-end, including a few real gotchas that cost me hours:
Cost: ~$15 total for both boards (roughly $7-8 each, “super mini” clones — your local pricing may vary).
- Custom 4MB partition table (the default one won’t fit
esp_ot_br.bin+ web UI + RCP firmware on most 4MB “super mini” boards) - The RST/BOOT wiring pitfall: on these boards RST isn’t broken out as a header pin — you have to solder to the button’s inner leg (multimeter continuity test recommended before you start doubting your sanity)
- The correct UART pins the RCP firmware actually listens on (spoiler: not the board’s silkscreen “TX/RX” pins)
- A
WIFI_PS_MAX_MODEMpower-save bug inesp_ot_cli_extensionthat causes the whole Thread mesh to drop for 1-1.5 hours at a time, then silently recover — fixed by patching two source files - A status LED on the RCP (GPIO8, WS2812) that lights up blue once the RCP is actually synced with the host, as a quick “is it healthy” indicator
Full write-up + partition CSV + LED patch here: GitHub - IsoBaba/esp32-thread-border-router: Building a Threaded Board Router using ESP32-C6 and ESP32-H2 (Super Mini versions) · GitHub
Happy to answer questions if anyone hits the same walls I did — no promises I’ll know the deep “why”, but I can at least tell you what fixed it for me.