Zwave Errors after reinstall Home Assistant Operating System on SSD (updated to 64 bit) and restored backup

Hi, I’m seeking help troubleshooting my RPi3 HA that had no issues and all 14 Z-Wave (Z Wave Js) working fine. Thought my SD Card was failing so followed steps to migrate to a Samsung USB SSD drive via Sabarent USB 3.1 SATA adapter. After re-installation of the then-the latest Home Assistant OS (earlier this month, currently running 2023.2.3) none of my z wave devices work and ZWave JS Log has these error. If I restart it’ll work for a couple hours then failing again. Of note, I was using 32Bit HA, and upon reinstall only 64bit was available–everything but zwave seemed to work. I’m using a Nortek HUSBZB-1 Zigbee & Z-Wave Plus USB Interface. ZigBee is working fine.

When HAOS was reinstalled and my backup restored could have something changed with finding the USB, or a configuration didn’t carry over?

'm savvy to learn but not Linux savvy so any details on where to trouble shoot (and how) are welcomed. I’ve tried healing, I’ve tried reloading ZwaveJS but haven’t tried to reconfigure server. I’m not sure what to try next or where to look, again Zigbee (on same USB Stick) works fine. This setup has been working fine for a year–nothing else changed. Feel free to over explain, I’m not that savvy yet/in learning mode. Moderators: pls feel free to move this to a different category if needed.

Symptoms:

  • Newly added zwave devices shown as dead, existing zwave devices that were live still show as live bu not responsive. errors in logs, no automations calling zwave the previously worked, work now.

  • if I restart it’ll work for a few hours then fail again

The ZWave JS log reports this over and over again:

Z-Wave error ZWaveError: Timeout while waiting for an ACK from the controller (ZW0200)
    at Driver.sendMessage (/usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:4001:23)
    at Driver.sendCommandInternal (/usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:4192:28)
    at Driver.sendCommand (/usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:4307:15)
    at Proxy.set (/usr/src/node_modules/@zwave-js/cc/src/cc/MultilevelSwitchCC.ts:238:24)
    at Proxy.MultilevelSwitchCCAPI.<computed> (/usr/src/node_modules/@zwave-js/cc/src/cc/MultilevelSwitchCC.ts:344:6)
    at ZWaveNode.setValue (/usr/src/node_modules/zwave-js/src/lib/node/Node.ts:934:29)
    at NodeMessageHandler.handle (/usr/src/node_modules/@zwave-js/server/dist/lib/node/message_handler.js:23:38)
    at Object.node (/usr/src/node_modules/@zwave-js/server/dist/lib/server.js:41:96)
    at Client.receiveMessage (/usr/src/node_modules/@zwave-js/server/dist/lib/server.js:106:99)
    at WebSocket.<anonymous> (/usr/src/node_modules/@zwave-js/server/dist/lib/server.js:50:45) {
  code: 200,
  context: undefined,
  transactionSource: '    at Driver.sendMessage (/usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:4001:23)\n' +
    '    at Driver.sendCommandInternal (/usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:4192:28)\n' +
    '    at Driver.sendCommand (/usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:4307:15)\n' +
    '    at Proxy.set (/usr/src/node_modules/@zwave-js/cc/src/cc/MultilevelSwitchCC.ts:238:24)\n' +
    '    at Proxy.MultilevelSwitchCCAPI.<computed> (/usr/src/node_modules/@zwave-js/cc/src/cc/MultilevelSwitchCC.ts:344:6)\n' +
    '    at ZWaveNode.setValue (/usr/src/node_modules/zwave-js/src/lib/node/Node.ts:934:29)\n' +
    '    at NodeMessageHandler.handle (/usr/src/node_modules/@zwave-js/server/dist/lib/node/message_handler.js:23:38)\n' +
    '    at Object.node (/usr/src/node_modules/@zwave-js/server/dist/lib/server.js:41:96)\n' +
    '    at Client.receiveMessage (/usr/src/node_modules/@zwave-js/server/dist/lib/server.js:106:99)\n' +
    '    at WebSocket.<anonymous> (/usr/src/node_modules/@zwave-js/server/dist/lib/server.js:50:45)'
}
2023-02-19T03:29:41.136Z CNTRLR   Failed to execute controller command after 1/3 attempts. Scheduling next try i
                                  n 100 ms.
2023-02-19T03:29:42.265Z CNTRLR   Failed to execute controller command after 2/3 attempts. Scheduling next try i
                                  n 1100 ms.
