Таймаут EZSP/Ember в ZHA на Sonoff ZBDongle‑E: как восстановить связь

Ошибка EZSP/ember/serial timeout в ZHA почти всегда означает, что Home Assistant теряет стабильную связь с координатором по USB‑serial. Быстрее всего помогает: указать порт /dev/serial/by-id/..., убрать конкурирующие сервисы (Z2M/флешеры), и убедиться, что на донгле прошивка Zigbee NCP (не MultiPAN).

Оглавление

Что именно ломается при serial timeout

ZHA общается с Sonoff ZBDongle‑E (чип Silicon Labs) через протокол EZSP по последовательному порту. Таймаут появляется, когда:

  • открыт не тот порт (после перезагрузки /dev/ttyUSB0 “переехал”);
  • порт занят другим процессом;
  • донгл “подвисает” из‑за помех/питания/USB 3.0;
  • стоит неподходящая прошивка/стек, и ZHA не может корректно поднять NCP.

Диагностика без перепрошивки (5–10 минут)

  1. Проверьте путь порта в ZHA
    В настройках интеграции должен быть не /dev/ttyUSB0, а стабильный:
  • /dev/serial/by-id/....
    Так вы исключите ситуацию, когда система назначила донглу другой tty*.
  1. Убедитесь, что порт не занят Типичный сценарий: одновременно включены ZHA и Zigbee2MQTT, или запущен аддон/контейнер, который тоже трогает USB‑UART. Симптом — ZHA то стартует, то уходит в таймаут.

Правило простое: один донгл — один “владелец” порта. Остановите всё, что может обращаться к этому serial, и только затем перезапускайте ZHA.

  1. Поймите, когда возникает таймаут
  • Сразу при запуске ZHA → чаще порт/конфликт/прошивка.
  • Через часы/дни → чаще USB‑помехи, питание, хаб, проброс в VM.

Прошивка: почему MultiPAN часто не взлетает с ZHA

Если донгл прошит в режим MultiPAN/мультипротокол (например, Zigbee+Thread), ZHA нередко получает несовместимость по ожидаемой версии EZSP/поведению NCP — внешне это выглядит как бесконечные таймауты, сбросы и невозможность поднять сеть.

Что делать:

  1. Верните донгл на прошивку Zigbee NCP (координатор, “только Zigbee”) для ZBDongle‑E.
  2. После прошивки выполните полный перезапуск Home Assistant.
  3. Если сеть не поднимается, проверьте, не изменился ли IEEE адрес координатора (иногда после смены ветки прошивки устройства “не узнают” координатор). В таком случае может понадобиться поднять сеть заново или восстановить бэкап Zigbee.

Если Thread вам не нужен — самый стабильный вариант для ZHA: донгл в режиме “только Zigbee” без мультипротокола.

Быстрый ориентир: симптом → вероятная причина

СимптомЧаще всего причинаПервое действие
Таймаут сразу при старте ZHAпорт не тот / порт занят / MultiPANby-id, выключить конкурентов, вернуть Zigbee NCP
Отваливается раз в суткиUSB‑помехи/питание/хабудлинитель, USB 2.0, питаемый хаб
В VM “то видно, то нет”нестабильный проброс USBпробросить устройство целиком, закрепить по ID

USB, питание и виртуализация: как убрать «случайные» отвали

  1. Уведите донгл от помех
    Поставьте USB‑удлинитель 0.5–1 м. Часто это полностью прекращает serial timeout.

  2. Избегайте USB 3.0 рядом с донглом
    По возможности используйте USB 2.0 порт и не подключайте рядом SSD/флешки/хабы USB 3.0.

  3. Питание и хабы Если донгл через хаб — проверьте другой хаб или используйте питаемый. Нестабильное питание даёт “рандомные” таймауты и reset‑loop.

  4. Если Home Assistant в VM/контейнере

  • Пробрасывайте USB‑устройство целиком, а не “виртуальный COM”.
  • Закрепляйте порт в ZHA по /dev/serial/by-id/....
  • Отключите на хосте агрессивное энергосбережение USB, если оно усыпляет устройство.

Частые ошибки

  • Указан /dev/ttyUSB0 вместо /dev/serial/by-id/....
  • Одновременно запущены ZHA и Zigbee2MQTT (или другой сервис), оба лезут в один донгл.
  • Донгл прошит MultiPAN/мультипротокол, а ожидается обычный Zigbee‑координатор.
  • Донгл воткнут прямо в порт рядом с USB 3.0/SSD без удлинителя.
  • Прошивку меняли, но не перезапустили HA полностью (в т.ч. питание/USB).

FAQ

Нужно ли переподключать все устройства после исправления?
Если вы не меняли тип прошивки и IEEE координатора не изменился — чаще всего сеть поднимется сама. Если IEEE сменился или вы переходили с/на MultiPAN, может потребоваться переподнятие сети и повторное спаривание.

Как понять, что проблема именно в USB, а не в прошивке?
Если ZHA стабильно стартует, но отваливается через время, и помогает переподключение донгла/перезагрузка — это типичный признак USB‑помех/питания/хаба.

Можно ли “вылечить” таймаут только настройками, без прошивки?
Иногда да: правильный by-id, отсутствие конкурирующих процессов и USB‑удлинитель часто решают проблему полностью. Если таймауты с самого старта и вы точно исключили конфликты — тогда уже проверяйте ветку прошивки (Zigbee NCP vs MultiPAN).