USB-HID-Boot-Protocol vs. Report-Protocol debuggen: Keyboard-BIOS-Mode, SetProtocol, Report-IDs und fehlende Tasten

So debuggen Sie USB-HID-Boot-Protocol- und Report-Protocol-Switching, SetProtocol-Requests, Keyboard-BIOS-Mode, Report-IDs, fehlende Tasten und HID-Firmware-Kompatibilität.

HID-Boot-Protocol, Report-Protocol, SetProtocol, USB-Tastatur, BIOS-Mode, Report-ID, USB-Diagnose

USB-HID-Tastaturen und -Mäuse können Boot-Protocol oder Report-Protocol nutzen. Nutzer suchen nach "HID Boot Protocol", "HID Report Protocol", "USB keyboard BIOS mode", "SetProtocol HID", "keyboard works in BIOS but not OS" und "HID report ID missing keys", wenn Input in einer Umgebung läuft, in einer anderen aber fehlschlägt.

Bus Scope hilft, weil der Host HID-Klassen-Requests senden kann, die ändern, wie das Gerät Reports formatiert. Ignoriert die Firmware SetProtocol oder sendet das falsche Report-Format, können Tasten verschwinden, obwohl das Gerät korrekt enumeriert.

Boot-Protocol

Boot-Protocol ist ein vereinfachtes HID-Format, das von BIOS, UEFI, Pre-Boot-Umgebungen und simplen Host-Stacks genutzt wird. Es lässt Basis-Tastaturen und -Mäuse laufen, bevor ein vollständiger HID-Parser verfügbar ist.

Symptome rund um Boot-Protocol:

  • Tastatur läuft im BIOS, aber nicht im OS.
  • Tastatur läuft im OS, aber nicht im Boot-Menü.
  • Spezialtasten verschwinden im Pre-Boot-Mode.
  • Maus läuft erst, nachdem das Betriebssystem geladen hat.
  • Firmware sendet Report-IDs, wenn Boot-Report keine erwartet.

Die Diagnose-Frage ist, welches Protocol der Host gewählt hat.

Report-Protocol

Report-Protocol nutzt den HID-Report-Deskriptor. Es unterstützt reichere Layouts, Report-IDs, vendor-definierte Reports, Media-Keys, Sensoren und Composite-Verhalten.

Wechselt der Host zu Report-Protocol, aber das Gerät sendet weiter Boot-Reports, parsed das OS die Eingabe möglicherweise falsch. Fordert der Host Boot-Protocol, das Gerät sendet aber Report-Protocol, ignoriert das BIOS möglicherweise Reports.

SetProtocol-Request

Der HID-Klassen-Request SetProtocol kann für unterstützte Geräte zwischen Boot-Protocol und Report-Protocol wechseln.

Zu sammelnde Evidence:

  • HID-Interface-Deskriptor.
  • Boot-Subclass- und Protocol-Werte.
  • Report-Deskriptor.
  • SetProtocol-Request.
  • Vom Host gewähltes Protocol.
  • Interrupt-IN-Report-Bytes vor und nach dem Switch.

Bus Scope kann diese Sequenz sichtbar machen.

Report-IDs und fehlende Tasten

Report-Protocol kann Report-IDs nutzen. Boot-Protocol erwartet oft Reports fester Größe ohne Report-ID-Präfix.

Häufige Firmware-Bugs:

  • Gerät inkludiert Report-ID in Boot-Protocol.
  • Gerät lässt Report-ID in Report-Protocol weg.
  • Gerät ändert Report-Größe, aber Deskriptor passt nicht.
  • Media-Keys sind nur in einem Sekundär-Report.
  • NKRO-Report wird gesendet, bevor der Host ihn aktiviert.
  • Tastatur sendet Vendor-Report auf Tastatur-Endpoint.

Diese Bugs erzeugen Suchphrasen wie "USB keyboard missing keys" und "HID report ID wrong".

BIOS vs. Betriebssystem-Verhalten

BIOS- und UEFI-Umgebungen sind meist strenger und einfacher als vollständige Betriebssysteme. Eine Tastatur kann unter Windows oder Linux einwandfrei wirken, aber vor dem Boot scheitern.

Nützlicher Vergleich:

  • Capturen Sie während Pre-Boot, falls möglich, mit externem Analysator.
  • Capturen Sie, nachdem das OS geladen hat.
  • Vergleichen Sie das SetProtocol-Verhalten.
  • Vergleichen Sie das Report-Payload-Format.
  • Prüfen Sie, ob das Gerät zwischen Umgebungen resettet.

Auch wenn Pre-Boot-Capture schwierig ist, kann OS-seitige SetProtocol-Evidence Firmware-Annahmen offenbaren.

Debug-Checkliste

Nutzen Sie diesen Ablauf:

  1. Enumeration capturen.
  2. HID-Interface-Subclass und Protocol inspizieren.
  3. HID-Report-Deskriptor inspizieren.
  4. SetProtocol-Requests finden.
  5. Gewähltes Protocol dekodieren.
  6. Interrupt-IN-Reports vor und nach vergleichen.
  7. Report-ID-Nutzung prüfen.
  8. Normale und Media-Keys testen.
  9. BIOS, Bootloader, Windows und Linux vergleichen.
  10. Deskriptor- und Report-Bytes zusammen bewahren.

Enddiagnose

HID-Boot-Protocol- und Report-Protocol-Fehler sind Report-Format-Verhandlungs-Probleme. Das Gerät kann korrekt enumerieren, während es Reports im falschen Protocol-Format sendet.

Bus Scope belegt, ob fehlende Tasten, BIOS-Input-Fehler oder HID-Kompatibilitäts-Probleme aus SetProtocol-Handling, Report-IDs, Deskriptor-Mismatch oder Firmware-Report-Formatierung kommen.