Skip to content

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.

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.

  1. Flash the board with the web flasher.
  2. Point Zigbee2MQTT at the ZBOSS adapter:
serial:
port: /dev/serial/by-id/usb-Espressif_USB_JTAG_serial_debug_unit_...
adapter: zboss
advanced:
transmit_power: 20

For automatic NVRAM snapshots and hardware migration, use the image ghcr.io/tostmann/zigbee2mqtt-esp32:latest.

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).

HostESP32-C6 (default)XIAO silkscreen
Host RX ←GPIO22 (coordinator TX)D4
Host TX →GPIO23 (coordinator RX)D5
GNDGNDGND
serial:
port: /dev/ttyAMA0 # or /dev/ttyUSBx (USB-UART adapter), or ser2net → tcp://...
adapter: zboss
baudrate: 115200

Pins and baud rate are configurable through idf.py menuconfigZigbee Network Co-processor. USB stays usable alongside it, for flashing and recovery.

  • Native Wi-Fi (coexistence): the coordinator joins a WLAN itself and offers the NCP over TCPWi-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.