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.