UNPKG

inventoresed

Version:

Z-Wave driver written entirely in JavaScript/TypeScript

70 lines (44 loc) 2.95 kB
# Z-Wave JS: NVM editor CLI utility to convert binary NVM backups from Z-Wave controllers into JSON and back. Can be used to edit a Z-Wave controller's memory or convert it between different firmware revisions. **WARNING:** This is highly experimental. Use at your own risk! (Probably) supports all NVM files in the NVM3 format, which is used starting with Z-Wave SDK 6.61+. ## Usage You can either execute the current version directly from `npm` using ``` npx @zwave-js/nvmedit ...command... ``` or you can execute the version in the checked out repository by executing ``` yarn ts packages/nvmedit/src/cli.ts ...command... ``` The following documentation will use the first approach. ## Convert one NVM to be compatible with another one **This is probably the command you're looking for.** It converts the format of an NVM backup between different Z-Wave modules. ``` npx @zwave-js/nvmedit convert --source <source> --target <target> --out <output> ``` `<source>` specifies the source NVM filename. This file will be converted to match the target NVM. `<target>` specifies the target NVM filename. This file will used to determine how to convert the source NVM. The resulting NVM will be written to `<output>`. ## Convert binary NVM file to JSON ``` npx @zwave-js/nvmedit nvm2json --in /path/to/nvm.bin --out /path/to/nvm.json [--verbose] ``` The `--verbose` flag will print additional output like memory page contents or parsed NVM objects to the console. The `.bin` file must either contain a 700-series NVM (SDK version 7.x) or a 500-series NVM (SDK version 6.61+). The `.json` output format will depend on the SDK version. ## Convert JSON NVM file to binary ``` npx @zwave-js/nvmedit json2nvm --in /path/to/nvm.json --out /path/to/nvm.bin --version <ver.si.on> ``` `<ver.si.on>` determines the output format of the NVM file and must be replaced with the target SDK version which must match your stick's firmware version Only firmware version `7.x` is supported. Converting a 500-series `.json` to a 700-series `.json` must be done beforehand in a separate step. **ATTENTION:** The input `.json` file must contain a `"meta"` section which contains some information about the target stick. If it is missing, you can use the `nvm2json` command to convert a backup of the target stick and copy the section from there. ## Convert 500-series JSON to 700-series JSON ``` npx @zwave-js/nvmedit 500to700 --in /path/to/nvm500.json --out /path/to/nvm700.json [--truncate] ``` Some 500-series NVM backups contain more application data than the 700-series NVM has reserved for this field. The conversion routine will try to remove 0-bytes at the start and end, but if this is not enough, it will fail. Set the `--truncate` option to allow truncating potentially valid application data. ## Convert 700-series JSON to 500-series JSON ``` npx @zwave-js/nvmedit 700to500 --in /path/to/nvm700.json --out /path/to/nvm500.json ```