Skip to content

Versioning & Upgrades

Luxnode software needs separate version lines because firmware, frame schemas, algorithms, and cloud jobs evolve at different speeds.

Version Lines

Component Version Field Compatibility Rule
Firmware firmware_version SemVer; patch fixes should not change frame schema
Frame protocol schema_version SemVer; major changes may break SDK parsing
Python SDK luxspec.__version__ SemVer; public API stability starts at 1.0.0
Algorithms package version + algorithm metadata Store with every processed result
Module model module name + model/library version Store per result and per dashboard

Upgrade Manifest

Firmware OTA or USB updaters should consume a manifest like:

{
  "firmware": "0.2.0",
  "protocol": "0.1.0",
  "hardware": "luxnode-v0",
  "artifact_url": "https://downloads.luxnode.org/luxnode-v0-0.2.0.bin",
  "artifact_sha256": "64-hex-chars",
  "release_notes_url": "https://docs.luxnode.org/releases/0.2.0/",
  "min_battery_mv": 3700
}

The SDK exposes VersionInfo and UpgradeManifest so apps can reject incompatible firmware before attempting an update.

Update Safety Checklist

  • Verify the device hardware family before flashing.
  • Require external power or a safe battery threshold.
  • Verify SHA-256 before installing.
  • Keep a bootloader recovery path.
  • Write firmware version, protocol version, and calibration hash after update.
  • Re-run dark/reference captures after any firmware or optics update.