2023-02-19T03:29:44.387Z CNTRLR   [Node 012] did not respond after 1/3 attempts. Scheduling next try in 500 ms.
2023-02-19T03:29:45.927Z CNTRLR   Failed to execute controller command after 1/3 attempts. Scheduling next try i
                                  n 100 ms.
2023-02-19T03:29:47.036Z CNTRLR   Failed to execute controller command after 2/3 attempts. Scheduling next try i
                                  n 1100 ms.
2023-02-19T03:29:49.150Z CNTRLR   [Node 012] did not respond after 2/3 attempts. Scheduling next try in 500 ms.
2023-02-19T03:29:50.738Z CNTRLR   Failed to execute controller command after 1/3 attempts. Scheduling next try i
                                  n 100 ms.
2023-02-19T03:29:51.859Z CNTRLR   Failed to execute controller command after 2/3 attempts. Scheduling next try i
                                  n 1100 ms.

The diagnostic info from ZWave JS config is:

Diagnostics
Driver Version:
10.5.4
Server Version:
1.25.0
Home ID:
3830884525
Server URL:
ws://core-zwave-js:3000

Controller Statistics

 Messages TX 
 Number of messages successfully sent to the controller
16
 Messages RX 
 Number of messages successfully received by the controller
123
 Dropped Messages TX 
 Number of messages from the controller that were dropped by the host
3
 Dropped Messages RX 
 Number of outgoing messages that were dropped because they could not be sent
0
 NAK 
 Number of messages that the controller did not accept
0
 CAN 
 Number of collisions while sending a message to the controller
3
 Timeout ACK 
 Number of transmission attempts where an ACK was missing from the controller
82
 Timeout Response 
 Number of transmission attempts where the controller response did not come in time
0
 Timeout Callback 

If I go and trigger a once-working zWave outline switch the ZWave Log in debug mode shows:

Subscribed to Z-Wave JS Log Messages…
Log Level changed to: Debug
2023-02-19T14:19:43.841Z SERIAL » 0x010b00130c042601ffff2540ad                                        (13 bytes)
2023-02-19T14:19:43.986Z DRIVER » [Node 012] [REQ] [SendData]
                                  │ transmit options: 0x25
                                  │ callback id:      64
                                  └─[MultilevelSwitchCCSet]
                                      target value: 255
                                      duration:     default
2023-02-19T14:19:45.000Z CNTRLR   Failed to execute controller command after 1/3 attempts. Scheduling next try i
                                  n 100 ms.

My current “all hardware” info:

ttyUSB0
/dev/serial/by-id/usb-Silicon_Labs_HubZ_Smart_Home_Controller_C1301880-if00-port0

Subsystem:
tty
Device path:
/dev/ttyUSB0
ID:
/dev/serial/by-id/usb-Silicon_Labs_HubZ_Smart_Home_Controller_C1301880-if00-port0
Attributes:
DEVLINKS: >-
  /dev/serial/by-id/usb-Silicon_Labs_HubZ_Smart_Home_Controller_C1301880-if00-port0
  /dev/serial/by-path/platform-3f980000.usb-usb-0:1.4:1.0-port0
DEVNAME: /dev/ttyUSB0
DEVPATH: >-
  /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4/1-1.4:1.0/ttyUSB0/tty/ttyUSB0
ID_BUS: usb
ID_MODEL: HubZ_Smart_Home_Controller
ID_MODEL_ENC: HubZ\x20Smart\x20Home\x20Controller
ID_MODEL_ID: 8a2a
ID_PATH: platform-3f980000.usb-usb-0:1.4:1.0
ID_PATH_TAG: platform-3f980000_usb-usb-0_1_4_1_0
ID_REVISION: '0100'
ID_SERIAL: Silicon_Labs_HubZ_Smart_Home_Controller_C1301880
ID_SERIAL_SHORT: C1301880
ID_TYPE: generic
ID_USB_DRIVER: cp210x
ID_USB_INTERFACES: ':ff0000:'
ID_USB_INTERFACE_NUM: '00'
ID_VENDOR: Silicon_Labs
ID_VENDOR_ENC: Silicon\x20Labs
ID_VENDOR_ID: 10c4
MAJOR: '188'
MINOR: '0'
SUBSYSTEM: tty
TAGS: ':systemd:'
USEC_INITIALIZED: '16369770'

ttyUSB1
/dev/serial/by-id/usb-Silicon_Labs_HubZ_Smart_Home_Controller_C1301880-if01-port0

