Repository navigation
kvm-pilot 1.0.1
A patch release with two fixes, both found on real hardware. A GL firmware-update dry run no longer starts a firmware download, and healthcheck no longer calls an unreachable AMT host healthy. It also carries repo-only vision-dataset tooling that is not in the wheel. Upgrade with pip install -U kvm-pilot.
Fixed
- GL
firmware-updatedry run no longer starts a firmware download (#300).
get_upgrade_status(), the read-only probe behind the dry run, sent
GET /api/upgrade/download, which is the request GL's web client uses to
start the image download (~256 MB onto the device). It now reads the
download progress fromGET /api/upgrade/download_infoand takes
image_sizefrom itstotal_size;/api/upgrade/downloadis never called.
docs/firmware-update.mdlists both endpoints. healthcheckandpathsno longer report an unreachable AMT host as
healthy (#293). Against an ME that did not answer — or refused the
credentials — every readiness check passed ("Device API reachable —
Authenticated and responding", "Provisioned", "listeners are on") and
pathssaid "out-of-band power: YES". Now:- AMT
get_info()stays best-effort per field, but its first read is the
reachability probe: a dark plane, a refused login or the #217 not-ready
wedge raises (soapi-reachableis CRITICAL with the ME's own error, and
infofails instead of printing all-null). The contract that every
out-of-band driver'sget_info()raises on a dead plane is now a
cross-driver test. amt_health()records the plane error and stops its own reads after it,
and the provisioning and redirection checks report could not verify
(quoting that error; CRITICAL when the plane failed, WARNING when a field
was merely absent) instead of passing on fields they never read.paths: out-of-band power is only live while the management plane it
rides answers, for every BMC-style driver (AMT, Redfish, IPMI). The summary
gainsout_of_band:live,down(the path exists but management access
to its plane failed) ornone; the CLI printsout-of-band power: DOWNwith its own
warning, distinct fromNONE.
- AMT
Added
- Vision-dataset augmentation tooling (#291, refs #15):
tools/dataset/augment.pyturns a clean, labeled screenshot into
deterministic KVM/MJPEG-style variants (resize softness, JPEG loss,
gamma/brightness shifts, letterboxing, scanlines, partial-frame tearing) and
writes a JSONL manifest — phase label, source, license, SHA-256 digests and
every sampled parameter — described by
tools/dataset/vision-dataset.schema.json. Repo-only tooling: it is not in
the wheel and changes no runtime behaviour. - Vision-dataset evaluator (#292, refs #15, #291):
tools/dataset/evaluate.pyruns a labeledmanifest.jsonl(the output of
augment.py) through the configured vision backend and reports overall and
per-phase accuracy, an expected-by-predicted confusion matrix, and accuracy
by recorded JPEG-quality band.--limitand--dry-runcap hosted-API cost,
and an optional results JSONL captures per-row predictions (paths and labels,
no image bytes). kvm-pilot's first measured classifier accuracy. Repo-only
tooling: not in the wheel and changes no runtime behaviour.
Known issues (AMT): fixes in review, not in this release
Found by @torkeldanielsson on a CSME 21 Dell and an AMT 14 Lenovo. Their fixes are in review.
keyandtypecan exit 0 while the host gets nothing (#302, fix in #304). The ME attaches its USB keyboard only while a KVM session is open, and 1.0.1 sends the event and closes the session before the host takes it. Don't rely on AMT keyboard input to drive firmware menus yet.power offcan raise a timeout on a Windows host that is shutting down cleanly (#303, fix in #305). The driver waits 90 s for the graceful off, and a Windows 11 shutdown through Intel LMS took up to about 83 s on the reporter's box. The shutdown still completes, so check the power state before retrying.healthcheckmisreports AMT listeners in two cases (#303, fix in #305). On a TLS-only ME it names port 16994 when the ME serves 16995. On an AMT 14 box with KVM on 5900 and SOL off, it says snapshot won't work, but it does.amt consent-startgives a misleading hint in Admin Control Mode with consent off (#303, fix in #305). KVM opens there without a code.
Credits
Thanks to @TomatoYoung for the dataset augmentation tooling (#291) — a first
building block for the boot-phase vision dataset (#15).
Thanks to @Vamsi-2581 for the dataset evaluator (#292) — it closes the
augment → evaluate loop and gives the classifier its first measured accuracy.
Thanks to @torkeldanielsson for finding and fixing the GL dry-run download
(#300, PR #301), measured on a GL-RM1PE at V1.10.1 release2.