Ошибка spawn udevadm ENOENT в Zigbee2MQTT

Ошибка spawn udevadm ENOENT возникает при запуске аддона Zigbee2MQTT (дополнения для Home Assistant) и не дает ему стартовать. В ветках форума причиной называли конфигурацию Zigbee2MQTT и USB-донгл, занятый интеграцией ZHA (Zigbee Home Automation). Запуск вернули три приема, каждый подтвержден одним отчетом: удаление задублированного уровня serial в конфиге, замена адаптера и восстановление резервной копии HAOS.

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

Аддон Zigbee2MQTT падает при старте, а в логе появляется ошибка со spawn udevadm. В ветках форума проблема встречалась в таких вариантах:

  • аддон не запускается на Raspberry Pi 3B, в логе ошибка spawn udevadm;
  • аддон не запускается на Home Assistant Yellow с координатором SMLIGHT SLZB-06, в логе ‘spawn udevadm ENOENT’;
  • Zigbee2MQTT не стартует с адаптером ConBee II (тип adapter: deconz) на Raspberry Pi 3B+;
  • после обновлений Zigbee2MQTT перестал запускаться, конфигурация перестала соответствовать состоянию координатора.

Тексты ошибок из логов:

Error: spawn udevadm ENOENT
Configuration is not consistent with adapter state/backup!
Error: startup failed - configuration-adapter mismatch - see logs above for more information

В двух ветках указана установка на HAOS (Home Assistant Operating System), в остальных тип установки не назван. Затронутые координаторы: SMLIGHT SLZB-06, Sonoff Zigbee 3.0 dongle plus, ConBee II. Для SLZB-06 после перепрошивки есть отдельный разбор.

Причины

В ветках форума названы три причины. Первая подтверждена участником напрямую, две другие - предположения, которые никто не проверил до конца.

ПричинаКак проверитьЧто сделать
В конфиге Zigbee2MQTT задублирован уровень serial (подтверждена в 1 ветке)Открыть конфигурацию и найти вложенный serial внутри serialУбрать дублирующийся уровень, оставить один блок serial
ZHA продолжает занимать тот же USB-донгл (предположение, 2 ветки)Проверить, активна ли интеграция ZHA и не подключена ли она к тому же донглуОтключить ZHA и перезапустить аддон - это рекомендация документации Zigbee2MQTT, но в ветках с этой ошибкой отключение ZHA не помогло
При установке Zigbee2MQTT изменилась какая-то настройка (предположение, 1 ветка)В ветке способа проверки не описаноВосстановить резервную копию HAOS, сделанную до установки

Что помогло

Ни одно решение не набрало больше одного подтверждения, но три подхода в итоге привели к запуску аддона.

Убрать дублирующийся уровень serial

В ветке на Home Assistant Yellow блок serial в конфигурации Zigbee2MQTT был вложен сам в себя:

serial:
  serial:
    port: tcp://<IP of my zigbee module>:6638

Пользователь убрал повторный уровень serial, запустил MQTT, и аддон поднялся. Помогло в 1 ветке форума из 1, где его пробовали. Это опыт форума, в документации Zigbee2MQTT такой случай не описан.

Заменить ConBee II на координатор Sonoff

В ветке с ConBee II на Raspberry Pi 3B+ Zigbee2MQTT так и не заработал с адаптером deconz. Проблему закрыла замена на координатор Sonoff - после нее аддон запустился. Помогло в 1 ветке форума из 1, где его пробовали. Тоже опыт форума, без подтверждения в документации.

Восстановить резервную копию HAOS

В ветке с координатором SMLIGHT SLZB-06, где Zigbee2MQTT перестал запускаться после обновлений, помогло восстановление резервной копии HAOS, сделанной до установки Zigbee2MQTT. Помогло в 1 ветке форума из 1, где его пробовали.

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

Большинство шагов при этой ошибке не сработало. Вот что пробовали пользователи и чем это закончилось:

  • Переставить USB-донгл в другой порт, например из USB3 в USB2. Не помогло в 2 ветках форума из 2, где его пробовали.
  • Отключить ZHA. Не помогло в 1 ветке форума из 1. Сам шаг при этом идет из документации Zigbee2MQTT: при проблемах запуска там советуют отключить интеграцию ZHA и перезапустить аддон.
  • Заполнить разделы mqtt и serial в конфиге и отключить или удалить ZHA. Не помогло в 1 ветке из 2, во второй исход неизвестен. Фрагмент настройки mqtt из этой ветки:
server: mqtt://core-mosquitto:1883
user: USER
password: PASSWORD
  • Попробовать другой USB-кабель, в том числе с зарядным устройством на 20W. Не помогло в 1 ветке форума из 1. Дешевые кабели в документации Zigbee2MQTT упомянуты как причина USB-отключений, но с этой ошибкой замена кабеля не сработала.
  • Подставить чужой рабочий конфиг для deconz с блоком socat и параметром adapter: deconz. Не помогло в 1 ветке форума из 1. Значение deconz допустимо по документации, но socat-блок в ней не описан. Про выбор типа адаптера есть отдельный разбор.
  • Вынуть донгл, полностью перезапустить Home Assistant, вернуть донгл, убедиться, что ZHA отключена, и снова запустить Zigbee2MQTT. Не помогло в 1 ветке форума из 1.
  • Удалить Zigbee2MQTT, перезагрузить систему, проверить, что ZHA не активна, заново установить аддон и вставить конфиг. Не помогло в 1 ветке форума из 1.

Если после устранения ошибки аддон падает уже с другой жалобой на адаптер, посмотрите разборы ошибки Failed to connect to the adapter и no valid USB adapter found. Для настройки с нуля пригодится гайд по установке Zigbee2MQTT в Home Assistant.

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

Ошибка связана с самой утилитой udevadm?

Судя по веткам, нет. Подтвержденный случай - задублированный уровень serial в конфиге Zigbee2MQTT, а остальные участники связывали ошибку с USB-донглом, занятым ZHA, или с настройкой, измененной при установке аддона. Советов исправлять саму утилиту в собранных ветках нет. Начать разумно с проверки конфигурации.

Можно ли оставить ZHA включенной?

Документация Zigbee2MQTT при проблемах запуска советует отключить ZHA и перезапустить аддон. Но в ветках именно с ошибкой spawn udevadm ENOENT одно отключение ZHA проблему не сняло, а ZHA, занимающий донгл, остался лишь предположением участников.

Работает ли ConBee II с Zigbee2MQTT?

Да, ConBee II поддерживается: значение deconz перечислено среди допустимых типов адаптера в документации Zigbee2MQTT. Но в одной из веток с этой ошибкой Zigbee2MQTT так и не запустился с ConBee II на Raspberry Pi 3B+, несмотря на смену порта, перезапуск Home Assistant и переустановку аддона. Проблему закрыла только замена адаптера на координатор Sonoff.

Где посмотреть настройки mqtt для Zigbee2MQTT?

В ветках форума использовался вариант server: mqtt://core-mosquitto:1883 с полями user и password, вместо USER и PASSWORD там стоят заглушки. Заполнение mqtt и serial вместе с отключением ZHA при ошибке spawn udevadm ENOENT не помогло. Если после запуска появляется ошибка MQTT failed to connect - есть отдельный разбор этой проблемы.

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