node-zwave-js: Restoring NVM from 500 to 700 series controller marks all nodes as dead

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 ZWaveJS2MQTT?

NO, my problem is NOT within ZWaveJS2MQTT

Checklist

Describe the bug

What causes the bug? Restoring the NVM backup from a 500 series stick (Aeotec ZW090) to a 700 series stick (Zooz ZST10 700).

What do you observe? All nodes failing their interviews, stuck on “Protocol Info” in z2m, all mains-powered nodes being marked as dead.

What did you expect to happen? I expected all nodes to connect happily to their new controller. (Not really, that’s why I was testing this, to break things. 😉)

Steps to reproduce the behavior:

  1. Backed up old 500 stick with z2m UI and then shut down addon.
  2. Replaced sticks and started addon.
  3. Changed USB serial ID in z2m config to new stick and restarted addon, saw no nodes in z2m list.
  4. Restored NVM to 700 stick using custom driver function (below) in z2m UI with restoreNVM so it would convert then restarted addon, saw all nodes in list but all interviewing.

I was able to stop the addon, swap sticks, restart, change the USB path and restart again to restore previous network state fine. No attempt at re-interview in this case, only a full re-interview for all devices with the new stick it seems.

const fs = this.require("fs-extra");  
const { storeDir } = this.require('../config/app');  
const nvm = fs.readFileSync(storeDir + "/NVM_RAW_2021-12-30.bin");  
await driver.controller.restoreNVM(nvm);

Device information

Manufacturer: Zooz Model name: ZST10 700 Node ID in your network: All

How are you using node-zwave-js?

  • zwavejs2mqtt Docker image (latest)
  • zwavejs2mqtt Docker image (dev)
  • 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: 8.9.1 node-zwave-js branch: master zwavejs2mqtt branch: master

Using the latest HaOS z2m addon version 0.32.2, with z2m 6.2.0 with zjs 8.9.1

Did you change anything?

no

If yes, what did you change?

No response

Did this work before?

No, it never worked anywhere

If yes, where did it work?

No response

Attach Driver Logfile

zwavejs_2021-12-30.log

Controller backup starts at 2021-12-31T02:51:22.750Z on line 25313

About this issue

  • Original URL
  • State: closed
  • Created 3 years ago
  • Reactions: 1
  • Comments: 18 (10 by maintainers)

Most upvoted comments

I’ll need to find some time to investigate this. I should have all the logs/files I need for now and I now also have a 500-series stick to test with.

Thanks to @kpine for referencing this. You might see more threads opened on this topic with the recent 700 firmware release (people, like me, trying to migrate back to their original 700 after converting to a 500).

Ok these logs are confusing me like hell. The restored 700 stick has a different home ID than the 500 series one and a different one than before the restore. Lets see if the backups can shed some light onto this.

@Danny2100 having a second data point could be interesting. AFAIK these two 700 series sticks have different NVMs, so maybe that’s an influence (or not). I’ll try to figure this out over the weekend.

I see the same thing. Working Aeotec 500, backup nvm, swap out stick for UZB7, restart container, restore NVM. All nodes dead, nothing will ping.

Tried the conversion from the UI twice (via restoring the 500 NVM backup) and command line once (converted 500 bin to 700 bin on command line and restored the converted NVM in z2m UI) - same result.

Went back to the Aeotec 500, back working again.