# @zwave-js/nvmedit

> zwave-js: library to edit NVM backups

Latest version **15.28.0** (published 2026-08-28) · MIT license · 0 weekly downloads

## Install

```sh
npm install @zwave-js/nvmedit
pnpm add @zwave-js/nvmedit
yarn add @zwave-js/nvmedit
bun add @zwave-js/nvmedit
```

Provides the commands `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, `12`, `13`, `14`.

## Health

**Score 60/100 (C)** — status: active.

Positive: esm support; no vulnerabilities; recently updated; high maintenance score.

Warnings: low downloads; no types.

## Facts

| | |
|---|---|
| Version | 15.28.0 |
| Published | 2026-08-28 |
| First published | 2021-12-19 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | ESM |
| Node | >= 20 |
| Dependencies | 7 |
| Unpacked size | 1.4 MB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 887 |
| Author | AlCalzone |
| Maintainers | alcalzone |

## Links

- npm: https://www.npmjs.com/package/@zwave-js/nvmedit
- Repository: https://github.com/zwave-js/zwave-js
- Homepage: https://github.com/zwave-js/zwave-js#readme
- Issues: https://github.com/zwave-js/zwave-js/issues
- Funding: https://github.com/sponsors/AlCalzone/
- npm.io page: https://npm.io/package/@zwave-js/nvmedit

## Dependencies (7)

- [tslib](https://npm.io/package/tslib.md) ^2.8.1
- [yargs](https://npm.io/package/yargs.md) ^18.0.0
- [semver](https://npm.io/package/semver.md) ^7.8.5
- [@zwave-js/core](https://npm.io/package/@zwave-js/core.md) 15.28.0
- [@zwave-js/shared](https://npm.io/package/@zwave-js/shared.md) 15.28.0
- [alcalzone-shared](https://npm.io/package/alcalzone-shared.md) ^5.0.0
- [reflect-metadata](https://npm.io/package/reflect-metadata.md) ^0.2.2

## Recent versions

- 15.28.0 (latest) — 2026-08-28
- 15.12.1-0-pr-8133-cc4ed84 (next) — 2025-09-02
- 15.27.1 — 2026-08-14
- 15.27.0 — 2026-08-07
- 15.26.0 — 2026-07-17
- 15.25.3 — 2026-07-09
- 15.25.2 — 2026-07-03
- 15.25.0 — 2026-06-18
- 15.24.3 — 2026-06-15
- 15.24.2 — 2026-06-01
- 15.24.0 — 2026-05-12
- 15.23.1 — 2026-04-14
- 15.23.0 — 2026-04-10
- 15.22.1 — 2026-03-23
- 15.22.0 — 2026-03-18
- … 252 more at https://npm.io/package/@zwave-js/nvmedit/versions

## README

# 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 --protocolVersion <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
```

---
_Source: https://npm.io/package/@zwave-js/nvmedit · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
