Comet quirks
Claim. The GL.iNet Comet runs a fork of PiKVM's KVMD and differs from upstream in ways a client has to handle.
Method. Each item is marked "verified live" (seen on our unit, firmware RM1 V1.10.1 release3, kvmd 4.82), "verified in source" (GL.iNet's published GPL-3.0 userspace source) or "reported" (a source says so; not confirmed).
Sample size. One unit.
Result.
| Behaviour | Status |
|---|---|
| Video streamer sleeps a few seconds after the last client leaves; snapshot returns 503 until a WebSocket wakes it (first frame about 1.2 s cold, 0.08 s warm) | verified live |
A snapshot can be HTTP 200 image/jpeg yet hold an H.264 fragment, so check the JPEG magic bytes | reported by a rival project; checked in our client |
| On-device OCR present but disabled | verified live |
| ATX power plugin not fitted | verified live |
| Login returns a token in the body and a cookie; logins are rate limited (HTTP 429) | verified in source |
Print endpoint cuts at 1024 characters unless limit=0 | verified in source |
| Absolute mouse range is signed 16-bit | verified in source |
| Mass storage stays unlinked until enabled in the web UI | reported; on our unit it was enabled and presents a flash drive and a DVD drive to the target |
Virtual media API (/api/msd) works as in PiKVM: upload, set params, connect, remove; storage is the unit's own eMMC (6.1 GB free here) | verified live, 2026-10-01 |
drive.image is an object ({"name", "size", "complete", ...}), not a bare name; a client that compares it to a string thinks the attach failed | verified live, 2026-10-01 |
The kept-alive HTTPS connection can be closed by the KVM; http.client then leaves sock = None and the next call crashed until the client reopened it | verified live, fixed and tested |
| The video signal drops completely during POST and mode changes; a snapshot returns 503 for seconds at a time | verified live, 2026-10-01 |
msd/partition_format formats whatever path it is given, including the unit's own storage, and saves it as the image store by UUID at once; the live view follows only after the unit is rebooted | verified live, 2026-10-03; the client now refuses anything but a USB partition and never resends it |
A state-changing request sent as GET (partition_format, upgrade/reboot) looks safe to resend by method alone; a resend after a timeout can repeat work the first copy did | verified live, 2026-10-03; the client takes an explicit retry=False |
| With the target dark (held in reset), the unit reports no video signal and the target no longer sees the unit's keyboard, which tells "dark" from "up with no picture" | verified live, 2026-10-04 |
Our client also pins the self-signed certificate before sending any credential and never retries a login in a loop.
Limits.
- One unit, one firmware version.
- The firmware kernel and image build are not published; only userspace is.
- Security advisories against versions before 1.8.2 are reported; our unit runs 1.10.1.
Raw data. docs/kvm/FIRMWARE-AND-FRAMEWORK.md, docs/kvm/API-REFERENCE.md, docs/evidence-sources/20260929-kvm-competition.md in this repository; source at github.com/gl-inet/glkvm.