Как настроить adapter в Zigbee2MQTT и запустить сеть после обновления координатора
Если Zigbee2MQTT перестал стартовать после прошивки/замены стика, почти всегда причина в трёх вещах: не тот порт, не тот serial.adapter (zstack vs ember/ezsp) или рассинхрон сети/бэкапа. Ниже — порядок действий, который обычно возвращает запуск за 10–15 минут.
Главное правило: сначала фиксируем порт по by-id, затем явно задаём adapter, и только потом разбираемся с сетью (PAN ID/KEY/backup).
Оглавление
1) Быстрая диагностика: порт, права, конфликт за UART
- Найдите стабильный порт (лучше, чем
/dev/ttyUSB0//dev/ttyACM0):
ls -l /dev/serial/by-id
-
Проверьте, что порт не занят другим Zigbee-стеком/сервисом (ZHA, другой контейнер, minicom/screen). Симптомы —
Cannot lock port, таймауты, падения при старте. -
Проверьте права на устройство (если Zigbee2MQTT не в root): контейнеру/пользователю должен быть доступен
/dev/serial/.... -
Уточните UART-параметры:
- типично
baudrate: 115200; - для многих Silicon Labs координаторов полезно/нужно
rtscts: true.
2) Как выбрать adapter: zstack, ember или ezsp
Ориентируйтесь на чип и прошивку координатора:
- TI CC2652/CC1352/CC2538 → почти всегда
adapter: zstack. - Silicon Labs EFR32 (например, Dongle‑E, SkyConnect/Connect-подобные) → чаще
adapter: ember. - Silicon Labs на старых/других NCP-прошивках → иногда нужен
adapter: ezsp.
После обновления прошивки Silicon Labs может измениться «язык» NCP: раньше работало с ezsp, а после обновления требуется ember. Если видите ошибки слоя EZSP или HOST_FATAL_ERROR, первым делом проверьте именно это.
3) Рабочие примеры configuration.yaml
TI (zStack)
mqtt:
server: "mqtt://localhost"
serial:
port: /dev/serial/by-id/usb-...TI...
adapter: zstack
Silicon Labs (EmberZNet) — частый вариант после обновлений
serial:
port: /dev/serial/by-id/usb-...Silicon_Labs...
adapter: ember
baudrate: 115200
rtscts: true
Silicon Labs (EZSP) — если вы точно знаете, что прошивка под EZSP
serial:
port: /dev/serial/by-id/usb-...Silicon_Labs...
adapter: ezsp
baudrate: 115200
rtscts: false
Короткая памятка по выбору adapter
| Координатор | Признак | serial.adapter |
|---|---|---|
| TI CC2652/CC1352 | Dongle‑P и аналоги на TI | zstack |
| Silicon Labs EFR32 | большинство актуальных NCP | ember |
| Silicon Labs EFR32 (другая NCP-прошивка) | раньше работало только так | ezsp |
4) Ошибки запуска после обновления и что делать
No valid USB adapter found
Обычно автодетект не сработал или порт «прыгает».
- Укажите порт через
/dev/serial/by-id/... - Явно пропишите
serial.adapter.
SRSP - SYS - ping after 6000ms (часто TI)
Zigbee2MQTT не может поговорить с координатором.
- проверьте, что выбран правильный
/dev/serial/by-id/...; - убедитесь, что порт не занят другим сервисом;
- проверьте, что прошивка именно координатора, а не роутера.
HOST_FATAL_ERROR / Failed to start EZSP layer
Почти всегда одно из:
- неверный
adapter(попробуйтеember↔ezsp); - неверные
rtscts/baudrate; - порт занят или недоступен по правам.
NCP EZSP protocol version ... does not match Host version ...
Несовместимость версии протокола между Zigbee2MQTT и прошивкой координатора.
- Самый быстрый путь: привести к совместимой паре прошивка ↔ adapter (часто помогает переход на
emberпосле обновления NCP). - Если обновляли сразу и Zigbee2MQTT, и прошивку — временно откатите одно из изменений, чтобы проверить связку.
Восстановление сети и coordinator-backup
Ошибка вида startup failed - configuration-adapter mismatch означает, что параметры сети в Zigbee2MQTT и в координаторе/бэкапе не совпадают (PAN ID, extended PAN ID, network key).
Выберите стратегию:
-
Сохранить старую сеть
Верните вconfiguration.yamlте значения сети, которые соответствуют текущему состоянию координатора/бэкапа (сверяйте по логам и вашим сохранённым параметрам). -
Создать сеть заново (быстрее, но потребует переподключений)
Удалите/переименуйте файл бэкапа координатора в папкеdata/(часто этоcoordinator-backup.json) и запустите Zigbee2MQTT, затем заново присоединяйте устройства.
Сброс сети почти всегда означает повторное спаривание части устройств (иногда всех), особенно батарейных.
Частые ошибки
- Указывают
/dev/ttyUSB0, после перезагрузки он становится другим → используйте/dev/serial/by-id. - Меняют прошивку Silicon Labs и забывают переключить
ezspнаember(или наоборот). - Держат один и тот же стик одновременно в ZHA и Zigbee2MQTT → получаются
Cannot lock portи таймауты. - Включают
rtscts: trueна железе/прошивке, где это не нужно (или наоборот не включают там, где нужно) → нестабильный старт.
FAQ
Нужно ли трогать baudrate?
Только если ваш координатор прошит под нестандартную скорость. В большинстве случаев достаточно 115200.
Можно ли просто заменить координатор и ничего не переподключать?
Иногда да, если корректно перенести/восстановить параметры сети и бэкап координатора. Если получаете configuration-adapter mismatch, сеть не совпадает.
Что сначала: обновлять Zigbee2MQTT или прошивку стика?
Практичнее обновлять по одному шагу и проверять запуск. Если обновили оба сразу и получили EZSP version mismatch, сложнее понять, что именно несовместимо.