Subsystem:
tty
Device path:
/dev/ttyUSB1
ID:
/dev/serial/by-id/usb-Silicon_Labs_HubZ_Smart_Home_Controller_C1301880-if01-port0
Attributes:
DEVLINKS: >-
  /dev/serial/by-id/usb-Silicon_Labs_HubZ_Smart_Home_Controller_C1301880-if01-port0
  /dev/serial/by-path/platform-3f980000.usb-usb-0:1.4:1.1-port0
DEVNAME: /dev/ttyUSB1
DEVPATH: >-
  /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4/1-1.4:1.1/ttyUSB1/tty/ttyUSB1
ID_BUS: usb
ID_MODEL: HubZ_Smart_Home_Controller
ID_MODEL_ENC: HubZ\x20Smart\x20Home\x20Controller
ID_MODEL_ID: 8a2a
ID_PATH: platform-3f980000.usb-usb-0:1.4:1.1
ID_PATH_TAG: platform-3f980000_usb-usb-0_1_4_1_1
ID_REVISION: '0100'
ID_SERIAL: Silicon_Labs_HubZ_Smart_Home_Controller_C1301880
ID_SERIAL_SHORT: C1301880
ID_TYPE: generic
ID_USB_DRIVER: cp210x
ID_USB_INTERFACES: ':ff0000:'
ID_USB_INTERFACE_NUM: '01'
ID_VENDOR: Silicon_Labs
ID_VENDOR_ENC: Silicon\x20Labs
ID_VENDOR_ID: 10c4
MAJOR: '188'
MINOR: '1'
SUBSYSTEM: tty
TAGS: ':systemd:'
USEC_INITIALIZED: '16443409'

usb1

Subsystem:
usb
Device path:
/dev/bus/usb/001/001
Attributes:
BUSNUM: '001'
DEVNAME: /dev/bus/usb/001/001
DEVNUM: '001'
DEVPATH: /devices/platform/soc/3f980000.usb/usb1
DEVTYPE: usb_device
DRIVER: usb
ID_BUS: usb
ID_FOR_SEAT: usb-platform-3f980000_usb
ID_MODEL: DWC_OTG_Controller
ID_MODEL_ENC: DWC\x20OTG\x20Controller
ID_MODEL_ID: '0002'
ID_PATH: platform-3f980000.usb
ID_PATH_TAG: platform-3f980000_usb
ID_REVISION: '0515'
ID_SERIAL: Linux_5.15.84-v8_dwc_otg_hcd_DWC_OTG_Controller_3f980000.usb
ID_SERIAL_SHORT: 3f980000.usb
ID_USB_INTERFACES: ':090000:'
ID_VENDOR: Linux_5.15.84-v8_dwc_otg_hcd
ID_VENDOR_ENC: Linux\x205.15.84-v8\x20dwc_otg_hcd
ID_VENDOR_ID: 1d6b
MAJOR: '189'
MINOR: '0'
OF_COMPATIBLE_0: brcm,bcm2708-usb
OF_COMPATIBLE_N: '1'
OF_FULLNAME: /soc/usb@7e980000
OF_NAME: usb
PRODUCT: 1d6b/2/515
SUBSYSTEM: usb
TAGS: ':seat:'
TYPE: 9/0/1
USEC_INITIALIZED: '7990096'

DISCLAIMER:
What I know about Z-wave you could put into the period at the end o this sentence.
I don’t run Home Assistant on a Raspberry Pi.
I have not booted any of my Raspberries from SSD.

So, with that, what I say is probably wrong.

When you plugged the SSD into a USB port you may have changed the port assignment for the Z-wave dongle. But I don’t see that in your logs.

Hi, I wondered that too. I don’t know how to check. I see some references online (maybe stale) to update to device id instead of usb path. But, seems to me that wouldn’t explain why the Zigbee part of the usb stick works or why it seems to work for a few hours after I reboot. Any other thoughts?

The Device ID is best because then it doesn’t matter which USB port you are using.
If you don’t have it yet, install the terminal add-on. Terminal opens the HAOS command line. Run lsusb to get a list of USB ports and hopefully what is plugged in to each port.

You can unplug the dongle and enter lsusb again to determine what the dongle’s ID is.
Plug it back in and lsusb to see if it’s back again.

Now we are really into the black hole of my knowledge about Zigbee. What do you mean by “Zigbee part of the usb stick works”? If I recall, the device map is in the Zigbee dongle memory, just like Z-wave so the devices will still work with each other.

For those who get similar errors I solved it for me. I tried adding an extension to the usb cable—this didn’t work. But adding a powered hub worked and has been reliable for the last 24 hours. Devices responsive and working. Perhaps unsurprising adding an SSD drive would impact my power utilization. Adding here so others in the community can try. I didn’t change any usb device mapping or anything.