@nordicid/nurapi-update
v0.9.10
Published
NUR RFID Reader API — Firmware update package for Nordic ID devices
Maintainers
Readme
@nordicid/nurapi-update
Firmware update orchestration for Nordic ID NUR readers and EXA accessories — built on @nordicid/nurapi.
Install
npm install @nordicid/nurapi @nordicid/nurapi-updateYou also need a transport package: @nordicid/nurapi-web (browser) or @nordicid/nurapi-node (Node.js).
Quick Start
import { NurApi } from '@nordicid/nurapi';
import '@nordicid/nurapi-node';
import { parseUpdateZip, runUpdate } from '@nordicid/nurapi-update';
const reader = new NurApi();
await reader.connect('ser:///dev/ttyUSB0');
const pkg = parseUpdateZip(zipBytes); // Uint8Array of NIDLatestFW.zip
const result = await runUpdate(reader, pkg, {
onProgress: (p) => console.log(`${p.itemIndex + 1}/${p.itemCount} ${p.itemName} — ${p.percent}%`),
});
console.log(result.success ? 'OK' : `failed: ${result.errors.length} item(s)`);What It Does
- Parses Nordic ID firmware-update ZIP packages (
UpdateInfo.json+ binaries) - Checks firmware/module compatibility and version matching
- Programs NUR module firmware (APP / LOADER) via bootloader page-write protocol
- Programs EXA accessory firmware via MCUboot/SMP over
ACC_EXT - Handles mode switching (application ↔ bootloader) and reconnection
- Cascading multi-pass updates with progress callbacks and
AbortSignalcancellation
API
| Export | Purpose |
|---|---|
| parseUpdateZip(bytes) | Parse a firmware-update ZIP into an UpdatePackage |
| runUpdate(api, pkg, opts?) | Run a full cascading update with progress + abort |
| gatherDeviceInfo(api) | Read device versions, module type, accessory info |
| checkItemCompatibility(item, info) | Check if an item is ready / up-to-date / blocked |
| ensureMode(api, target) | Switch NUR module between mode A and mode B |
| programNurItem(api, item, opts?) | Program a single NUR module firmware item |
| programExaItem(api, item, opts?) | Program an EXA accessory firmware item |
| McuMgrClient | Low-level MCUboot SMP client over ACC_EXT |
| parseMcubootZip(bytes) | Parse an inner EXA MCUboot ZIP package |
Dependencies
| Package | Purpose | Size |
|---|---|---|
| fflate | ZIP decompression | ~8 KB |
| cborg | CBOR encode/decode for SMP protocol | ~8 KB |
Both are zero-dependency and work in browser + Node.js.
Documentation
See the full API reference and guides at nordicid.github.io/nur_nurapi_typescript.
License
See LICENSE.
