Hacker News new | ask | show | jobs
by gregsadetsky 6 days ago
TLDR - GLKVM's kernel emits a trailing 0-byte DATA packet (ZLP) (which PiKVM does not)

Supposedly, this is due to the `req->zero = ((count % maxpacket) == 0)` line in the kernel's f_hid.c - which, for 8-byte HID keyboard reports, makes it append a trailer packet. Strict BIOS HID stacks treat this 0-byte packet as malformed and beep.

2 comments

Interesting. My first thought is wondering whether the keyboard HID is adding report IDs to its input reports, because it isn't in boot mode or something. That would have that effect.
Isn't that expected in USB so the receiving side knows it's at the end of the data transfer?