Ошибка Failed to connect to the adapter (SRSP - SYS - ping) в Zigbee2MQTT

Ошибка Error: Failed to connect to the adapter (Error: SRSP - SYS - ping after 6000ms) означает, что Zigbee2MQTT не может связаться с Zigbee-координатором (донглом или сетевым модулем, который ведет сеть Zigbee): адаптер не отвечает, аддон (дополнение Home Assistant) падает при старте и перезапускается снова и снова. По 19 веткам форума чаще других помогали обновление прошивки координатора (5 веток), правильное значение adapter в конфигурации и переустановка Zigbee2MQTT; в отдельных ветках помогло освобождение порта, который держит интеграция ZHA. Проблема встречается и на Home Assistant OS, и в Docker-контейнерах, с донглами Sonoff, SkyConnect и ZBT-1, с сетевыми координаторами SLZB.

Как выглядит проблема

Zigbee2MQTT не запускается или сразу падает с ошибкой соединения с адаптером. В разных ветках это выглядит так.

  • Аддон не стартует и не может подключиться к Sonoff Dongle-P или Dongle Plus-P, в логе - таймаут SRSP ping.
  • Не запускается со SkyConnect, в том числе на Home Assistant Green: адаптер не отвечает на ping.
  • Не стартует после перехода с ZHA: zigbee-herdsman падает с ошибкой адаптера.
  • Не поднимается после отключения питания или перезапусков контейнера: таймаут ping на TCP-координаторе, устройства отвечают с задержкой или молчат.
  • Не подключается к сетевому SLZB-06 по LAN, настройки при этом сбрасываются, хотя до того все работало.
  • Не стартует после обновления до Zigbee2MQTT 2.0.0 с донглом Nabu Casa ZBT-1.

В логе при этом встречаются и другие строки:

