ZHA is part of Home-assistant, which on HAOS runs in a docker container managed by the supervisor (also running in docker). That core container should run in “priviledged mode” on HAOS and have root access to all USB devices.
Even if the container runs with root access, the contained process (e.g. ZHA component) should still access the port with the dialout
group permissions only, instead of root
– that’s how it is typically done for security reasons, but not sure for HA. On my system at least, dialout
on HAOS maps numerically to audio
on Core/Supervisor. Since (to my understanding) HAOS controls access to that port via the group membership, accesing the port with dialout
on Core/Supervisor results in access denied on HAOS.
Did you try to specify the path to the usb in zha by /dev/serial/by-id/ instead of ttyacm0?
Yes, that is how I did it, although it shouldn’t matter since the by-id
path is just a link.
Most devices need at the very least the serial device path, like
/dev/ttyUSB0
, but it is recommended to use device path from/dev/serial/by-id
folder, e.g.,/dev/serial/by-id/usb-Silicon_Labs_HubZ_Smart_Home_Controller_C0F003D3-if01-port0
A list of available device paths can be found in Configuration > Add-ons & Backups > System > Host > dot menu > Hardware .
See above – I did confirm the path by checking the HW listing.