Skip to content

kvm-pilot 1.0.1

Latest

Choose a tag to compare

@DustinTrap DustinTrap released this 23 Oct 11:57
4fcb106

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-update dry 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 from GET /api/upgrade/download_info and takes
    image_size from its total_size; /api/upgrade/download is never called.
    docs/firmware-update.md lists both endpoints.
  • healthcheck and paths no 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
    paths said "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 (so api-reachable is CRITICAL with the ME's own error, and
      info fails instead of printing all-null). The contract that every
      out-of-band driver's get_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
      gains out_of_band: live, down (the path exists but management access
      to its plane failed) or none; the CLI prints out-of-band power: DOWN with its own
      warning, distinct from NONE.

Added

  • Vision-dataset augmentation tooling (#291, refs #15):
    tools/dataset/augment.py turns 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.py runs a labeled manifest.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. --limit and --dry-run cap 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.

  • key and type can 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 off can 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.
  • healthcheck misreports 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-start gives 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.