Integrity & checksums¶
The LFTchecksum is a read-only REST resource that returns MD5 digests over four independent software and configuration areas of the device. It lets you verify at any time that nothing has changed since a known-good reference: detect unintended parameter changes, confirm a configuration file applied correctly, or check that a firmware update touched only the areas it should.
Reading it¶
No authentication required:
{
"header": { "status": 0, "message": "Ok" },
"data": { "LFTchecksum": {
"MD5SumOK": true,
"MD5LinuxRoot": "8439a3f5bb209f3d51557d509169ec60",
"MD5App": "304f9a18302e2b635da2c2c220463119",
"MD5Calibration": "bc5e5d5df638dc45c85937c8c67b59d7",
"MD5Parameters": "07f18c8032e24ac65ca0ed7c04be6a62"
} }
}
The four sub-checksums¶
| Field | Covers | Changes when… |
|---|---|---|
MD5LinuxRoot |
Linux root filesystem (OS layer) | A firmware update modifies the OS partition |
MD5App |
Application binary and libraries | A firmware update installs a new application version |
MD5Calibration |
Factory calibration data | Calibration is recalculated/overwritten (factory service only) |
MD5Parameters |
Persistent parameter set (EEPROM) | Parameters are persisted via WriteEeprom, or a config file is imported and persisted |
MD5SumOK |
Overall integrity flag | false if any of the four fails its internal verification |
RAM vs. persistent storage¶
The device keeps two parameter states at once:
| State | Where | Survives reboot? | Reflected in MD5Parameters? |
|---|---|---|---|
| Working copy | RAM | No (a RebootDevice flushes RAM to EEPROM first, so it survives a software reboot) |
No, until WriteEeprom or RebootDevice |
| Persisted copy | EEPROM / flash | Yes | Yes |
Every REST write modifies only the RAM copy. MD5Parameters (the persisted digest) does not change until WriteEeprom is called, or the device is rebooted via RebootDevice (which persists RAM first). A SoftReset or a hard power-cycle discards unsaved RAM changes.
After a REST write, reading an unchanged MD5Parameters means the change is still in RAM only, not that the device is unmodified. Persist with WriteEeprom (or reboot) to make the change durable and visible in the checksum.
When does each sub-checksum change?¶
Verified against a picoScan150 (● = changed, - = unchanged):
| Scenario | LinuxRoot | App | Calibration | Parameters |
|---|---|---|---|---|
| Two consecutive reads, no operation | - | - | - | - |
Change a parameter in RAM only (no WriteEeprom) |
- | - | - | - |
Change in RAM, then SoftReset |
- | - | - | - |
Change in RAM, then RebootDevice (persists first) |
- | - | - | ● |
Change + WriteEeprom |
- | - | - | ● |
CreateParameterBackup → RestoreParameterBackup, same file, no content change |
- | - | - | - |
LoadApplicationDefaults (destructive) |
- | - | - | ● |
| Firmware upgrade | ● | ● | - | - |
| Firmware downgrade | ● | ● | - | - |
MD5Calibration does not change through normal end-user operations. A change there indicates a factory calibration update or an unexpected write to the calibration partition, so treat it as a red flag.
A practical integrity workflow¶
- Record all four hashes from a known-good device (the reference).
- After any change (a config push, a restore, a firmware update), read
LFTchecksumagain. - Compare field by field: a firmware update should move
MD5LinuxRoot+MD5Apponly; a persisted config change should moveMD5Parametersonly;MD5Calibrationshould never move. - Anything else is unexpected: investigate before putting the device back into service.
Compact measurement telegrams carry a per-frame CRC32 (see Data format); CoLa B frames carry a CRC. The LFTchecksum covers the device's stored software and configuration, complementing those on-the-wire checks.