How to change radio path in ZHA

I have migrated from a custom Home Assistant install to a Hassio install on a Raspberry Pi.

I copied over the config folder and things seem to work in general, but the hardware path to the Zigbee radio has changed, so all my Zigbee devices are unavailable.

I REALLY don’t want to remove the ZHA integration and re-add it, as I would have to add all my Zigbee devices again (i have a LOT).

I can’t figure out where the path to the radio is stored, and it doesn’t seem like it can be reconfigured from the GUI.

Is there any way to update the radio path in ZHA without deleting and re-creating the integration?

Nope sorry, I seem to have misunderstood what my issue is. ZHA seems to be communicating with with Zigbee radio:

2021-01-08 01:54:55 DEBUG (MainThread) [zigpy_deconz.zigbee.application] Sending Zigbee broadcast with tsn 237 under 238 request id, data: b'ed3c00'
2021-01-08 01:54:55 DEBUG (MainThread) [zigpy_deconz.api] Command Command.aps_data_request (17, 238, 0, <DeconzAddressEndpoint address_mode=1 address=65532 endpoint=None>, 0, 54, 0, b'\xed<\x00', 2, 0)
2021-01-08 01:54:55 DEBUG (MainThread) [zigpy_deconz.uart] Send: 0x120a0018001100ee0001fcff00003600000300ed3c000200
2021-01-08 01:54:55 DEBUG (MainThread) [zigpy_deconz.uart] Frame received: 0x120a000900020022ee
2021-01-08 01:54:55 DEBUG (MainThread) [zigpy_deconz.api] APS data request response: [2, <DeviceState.APSDE_DATA_REQUEST_SLOTS_AVAILABLE|2: 34>, 238]
2021-01-08 01:54:55 DEBUG (MainThread) [zigpy_deconz.uart] Frame received: 0x0e0b000700aa00
2021-01-08 01:54:55 DEBUG (MainThread) [zigpy_deconz.api] Device state changed response: [<DeviceState.128|APSDE_DATA_REQUEST_SLOTS_AVAILABLE|APSDE_DATA_INDICATION|2: 170>, 0]
2021-01-08 01:54:55 DEBUG (MainThread) [zigpy_deconz.api] Command Command.aps_data_indication (1, 1)
2021-01-08 01:54:55 DEBUG (MainThread) [zigpy_deconz.uart] Send: 0x170b000800010001
2021-01-08 01:54:55 DEBUG (MainThread) [zigpy_deconz.uart] Frame received: 0x170b0021001a002201fcff0102000000000036000300ed3c0000aff16a17b10013
2021-01-08 01:54:55 DEBUG (MainThread) [zigpy_deconz.api] APS data indication response: [26, <DeviceState.APSDE_DATA_REQUEST_SLOTS_AVAILABLE|2: 34>, <DeconzAddress address_mode=ADDRESS_MODE.GROUP address=0xfffc>, 1, <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0x0000>, 0, 0, 54, b'\xed<\x00', 0, 175, 241, 106, 23, 177, 0, 19]
2021-01-08 01:54:55 DEBUG (MainThread) [zigpy.zdo] [0x0000:zdo] ZDO request ZDOCmd.Mgmt_Permit_Joining_req: [60, <Bool.false: 0>]
2021-01-08 01:54:55 DEBUG (MainThread) [homeassistant.components.zha.core.device] [0x0000](ConBee II): started initialization
2021-01-08 01:54:55 DEBUG (MainThread) [homeassistant.components.zha.core.channels.base] [0x0000:ZDO](ConBee II): 'async_initialize' stage succeeded
2021-01-08 01:54:55 DEBUG (MainThread) [zigpy_deconz.api] 'aps_data_indication' response from <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0x0000>, ep: 0, profile: 0x0000, cluster_id: 0x0036, data: b'ed3c00'
2021-01-08 01:54:55 DEBUG (MainThread) [homeassistant.components.zha.core.device] [0x0000](ConBee II): power source: Mains
2021-01-08 01:54:55 DEBUG (MainThread) [homeassistant.components.zha.core.device] [0x0000](ConBee II): completed initialization
2021-01-08 01:54:55 DEBUG (MainThread) [zigpy_deconz.uart] Frame received: 0x0e0c000700a600
2021-01-08 01:54:55 DEBUG (MainThread) [zigpy_deconz.api] Device state changed response: [<DeviceState.128|APSDE_DATA_REQUEST_SLOTS_AVAILABLE|APSDE_DATA_CONFIRM|2: 166>, 0]
2021-01-08 01:54:55 DEBUG (MainThread) [zigpy_deconz.api] Command Command.aps_data_confirm (0,)
2021-01-08 01:54:55 DEBUG (MainThread) [zigpy_deconz.uart] Send: 0x040c0007000000
2021-01-08 01:54:55 DEBUG (MainThread) [zigpy_deconz.uart] Frame received: 0x040c0012000b0022ee01fcff000000000000
2021-01-08 01:54:55 DEBUG (MainThread) [zigpy_deconz.api] APS data confirm response for request with id 238: 00
2021-01-08 01:54:55 DEBUG (MainThread) [zigpy_deconz.api] Request id: 0xee 'aps_data_confirm' for <DeconzAddressEndpoint address_mode=ADDRESS_MODE.GROUP address=0xfffc endpoint=None>, status: 0x00
2021-01-08 01:54:55 DEBUG (MainThread) [zigpy_deconz.api] Command Command.write_parameter (2, <NetworkParameter.permit_join: 33>, b'<')
2021-01-08 01:54:55 DEBUG (MainThread) [zigpy_deconz.uart] Send: 0x0b0d0009000200213c
2021-01-08 01:54:55 DEBUG (MainThread) [zigpy_deconz.uart] Frame received: 0x0b0d000800010021
2021-01-08 01:54:55 DEBUG (MainThread) [zigpy_deconz.api] Write parameter permit_join: SUCCESS

But all my devices are still unavailable, and I’m not sure how to debug this from here…

EDIT: On second thought, how do I know if ZHA is actually talking to the Conbee II radio? The device is now under /dev/serial/by-id/... and that’s definitely not the same path that I originally configured it with. Can it have automatically resolved it?

I really have no clue how ZHA works, what can I do to troubleshoot this?

I don’t know if you found a solution to this, but I have a partial one. I am migrating from a Docker container for HA to HA Core inside an LXC container, and have launched the new instance using the migrated configuration directory.

My old configuration had Zigbee Home Automation integration using /dev/serial/by-id/usb-dresden_elektronik_… as the path, and I didn’t have that inside the LXC container; I have instead mounted the path from the ProxMox host using udev rules and LXC mount options manually added to the configuration.

I too had the issue where I can’t find a way to change the path for the ZHA radio using the HA integrations GUI. But I was able to manually create a symlink from /dev/serial/by-id/usb-... to /dev/ttyACM0, and the integration started working within a few seconds.

lxc $ sudo mkdir -p /dev/serial/by-id
lxc $ sudo ln -s /dev/ttyACM0 /dev/serial/by-id/usb-dresden_elektronik_ingenieurtechnik_GmbH_ConBee_II_DE2408679-if00

If there is a way to edit the radio path then it would be a better solution.

1 Like

Thanks @openfirmware , this solved my issue with my Silicon Labs slae.sh cc2652rb stick not linking with ZHA. Seems to be an debian issue, where the by-id link is busted.
Gotten an error from components/zha/core/gateway.py:205
: Error setting up entry slae.sh cc2652rb stick - slaesh’s iot stuff - slae.sh cc2652rb stick - slaesh’s iot stuff