Part 1: gateways and coordinators
A Zigbee setup is normally a radio (coordinator firmware on a chip) plus host software that talks to it.
Host software
- Zigbee2MQTT (GPL-3.0): bridges Zigbee to MQTT. It sits on zigbee-herdsman (MIT) and zigbee-herdsman-converters (MIT, the device definitions).
- ZHA and zigpy: Home Assistant's built-in Zigbee integration. zigpy is the library (GPL-3.0), with radio libraries bellows (Silicon Labs EZSP), zigpy-znp (TI) and zigpy-deconz (ConBee/RaspBee). The zha library and zha-device-handlers (device quirks) are Apache-2.0.
- deCONZ: from dresden elektronik, for ConBee and RaspBee hardware. Its README says the core was closed source from 2012 to 2024 and was released as open source under a BSD licence on 19 April 2024. The REST plugin is on GitHub as BSD-3-Clause. The web-based Phoscon app is not part of that repository.
- Tasmota Zigbee (Zigbee2Tasmota): runs on an ESP8266 or ESP32 and supports TI CC253x/CC26x2/CC13x2 and Silicon Labs EFR32MG12/MG21 radios. It can also just pass bytes through to ZHA or Zigbee2MQTT over ser2net. The Tasmota docs themselves recommend ESP32 over the resource-limited ESP8266.
- Z-Stack-firmware (Koenkk, MIT): compile instructions and prebuilt Z-Stack firmware for CC2530, CC2531, CC2538, CC1352P, CC2652P, CC2652R and CC2652RB.
- silabs-firmware-builder (NabuCasa, Apache-2.0): builds Zigbee, Thread and Z-Wave firmware for Home Assistant's ZBT-1/SkyConnect, ZBT-2, ZWA-2 and Yellow. Note that it relies on the Silicon Labs Gecko SDK and proprietary Silicon Labs tools.
- Silicon Labs Multiprotocol add-on (Home Assistant): runs RCP multiprotocol firmware so one radio can serve Zigbee (via ZHA, EZSP over a socket) and OpenThread. Home Assistant's own ZBT-1 page calls multiprotocol experimental and not recommended, so read that before using it.
- XZG (GPL-3.0): open firmware for ESP32-based Zigbee gateways with CC2652 or CC1352 radios (web flasher and docs on its site). The newest tagged releases I saw were pre-releases from late 2024, though the repo had commits as recently as April 2026. The older ZigStarGW-FW repo is archived.
- TubesZB: Ethernet coordinators (CC2652P2 or EFR32 modules with ESP32 boards running ESPHome). The repo publishes firmware and docs. I did not check what licence applies.
- ESP-Zigbee-SDK (Espressif, Apache-2.0): lists Espressif Thread Border Router / Zigbee Gateway reference hardware, though it is a development SDK rather than a ready-made gateway. Version 2.x uses an Espressif proprietary Zigbee stack supplied as a prebuilt library; the older 1.x uses ZBOSS.
- ESPHome Zigbee component: exposes ESPHome components over Zigbee to ZHA or Zigbee2MQTT, Home Automation profile only. It supports nRF52 and ESP32-C5/C6/H2. It needs a coordinator, uses roles of end device or router, and the docs advise against battery-powered routers. The docs say changing the config means removing and re-adding the device.
- ESP-Zigbee-SDK examples: Espressif's repo has a Zigbee console example under examples/all_device_types_app, and lists ESP32-H2, C6 and C5 dev kits.
- Nordic nRF Connect Zigbee R23 add-on (ncs-zigbee): supports nRF52840, nRF52833 (NCP sample only) and nRF54L parts. GitHub shows its licence as "Other", and the ZBOSS stack is precompiled, so check terms before commercial use.
- Custom support in Zigbee2MQTT: external converters are JavaScript files that teach Z2M about a device it does not know, and you can add them from the front end under Settings, Dev console, External converters. Good for DIY devices.
- Router firmware: Sonoff says the ZBDongle-E can be flashed with router firmware to extend the mesh, and Home Assistant offers experimental ZBT-2 repeater firmware. A USB-powered router is a cheap way to fill a dead spot, but I have not tested either.
- OTA: Koenkk/zigbee-OTA (GPL-3.0) is a collection of OTA files used for device updates.