Hi,
And thanks to all of you that may read me, and/or help me,
I have a Home Assistant setup,
On top of Promox VE, on a mini PC (8Gb RAM, … 4 dedicated to HA)
using a Zooz 800 Zwave Stick.
Current Home Assistant version : 2025.5.2
Zwave-js : 0.13.1
14 Zwave devices (shutters, smoke detectors, smart implant, 1 home energy meter, multi fibaro switches).
Everything seemed to be quite fine since the begining… but more and more, I have “Attempting to recover unresponsive controller by reopening the serial port…”
which block everything on Zwave, until I physicall remove the USB stick, and plug it back in.
(tried, multiple way… restarting Zwave add on… usually does not fix… I even tried to restart HAClient).
I tried to disable Soft Reset, … seemed to be worth (as the unresponsive appeared less than 1 hour after).
I set the log level to debug, so that you can gave a look and propose some solution… to be honnest, … I’m wondering if the issue comes from hardware or my software configuration.
2025-05-28T10:10:00.986Z SERIAL » 0x011800a901050c600d00016c01a404260100ff25000000009f85 (26 bytes)
2025-05-28T10:10:01.987Z CNTRLR The controller is unresponsive
2025-05-28T10:10:01.987Z DRIVER Attempting to recover unresponsive controller by restarting it...
2025-05-28T10:10:01.988Z CNTRLR Performing soft reset...
2025-05-28T10:10:01.988Z DRIVER » [REQ] [SoftReset]
2025-05-28T10:10:01.988Z SERIAL » 0x01030008f4 (5 bytes)
2025-05-28T10:10:02.990Z CNTRLR Soft reset failed: Timeout while waiting for an ACK from the controller (ZW020
0)
2025-05-28T10:10:02.990Z DRIVER Attempting to recover unresponsive controller by reopening the serial port...
Z-Wave error ZWaveError: Timeout while waiting for an ACK from the controller (ZW0200)
at Driver.sendMessage (file:///usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:6965:23)
at Driver.sendCommandInternal (file:///usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:7161:28)
at Driver.sendSupervisedCommand (file:///usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:7207:27)
at Driver.sendCommand (file:///usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:7262:30)
at Proxy.set (file:///usr/src/node_modules/@zwave-js/cc/src/cc/MultilevelSwitchCC.ts:246:20)
at Proxy.set (file:///usr/src/node_modules/@zwave-js/cc/src/cc/MultilevelSwitchCC._validateArgs.ts:13:30)
at Proxy.<anonymous> (file:///usr/src/node_modules/@zwave-js/cc/src/cc/MultilevelSwitchCC.ts:323:17)
at ZWaveNode.setValue (file:///usr/src/node_modules/zwave-js/src/lib/node/Node.ts:555:39)
at NodeMessageHandler.handle (file:///usr/src/node_modules/@zwave-js/server/dist-esm/lib/node/message_handler.js:23:43)
at Client.receiveMessage (file:///usr/src/node_modules/@zwave-js/server/dist-esm/lib/server.js:134:100) {
code: 200,
context: 'ACK',
transactionSource: ' at Driver.sendMessage (file:///usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:6965:23)\n' +
' at Driver.sendCommandInternal (file:///usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:7161:28)\n' +
' at Driver.sendSupervisedCommand (file:///usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:7207:27)\n' +
' at Driver.sendCommand (file:///usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:7262:30)\n' +
' at Proxy.set (file:///usr/src/node_modules/@zwave-js/cc/src/cc/MultilevelSwitchCC.ts:246:20)\n' +
' at Proxy.set (file:///usr/src/node_modules/@zwave-js/cc/src/cc/MultilevelSwitchCC._validateArgs.ts:13:30)\n' +
' at Proxy.<anonymous> (file:///usr/src/node_modules/@zwave-js/cc/src/cc/MultilevelSwitchCC.ts:323:17)\n' +
' at ZWaveNode.setValue (file:///usr/src/node_modules/zwave-js/src/lib/node/Node.ts:555:39)\n' +
' at NodeMessageHandler.handle (file:///usr/src/node_modules/@zwave-js/server/dist-esm/lib/node/message_handler.js:23:43)\n' +
' at Client.receiveMessage (file:///usr/src/node_modules/@zwave-js/server/dist-esm/lib/server.js:134:100)'
}
2025-05-28T10:10:02.992Z DRIVER all queues idle
2025-05-28T10:10:04.244Z DRIVER Serial port reopened. Returning to normal operation and hoping for the best...
2025-05-28T10:10:04.244Z CNTRLR The controller is no longer unresponsive
2025-05-28T10:10:04.245Z DRIVER one or more queues busy
2025-05-28T10:10:04.245Z DRIVER » [Node 013] [REQ] [SendDataBridge]
│ source node id: 1
│ transmit options: 0x25
│ callback id: 161
└─[MultiChannelCCCommandEncapsulation]
│ source: 0
│ destination: 1
└─[SupervisionCCGet]
│ session id: 2
│ request updates: true
└─[MultilevelSwitchCCSet]
target value: 0
2025-05-28T10:10:04.245Z SERIAL » 0x011800a9010d0c600d00016c018204260100ff2500000000a195 (26 bytes)
2025-05-28T10:10:05.247Z CNTRLR The controller is unresponsive
2025-05-28T10:10:05.248Z DRIVER Attempting to recover unresponsive controller by restarting it...
2025-05-28T10:10:05.248Z CNTRLR Performing soft reset...
2025-05-28T10:10:05.248Z DRIVER » [REQ] [SoftReset]
2025-05-28T10:10:05.248Z SERIAL » 0x01030008f4 (5 bytes)
2025-05-28T10:10:06.249Z CNTRLR Soft reset failed: Timeout while waiting for an ACK from the controller (ZW020
0)
2025-05-28T10:10:06.249Z DRIVER Attempting to recover unresponsive controller by reopening the serial port...
Z-Wave error ZWaveError: Timeout while waiting for an ACK from the controller (ZW0200)
at Driver.sendMessage (file:///usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:6965:23)
at Driver.sendCommandInternal (file:///usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:7161:28)
at Driver.sendSupervisedCommand (file:///usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:7207:27)
at Driver.sendCommand (file:///usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:7262:30)
at Proxy.set (file:///usr/src/node_modules/@zwave-js/cc/src/cc/MultilevelSwitchCC.ts:246:20)
at Proxy.set (file:///usr/src/node_modules/@zwave-js/cc/src/cc/MultilevelSwitchCC._validateArgs.ts:13:30)
at Proxy.<anonymous> (file:///usr/src/node_modules/@zwave-js/cc/src/cc/MultilevelSwitchCC.ts:323:17)
at ZWaveNode.setValue (file:///usr/src/node_modules/zwave-js/src/lib/node/Node.ts:555:39)
at NodeMessageHandler.handle (file:///usr/src/node_modules/@zwave-js/server/dist-esm/lib/node/message_handler.js:23:43)
at Client.receiveMessage (file:///usr/src/node_modules/@zwave-js/server/dist-esm/lib/server.js:134:100) {
code: 200,
context: 'ACK',
transactionSource: ' at Driver.sendMessage (file:///usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:6965:23)\n' +
' at Driver.sendCommandInternal (file:///usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:7161:28)\n' +
' at Driver.sendSupervisedCommand (file:///usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:7207:27)\n' +
' at Driver.sendCommand (file:///usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:7262:30)\n' +
' at Proxy.set (file:///usr/src/node_modules/@zwave-js/cc/src/cc/MultilevelSwitchCC.ts:246:20)\n' +
' at Proxy.set (file:///usr/src/node_modules/@zwave-js/cc/src/cc/MultilevelSwitchCC._validateArgs.ts:13:30)\n' +
' at Proxy.<anonymous> (file:///usr/src/node_modules/@zwave-js/cc/src/cc/MultilevelSwitchCC.ts:323:17)\n' +
' at ZWaveNode.setValue (file:///usr/src/node_modules/zwave-js/src/lib/node/Node.ts:555:39)\n' +
' at NodeMessageHandler.handle (file:///usr/src/node_modules/@zwave-js/server/dist-esm/lib/node/message_handler.js:23:43)\n' +
' at Client.receiveMessage (file:///usr/src/node_modules/@zwave-js/server/dist-esm/lib/server.js:134:100)'
}
2025-05-28T10:10:06.253Z DRIVER all queues idle
2025-05-28T10:10:07.505Z DRIVER Serial port reopened. Returning to normal operation and hoping for the best...
2025-05-28T10:10:07.505Z CNTRLR The controller is no longer unresponsive
2025-05-28T10:10:07.505Z DRIVER one or more queues busy
2025-05-28T10:10:07.506Z DRIVER » [Node 006] [REQ] [SendDataBridge]
│ source node id: 1
│ transmit options: 0x25
│ callback id: 163
└─[MultiChannelCCCommandEncapsulation]
│ source: 0
│ destination: 1
└─[SupervisionCCGet]
│ session id: 37
│ request updates: true
└─[MultilevelSwitchCCSet]
target value: 0
2025-05-28T10:10:07.506Z SERIAL » 0x011800a901060c600d00016c01a504260100ff2500000000a3bb (26 bytes)
2025-05-28T10:10:08.507Z CNTRLR The controller is unresponsive
2025-05-28T10:10:08.507Z DRIVER Attempting to recover unresponsive controller by restarting it...
2025-05-28T10:10:08.507Z CNTRLR Performing soft reset...
2025-05-28T10:10:08.508Z DRIVER » [REQ] [SoftReset]
2025-05-28T10:10:08.508Z SERIAL » 0x01030008f4 (5 bytes)
2025-05-28T10:10:09.510Z CNTRLR Soft reset failed: Timeout while waiting for an ACK from the controller (ZW020
0)
2025-05-28T10:10:09.510Z DRIVER Attempting to recover unresponsive controller by reopening the serial port...
Z-Wave error ZWaveError: Timeout while waiting for an ACK from the controller (ZW0200)
at Driver.sendMessage (file:///usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:6965:23)
at Driver.sendCommandInternal (file:///usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:7161:28)
at Driver.sendSupervisedCommand (file:///usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:7207:27)
at Driver.sendCommand (file:///usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:7262:30)
at Proxy.set (file:///usr/src/node_modules/@zwave-js/cc/src/cc/MultilevelSwitchCC.ts:246:20)
at Proxy.set (file:///usr/src/node_modules/@zwave-js/cc/src/cc/MultilevelSwitchCC._validateArgs.ts:13:30)
at Proxy.<anonymous> (file:///usr/src/node_modules/@zwave-js/cc/src/cc/MultilevelSwitchCC.ts:323:17)
at ZWaveNode.setValue (file:///usr/src/node_modules/zwave-js/src/lib/node/Node.ts:555:39)
at NodeMessageHandler.handle (file:///usr/src/node_modules/@zwave-js/server/dist-esm/lib/node/message_handler.js:23:43)
at Client.receiveMessage (file:///usr/src/node_modules/@zwave-js/server/dist-esm/lib/server.js:134:100) {
code: 200,
context: 'ACK',
transactionSource: ' at Driver.sendMessage (file:///usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:6965:23)\n' +
' at Driver.sendCommandInternal (file:///usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:7161:28)\n' +
' at Driver.sendSupervisedCommand (file:///usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:7207:27)\n' +
' at Driver.sendCommand (file:///usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:7262:30)\n' +
' at Proxy.set (file:///usr/src/node_modules/@zwave-js/cc/src/cc/MultilevelSwitchCC.ts:246:20)\n' +
' at Proxy.set (file:///usr/src/node_modules/@zwave-js/cc/src/cc/MultilevelSwitchCC._validateArgs.ts:13:30)\n' +
' at Proxy.<anonymous> (file:///usr/src/node_modules/@zwave-js/cc/src/cc/MultilevelSwitchCC.ts:323:17)\n' +
' at ZWaveNode.setValue (file:///usr/src/node_modules/zwave-js/src/lib/node/Node.ts:555:39)\n' +
' at NodeMessageHandler.handle (file:///usr/src/node_modules/@zwave-js/server/dist-esm/lib/node/message_handler.js:23:43)\n' +
' at Client.receiveMessage (file:///usr/src/node_modules/@zwave-js/server/dist-esm/lib/server.js:134:100)'
}
2025-05-28T10:10:09.512Z DRIVER all queues idle
2025-05-28T10:10:10.763Z DRIVER Serial port reopened. Returning to normal operation and hoping for the best...
2025-05-28T10:10:10.763Z CNTRLR The controller is no longer unresponsive
2025-05-28T10:10:10.764Z DRIVER one or more queues busy
2025-05-28T10:10:10.764Z DRIVER » [Node 004] [REQ] [SendDataBridge]
│ source node id: 1
│ transmit options: 0x25
│ callback id: 165
└─[MultiChannelCCCommandEncapsulation]
│ source: 0
│ destination: 1
└─[SupervisionCCGet]
│ session id: 50
│ request updates: true
└─[MultilevelSwitchCCSet]
target value: 0
2025-05-28T10:10:10.765Z SERIAL » 0x011800a901040c600d00016c01b204260100ff2500000000a5a8 (26 bytes)
2025-05-28T10:10:11.766Z CNTRLR The controller is unresponsive
2025-05-28T10:10:11.767Z DRIVER Attempting to recover unresponsive controller by restarting it...
2025-05-28T10:10:11.767Z CNTRLR Performing soft reset...
2025-05-28T10:10:11.767Z DRIVER » [REQ] [SoftReset]
2025-05-28T10:10:11.767Z SERIAL » 0x01030008f4 (5 bytes)
2025-05-28T10:10:12.769Z CNTRLR Soft reset failed: Timeout while waiting for an ACK from the controller (ZW020
0)
2025-05-28T10:10:12.769Z DRIVER Attempting to recover unresponsive controller by reopening the serial port...
Z-Wave error ZWaveError: Timeout while waiting for an ACK from the controller (ZW0200)
at Driver.sendMessage (file:///usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:6965:23)
at Driver.sendCommandInternal (file:///usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:7161:28)
at Driver.sendSupervisedCommand (file:///usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:7207:27)
2025-05-28T10:10:12.772Z DRIVER all queues idle
at Driver.sendCommand (file:///usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:7262:30)
at Proxy.set (file:///usr/src/node_modules/@zwave-js/cc/src/cc/MultilevelSwitchCC.ts:246:20)
at Proxy.set (file:///usr/src/node_modules/@zwave-js/cc/src/cc/MultilevelSwitchCC._validateArgs.ts:13:30)
at Proxy.<anonymous> (file:///usr/src/node_modules/@zwave-js/cc/src/cc/MultilevelSwitchCC.ts:323:17)
at ZWaveNode.setValue (file:///usr/src/node_modules/zwave-js/src/lib/node/Node.ts:555:39)
at NodeMessageHandler.handle (file:///usr/src/node_modules/@zwave-js/server/dist-esm/lib/node/message_handler.js:23:43)
at Client.receiveMessage (file:///usr/src/node_modules/@zwave-js/server/dist-esm/lib/server.js:134:100) {
code: 200,
context: 'ACK',
transactionSource: ' at Driver.sendMessage (file:///usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:6965:23)\n' +
' at Driver.sendCommandInternal (file:///usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:7161:28)\n' +
' at Driver.sendSupervisedCommand (file:///usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:7207:27)\n' +
' at Driver.sendCommand (file:///usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:7262:30)\n' +
' at Proxy.set (file:///usr/src/node_modules/@zwave-js/cc/src/cc/MultilevelSwitchCC.ts:246:20)\n' +
' at Proxy.set (file:///usr/src/node_modules/@zwave-js/cc/src/cc/MultilevelSwitchCC._validateArgs.ts:13:30)\n' +
' at Proxy.<anonymous> (file:///usr/src/node_modules/@zwave-js/cc/src/cc/MultilevelSwitchCC.ts:323:17)\n' +
' at ZWaveNode.setValue (file:///usr/src/node_modules/zwave-js/src/lib/node/Node.ts:555:39)\n' +
' at NodeMessageHandler.handle (file:///usr/src/node_modules/@zwave-js/server/dist-esm/lib/node/message_handler.js:23:43)\n' +
' at Client.receiveMessage (file:///usr/src/node_modules/@zwave-js/server/dist-esm/lib/server.js:134:100)'
}
2025-05-28T10:10:14.024Z DRIVER Serial port reopened. Returning to normal operation and hoping for the best...
2025-05-28T10:10:14.024Z CNTRLR The controller is no longer unresponsive
2025-05-28T10:10:17.773Z DRIVER one or more queues busy
2025-05-28T10:10:17.773Z DRIVER » [REQ] [GetBackgroundRSSI]
2025-05-28T10:10:17.774Z SERIAL » 0x0103003bc7 (5 bytes)
2025-05-28T10:10:18.775Z CNTRLR The controller is unresponsive
2025-05-28T10:10:18.775Z DRIVER Attempting to recover unresponsive controller by restarting it...
2025-05-28T10:10:18.775Z CNTRLR Performing soft reset...
2025-05-28T10:10:18.776Z DRIVER » [REQ] [SoftReset]
2025-05-28T10:10:18.776Z SERIAL » 0x01030008f4 (5 bytes)
2025-05-28T10:10:19.777Z CNTRLR Soft reset failed: Timeout while waiting for an ACK from the controller (ZW020
0)
2025-05-28T10:10:19.778Z DRIVER Attempting to recover unresponsive controller by reopening the serial port...
2025-05-28T10:10:19.779Z DRIVER all queues idle
2025-05-28T10:10:21.032Z DRIVER Serial port reopened. Returning to normal operation and hoping for the best...
2025-05-28T10:10:21.032Z CNTRLR The controller is no longer unresponsive
2025-05-28T10:10:47.774Z DRIVER one or more queues busy
2025-05-28T10:10:47.774Z DRIVER » [REQ] [GetBackgroundRSSI]
2025-05-28T10:10:47.775Z SERIAL » 0x0103003bc7 (5 bytes)
2025-05-28T10:10:48.775Z CNTRLR The controller is unresponsive
2025-05-28T10:10:48.775Z DRIVER Attempting to recover unresponsive controller by restarting it...
2025-05-28T10:10:48.776Z CNTRLR Performing soft reset...
2025-05-28T10:10:48.777Z DRIVER » [REQ] [SoftReset]
2025-05-28T10:10:48.777Z SERIAL » 0x01030008f4 (5 bytes)
2025-05-28T10:10:49.778Z CNTRLR Soft reset failed: Timeout while waiting for an ACK from the controller (ZW020
0)
2025-05-28T10:10:49.779Z DRIVER Attempting to recover unresponsive controller by reopening the serial port...
2025-05-28T10:10:49.782Z DRIVER all queues idle
2025-05-28T10:10:51.035Z DRIVER Serial port reopened. Returning to normal operation and hoping for the best...
2025-05-28T10:10:51.035Z CNTRLR The controller is no longer unresponsive
2025-05-28T10:11:17.774Z DRIVER one or more queues busy
2025-05-28T10:11:17.775Z DRIVER » [REQ] [GetBackgroundRSSI]
2025-05-28T10:11:17.775Z SERIAL » 0x0103003bc7 (5 bytes)
2025-05-28T10:11:18.775Z CNTRLR The controller is unresponsive
2025-05-28T10:11:18.776Z DRIVER Attempting to recover unresponsive controller by restarting it...
2025-05-28T10:11:18.777Z CNTRLR Performing soft reset...
2025-05-28T10:11:18.777Z DRIVER » [REQ] [SoftReset]
2025-05-28T10:11:18.777Z SERIAL » 0x01030008f4 (5 bytes)
2025-05-28T10:11:19.778Z CNTRLR Soft reset failed: Timeout while waiting for an ACK from the controller (ZW020
0)
2025-05-28T10:11:19.778Z DRIVER Attempting to recover unresponsive controller by reopening the serial port...
2025-05-28T10:11:19.779Z DRIVER all queues idle
2025-05-28T10:11:21.033Z DRIVER Serial port reopened. Returning to normal operation and hoping for the best...
2025-05-28T10:11:21.033Z CNTRLR The controller is no longer unresponsive
2025-05-28T10:11:31.275Z DRIVER The serial port closed unexpectedly! (ZW0100)
Error in driver ZWaveError: The serial port closed unexpectedly! (ZW0100)
at Driver.destroyWithMessage (file:///usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:3691:17)
at Driver.handleSerialData (file:///usr/src/node_modules/zwave-js/src/lib/driver/Driver.ts:3860:15) {
code: 100,
context: undefined,
transactionSource: undefined
}
Shutting down
I have the same issue. My setup had been stable for years.
The issues started when upgrading to version 0.13.x of the Z-wave JS Add-On.
I tried all the standard stuff, upgraded firmware on my controller, tried rediscovering devices, etc… After a reboot things would work for a bit and then a handful of devices would go offline again.
All that being said, I believe the issue will be fixed in a future add-on update. Currently the add-on version 0.13.1 contains Z-Wave JS version 15.3.2.
Z-Wave JS is up to version 15.6.0
Version 15.4.2 contains this bugfix that I hope fixes the issue:
Fixed a regression from v15 where Z-Wave JS would immediately soft-reset the controller instead of retrying after an ACK timeout.