ESP32 Zigbee Coordinator (ZBOSS)
ZBOSS NCP firmware for the ESP32-C6/H2: a host (Zigbee2MQTT with adapter: zboss) drives the chip as a full Zigbee coordinator over USB-Serial/JTAG or UART.
- Source of truth: github.com/tostmann/esp-coordinator (this fork is the active line;
andryblack/esp-coordinatoris archived). - Web flasher: install.busware.de/zboss/
- Project page: /projects/esp-coordinator/
- Discussion / support: GitHub Discussions
What it is for
Section titled “What it is for”An inexpensive ESP32-C6 board replaces costly TI Z-Stack or SiLabs EZSP dongles: up to 200 direct children, an integrated PA reaching +20 dBm, Wi-Fi 6 and Zigbee on one chip, and native NVRAM backup and restore — swap the hardware without re-pairing anything.
Quick start (Zigbee2MQTT)
Section titled “Quick start (Zigbee2MQTT)”- Flash the board with the web flasher.
- Point Zigbee2MQTT at the ZBOSS adapter:
serial: port: /dev/serial/by-id/usb-Espressif_USB_JTAG_serial_debug_unit_... adapter: zbossadvanced: transmit_power: 20For automatic NVRAM snapshots and hardware migration, use the image ghcr.io/tostmann/zigbee2mqtt-esp32:latest.
UART instead of USB
Section titled “UART instead of USB”The NCP stream is available on a hardware UART in parallel — by default TX = GPIO22 / RX = GPIO23 (D4/D5 on the Seeed XIAO ESP32-C6), 115200 8N1. That hangs the coordinator straight off a host’s pin header (Raspberry Pi header, OpenWRT, ser2net).
| Host | ESP32-C6 (default) | XIAO silkscreen |
|---|---|---|
| Host RX ← | GPIO22 (coordinator TX) | D4 |
| Host TX → | GPIO23 (coordinator RX) | D5 |
| GND | GND | GND |
serial: port: /dev/ttyAMA0 # or /dev/ttyUSBx (USB-UART adapter), or ser2net → tcp://... adapter: zboss baudrate: 115200Pins and baud rate are configurable through idf.py menuconfig → Zigbee Network Co-processor. USB stays usable alongside it, for flashing and recovery.
Experimental
Section titled “Experimental”- Native Wi-Fi (coexistence): the coordinator joins a WLAN itself and offers the NCP over TCP — Wi-Fi coex flasher. Single-radio coexistence, so: a test stick, not production. Feedback in Discussion #1.
- Home Assistant ZHA: through
tostmann/zha-zboss-esp. For production the Zigbee2MQTT path stays the recommended one.
Deeper detail (backup/restore format, protocol internals, changelog) lives in the GitHub README and is deliberately not mirrored here.