Error: Failed to connect to the adapter (Error: SRSP - SYS - ping after 6000ms)
Error: spawn udevadm ENOENT
Socket error Error: read ECONNRESET
Error: Error Resource temporarily unavailable Cannot lock port
Error: Adapter EZSP protocol version (9) is not supported by Host [13-16].
Error: Command 1 genOnOff.on({}) failed (AREQ - AF - dataConfirm after 3000ms)
Failed to determine if path is valid: 'Error: ENOENT: no such file or directory, lstat '/dev/serial''
Error: USB adapter discovery error (No valid USB adapter found). Specify valid 'adapter' and 'port' in your configuration.
Error: network commissioning timed out - most likely network with the same panId or extendedPanId already exists nearby (Error: AREQ - ZDO - stateChangeInd after 60000ms

Отдельные разборы на сайте есть у ошибок spawn udevadm ENOENT и no valid USB adapter found.

Причины

Обычно дело в прошивке координатора или в конфигурации - занятый порт, неверное значение adapter, путь к устройству, параметры MQTT. Первые три причины названы участниками форума напрямую, остальные - предположения.

ПричинаКак проверитьЧто сделать
Порт или адаптер держит другая интеграция: ZHA или DSMRПроверить, не подключена ли ZHA к этому донглу, а DSMR - к порту /dev/ttyUSB0Отключить ZHA и перезапустить аддон; удалить неиспользуемую DSMR и перезапустить контейнеры
Устаревшая прошивка координатораОшибка уходит после прошивки донгла актуальной версиейОбновить прошивку координатора
На донгл залита прошивка роутера вместо прошивки координатораПроверить, какая прошивка стоит на донглеПерепрошить донгл прошивкой координатора (результат в ветке неизвестен)
Драйвер zstack указан для чипа, которому нужен ember (раньше писали ezsp) (предположение)Сверить значение adapter в секции serial с чипом донглаПоставить adapter: ember
В конфигурации не задан адаптер (предположение)В секции serial нет строки adapterДобавить опцию adapter
Неверный путь к последовательному устройству (предположение)Сверить значение port с реальным устройствомИсправить путь к порту (смена пути на /dev/ttyUSB0 и на /dev/serial/by-id в ветках не помогла)
Адрес MQTT-сервера указан как localhost вместо core-mosquitto (предположение)Посмотреть server в секции mqttЗаменить адрес на mqtt://core-mosquitto:1883
Логин или пароль MQTT указаны неверно (предположение)Сверить их с учетной записью в брокереПеренастроить подключение к MQTT
Пассивный PoE-порт (питание по Ethernet) не дает адаптеру достаточно мощности (предположение)Адаптер питается от пассивного PoEПеренести адаптер на порт с активным питанием (в ветке помогло частично)
USB-порты хоста вышли из строя, перезапуск сбросил настройки Zigbee2MQTT (предположение)После перезапуска настройки MQTT и адаптера пустыеЗадать настройки заново
Неисправен сам донгл SONOFF (предположение)Ничего не помогает, ошибка уходит после замены донглаЗаменить донгл, например на ZBT-2

Решения

Больше всего подтверждений собрало обновление прошивки координатора, дальше идут правильное значение adapter и полная переустановка Zigbee2MQTT.

Обновить прошивку координатора

Самое подтвержденное решение: помогло в 5 ветках форума из 5, где его пробовали, - шесть сообщений об успехе и ни одного о неудаче. Пользователи прошивали донгл актуальной прошивкой координатора и перезапускали Zigbee2MQTT; это опыт форума, в документации способ не описан. Порт задается в конфигурации, например:

serial:
  port: /dev/ttyACM0

Выставить правильное значение adapter

Документация Zigbee2MQTT перечисляет допустимые значения: Possible adapters are zstack , ember , deconz , zigate or zboss . Значение ember подтверждено документацией; по форуму его пробовали в 4 ветках, в одной оно полностью решило проблему, в одной частично, в одной не помогло. Пример конфигурации из ветки со SkyConnect:

serial:
  port: /dev/serial/by-id/usb-Nabu_Casa_SkyConnect_v1.0_6eda194ff5e1ed11b7cdeb5162c613ac-if00-port0
  adapter: ember

В старых советах форума для тех же адаптеров писали значение adapter: ezsp - оно помогло в 2 ветках из 3 и выглядело так:

serial:
  port: #your apapter port info from hardware>connect
  adapter: ezsp

Отключить ZHA, затем задать порт и адаптер

Документация Zigbee2MQTT прямо советует: Try to disable the ZHA integration and restart the Zigbee2MQTT add-on. В ветке с переходом на Zigbee2MQTT это помогло, после чего задавались порт и адаптер:

serial:
  port: /dev/ttyUSB0
  adapter: ezsp

Значение ezsp здесь - часть старого форумного рецепта, сейчас для адаптеров Silicon Labs пишут ember.

Исправить настройки MQTT

В одной ветке помогла замена адреса сервера localhost на mqtt://core-mosquitto:1883. В другой помогла полная переустановка, а причиной предположительно были неверные логин и пароль MQTT. Похожие сбои соединения с брокером разобраны на странице ошибки MQTT failed to connect.

Переустановить Zigbee2MQTT с нуля

Помогло в 2 ветках из 2, где пробовали: удалить аддон вместе с его каталогом и настроить заново; в одной из веток заодно переустановили Mosquitto. Когда после сбоя хоста настройки слетели, одному пользователю хватило повторного ввода настроек MQTT и адаптера. Порядок установки описан в гайде по установке Zigbee2MQTT.

Решения с одиночными подтверждениями

Остальные рабочие рецепты - опыт отдельных пользователей, каждое помогло в одной ветке:

РешениеПодтверждение
Взять в качестве координатора второй чип SLZB, на Silicon Labs1 ветка
Установить свежую версию аддона из репозитория hassio-zigbee2mqtt1 ветка
Указать опцию adapter в конфигурации - у этой задачи есть отдельная страница1 ветка
Ночной сценарий Node-RED, который перезапускает Zigbee2MQTT и Zigbee-радио по REST1 ветка
Заменить донгл SONOFF на ZBT-2 и задать адаптер1 ветка
Удалить неиспользуемую интеграцию DSMR, указанную на /dev/ttyUSB0, и перезапустить контейнеры1 ветка

Если не помогло

Пользователи пробовали и такие шаги без успеха. Чаще всего пробовали стабильный путь /dev/serial/by-id: в 5 ветках, где его пробовали, он не помог ни разу (четыре неудачи). Путь к адаптеру можно посмотреть командой:

ls -l /dev/serial/by-id

Не сработали хотя бы в одной ветке также: связка adapter: zstack с прямым указанием порта (две неудачи в 3 ветках), путь /dev/ttyUSB0, выдергивание и обратное подключение донгла, игнорирование автопоиска (discovery) ZHA, генерация новых PAN ID в веб-интерфейсе SLZB, отключение автозапуска с полным рестартом виртуальной машины, настройка MQTT-брокера до Zigbee2MQTT, автоматический перезапуск аддона по бинарному датчику соединения, IP-адрес вместо имени .local, перебор портов и настроек MQTT, перенос координатора ближе к устройствам, переход на канал 15.

Результат неясен у таких шагов: следование официальному гайду по устранению неполадок, отключение функции роутера на чипе CC2674P10, подключение SLZB по LAN вместо USB, перенос адаптера на PoE-порт с активным питанием, проверка веб-интерфейса адаптера и TCP-порта, перевод Zigbee-радио на прошивку EFR32, USB-удлинитель, перепрошивка донгла прошивкой координатора, перенос донгла в другой USB-порт. Если Zigbee2MQTT перестает подниматься уже после потери связи с координатором, посмотрите разбор про пропавшую связь с координатором.

Частые вопросы

Какое значение adapter писать: ember или ezsp?

Для адаптеров на чипах Silicon Labs пишите ember: значение ezsp отсутствует в списке допустимых значений документации Zigbee2MQTT, где перечислены zstack, ember, deconz, zigate и zboss. Старые рецепты форума с adapter: ezsp относились к прошлым версиям. Похожие сбои EZSP-стека разобраны в темах про ошибки EZSP protocol version is not supported by Host и HOST_FATAL_ERROR.

Может ли ZHA мешать запуску Zigbee2MQTT?

Да, может: ZHA удерживает последовательный порт или сам адаптер, и тогда Zigbee2MQTT не подключается к координатору. Помогает отключение интеграции ZHA и перезапуск аддона - ровно это советует документация Zigbee2MQTT. Так же действует неиспользуемая интеграция DSMR, если она указывает на /dev/ttyUSB0: в одной ветке ее удаление и перезапуск контейнеров вернули аддону запуск.

Ошибка появилась после обновления Zigbee2MQTT. Что проверить?

Проверьте значение adapter и прошивку донгла. В ветке о донгле ZBT-1 после обновления до Zigbee2MQTT 2.0.0 пробовали обновление прошивки координатора, значения ezsp и ember (ezsp устарело); вариант с zstack в той же ветке не сработал. Если конфигурация осталась от старой версии, сверьте форму опций с текущей документацией Zigbee2MQTT: список допустимых значений adapter со временем менялся.

Координатор подключен по сети. Что проверить в первую очередь?

Подтвержденного ответа нет. В одной ветке советовали проверить веб-интерфейс координатора и TCP-порт, результат неизвестен. Там же предположили, что пассивный PoE-порт не дает адаптеру достаточно мощности, и перенос на порт с активным питанием у одного пользователя частично помог. Замена имени хоста .local на IP-адрес в одной ветке не помогла. Сбой сетевого SLZB-06 после обновления прошивки разобран отдельно.

Андрей Ковалев, редактор. Собирает решения из веток форума Home Assistant и сверяет команды и настройки с официальной документацией.