Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ZST39 is probably corrupting the ACK after a soft reset #6399

Closed
3 of 11 tasks
jtbraun opened this issue Oct 15, 2023 · 5 comments · Fixed by #6409
Closed
3 of 11 tasks

ZST39 is probably corrupting the ACK after a soft reset #6399

jtbraun opened this issue Oct 15, 2023 · 5 comments · Fixed by #6409
Labels
device compatibility Work that needs to be done to support non-compliant or legacy devices

Comments

@jtbraun
Copy link
Contributor

jtbraun commented Oct 15, 2023

Is your problem within Home Assistant (Core or Z-Wave JS Integration)?

NO, my problem is NOT within Home Assistant or the ZWave JS integration

Is your problem within Z-Wave JS UI (formerly ZwaveJS2MQTT)?

NO, my problem is NOT within Z-Wave JS UI

Checklist

Describe the bug

What causes the bug?
The issue of a soft reset to a ZST39 during the startup phase.

What do you observe?
Soft reset is issued, and an 0x86 byte is immediately received and discarded. Then the SerialAPIStarted message comes in, and later the driver complains that an ACK was never received.

What did you expect to happen?
ACK would be received.

Steps to reproduce the behavior:

  1. Get a Zooz ZST39 800-series stick
  2. Update to latest (7.19 I think?)
  3. Run the test/run.ts aka "Debug locally" test in vscode
  4. See screenshotted below.

image

Modifying packages/serial/src/parsers/SerialAPIParser.ts to also accept 0x86 as "ACK" gets past the error.

NOTE: I've reported the issue to Zooz, if I hear back from them I'll let you know. In the meantime, there probably needs to be a quirk flag or something that is set in the serialAPIParser specifically when softreset is waiting on an ACK, that treats a discarded byte as the missing ACK. :-/

Device information

Manufacturer: ZOOZ
Model name: ZST39
Node ID in your network: 1

How are you using node-zwave-js?

  • zwave-js-ui (formerly zwavejs2mqtt) Docker image (latest)
  • zwave-js-ui (formerly zwavejs2mqtt) Docker image (dev)
  • zwave-js-ui (formerly zwavejs2mqtt) Docker manually built (please specify branches)
  • ioBroker.zwave2 adapter (please specify version)
  • HomeAssistant zwave_js integration (please specify version)
  • pkg
  • node-red-contrib-zwave-js (please specify version, double click node to find out)
  • Manually built from GitHub (please specify branch)
  • Other (please describe)

Which branches or versions?

version: master (9818c58)
node-zwave-js branch: master
zwave-js-ui branch: n/a

Did you change anything?

yes (please describe)

If yes, what did you change?

I changed the COM port to COM3 instead of COM5 in run.ts

Did this work before?

Don't know, this is a new device

If yes, where did it work?

n/a

Attach Driver Logfile

zwave.log

@zwave-js-bot
Copy link
Collaborator

👋 Hey @jtbraun!

It looks like you attached a logfile, but its filename doesn't look like it a driver log that came from Z-Wave JS. Please make sure you upload the correct one.

@AlCalzone
Copy link
Member

Hmm, I've seen something similar with the "official" USB controllers too: https://community.silabs.com/s/question/0D58Y00009pca5bSAA/bug-in-firmware-7191-softreset-is-no-longer-answered-with-ack?language=en_US

The 7.19 firmware is just broken :(

@AlCalzone AlCalzone added the device compatibility Work that needs to be done to support non-compliant or legacy devices label Oct 16, 2023
@jtbraun
Copy link
Contributor Author

jtbraun commented Oct 16, 2023

Oh how annoying. Is the firmware something that silicon labs mostly writes and distributes to stick vendors, they customize it (with LEDs, buttons, etc), and ship it?

@AlCalzone
Copy link
Member

Correct. I have a semi-direct contact to Silabs and made them aware of it again. Hopefully this gains some traction now.

@AlCalzone
Copy link
Member

Fix is up here: #6409
I have seen different values (c6, e6) on other controllers, so my strategy for now is to ignore the high nibble of the ACK byte completely, but only once.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
device compatibility Work that needs to be done to support non-compliant or legacy devices
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants