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.

<!-- bus-scope-localized-transaction-foundation-v1:start -->

USB-Vertragsprüfung für „USB-HID-Boot-Protocol vs. Report-Protocol debuggen: Keyboard-BIOS-Mode, SetProtocol, Report-IDs und fehlende Tasten“

Die direkte Antwort lautet: STALL, Timeout oder Reset erklärt die Ursache nicht allein. Beweisen Sie zuerst, dass der Capture-Provider das richtige Gerät sieht, und lesen Sie danach den Transfervertrag: Request-Typ, Richtung, Recipient, wValue, wIndex, angekündigte und tatsächliche Länge, Status sowie Zustand davor und danach. Verknüpfen Sie bei „USB-HID-Boot-Protocol vs. Report-Protocol debuggen: Keyboard-BIOS-Mode, SetProtocol, Report-IDs und fehlende Tasten“ jede Aussage mit der ersten Transaktion, die von einem bekannten guten Lauf abweicht.

Grenze Zu vergleichen Belastbares Urteil
Plattform Provider, Rechte, Root Hub beziehungsweise usbmon/XHC20 Kommen Records von der richtigen Verbindung?
Setup bmRequestType, bRequest, wValue, wIndex, wLength Sendet der Host die beabsichtigte Anfrage?
Data Richtung, Länge und gespeicherte Bytes Entspricht die Payload dem Vertrag?
Status ACK, STALL, Timeout oder Cancellation Wo endet die Transaktion tatsächlich?
Zustand Configuration, Interface, Alternate Setting, Endpoint Halt War das Gerät für die Anfrage bereit?

Starten Sie vor Reset und Enumeration und behalten Sie Descriptoren, SET_CONFIGURATION, SET_INTERFACE und den Befehl vor dem Fehler. Ein enger Endpoint-Filter kann genau den Control Transfer verstecken, der das spätere Symptom erklärt. Führen Sie pro Versuch eine dokumentierte USB-Aktion aus und ändern Sie nur Firmware, Treiber, Port, Kabel, Hostbefehl oder Timing.

Wie sieht eine zitierfähige Antwort aus?

Nennen Sie angekommenen Request, konkrete Setup-Felder, Geräteantwort und vorherigen Zustand; danach folgt ein Test mit genau einer Änderung. Nicht gespeicherte Bytes durch Retention sind kein bewiesener Packet Loss. Zeitliche Nähe zwischen Command und Reset belegt Korrelation, nicht ohne Wiederholung oder Zustandsübergang die Ursache.

Wann ist ein Vergleich gültig?

Halten Sie VID/PID, Firmware, Speed, Topologie, Provider, Filter und Trigger möglichst gleich. Vergleichen Sie semantische USB-Phasen statt Frame-Nummern zwischen usbmon und USBPcap. Notieren Sie Start, Ende, Version, OS, Anschluss und Dateiprüfsumme. Nutzen Sie vor der Übergabe die Bus-Scope-Fehlersuche.

Semrush-Eigentümer bleiben getrennt: free USB analyzer gehört zur Produktseite, best USB protocol analyzer zur Vergleichsseite und USB descriptor viewer zum Descriptor-Guide. Diese Supportseite erhält keine erfundene Suchmenge oder KD.

<!-- bus-scope-localized-transaction-foundation-v1:end --><!-- multilingual-blog-closeout:start -->

Direkte Antwort und Abnahmegrenze

Die kurze Antwort zu „USB-HID-Boot-Protocol vs. Report-Protocol debuggen: Keyboard-BIOS-Mode, SetProtocol, Report-IDs und fehlende Tasten“ lautet: 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. Behandeln Sie diese Aussage als zu prüfendes Ergebnis und nicht als Versprechen für jede Eingabe, jedes Gerät, jedes Projekt oder jede Umgebung. Ein vollständiges Ergebnis dokumentiert Ausgangszustand, exakte Aktion, sichtbare Ausgabe und die Bedingung, die den Abschluss in Bus Scope belegt.

Evidenzorientiertes Vorgehen

Beginnen Sie mit einem kleinen, wiederholbaren Fall, bevor Sie ein vollständiges Projekt verändern. Protokollieren Sie Anwendungsversion, Betriebssystem, Eingabe- oder Geräteidentität, relevante Einstellungen und erwartetes Ergebnis. Führen Sie eine bewusste Aktion aus, bewahren Sie den ersten unerwarteten Übergang und vergleichen Sie möglichst mit einem bekannten guten Lauf. Mehrere gleichzeitige Änderungen verdecken, welche Bedingung den Fehler erzeugt oder behoben hat.

Prüfpunkt 1: USB-HID-Boot-Protocol vs. Report-Protocol debuggen: Keyboard-BIOS-Mode, SetProtocol, Repor

Formulieren Sie für „USB-HID-Boot-Protocol vs. Report-Protocol debuggen: Keyboard-BIOS-Mode, SetProtocol, Report-IDs und fehlende Tasten“ eine reproduzierbare Pass/Fail-Aussage. Nennen Sie, was vorhanden sein muss, was fehlen muss und welche sichere Recovery bei einem Fehler möglich ist. Bewahren Sie Originalprojekt oder Capture unverändert, bis die reparierte Kopie dieselbe Prüfung bestanden hat.

Prüfpunkt 2: So debuggen Sie USB-HID-Boot-Protocol- und Report-Protocol-Switching, SetProtocol-Requests

Behandeln Sie „So debuggen Sie USB-HID-Boot-Protocol- und Report-Protocol-Switching, SetProtocol-Requests, Keyboard-BIOS-Mode, Report-IDs, fehlende Tasten und HID-Fi“ als eigene Abnahmegrenze für „USB-HID-Boot-Protocol vs. Report-Protocol debuggen: Keyboard-BIOS-Mode, SetProtocol, Report-IDs und fehlende Tasten“. Halten Sie den Zustand vor der Aktion, die erste sichtbare Änderung und den Endzustand fest. Weicht das Ergebnis vom beschriebenen Ziel ab, kehren Sie zum letzten bestätigten Prüfpunkt zurück, statt mit Annahmen fortzufahren.

Prüfpunkt 3: Boot-Protocol

Formulieren Sie für „Boot-Protocol“ eine reproduzierbare Pass/Fail-Aussage. Nennen Sie, was vorhanden sein muss, was fehlen muss und welche sichere Recovery bei einem Fehler möglich ist. Bewahren Sie Originalprojekt oder Capture unverändert, bis die reparierte Kopie dieselbe Prüfung bestanden hat.

Prüfpunkt 4: Report-Protocol

Behandeln Sie „Report-Protocol“ als eigene Abnahmegrenze für „USB-HID-Boot-Protocol vs. Report-Protocol debuggen: Keyboard-BIOS-Mode, SetProtocol, Report-IDs und fehlende Tasten“. Halten Sie den Zustand vor der Aktion, die erste sichtbare Änderung und den Endzustand fest. Weicht das Ergebnis vom beschriebenen Ziel ab, kehren Sie zum letzten bestätigten Prüfpunkt zurück, statt mit Annahmen fortzufahren.

Prüfpunkt 5: SetProtocol-Request

Formulieren Sie für „SetProtocol-Request“ eine reproduzierbare Pass/Fail-Aussage. Nennen Sie, was vorhanden sein muss, was fehlen muss und welche sichere Recovery bei einem Fehler möglich ist. Bewahren Sie Originalprojekt oder Capture unverändert, bis die reparierte Kopie dieselbe Prüfung bestanden hat.

Prüfpunkt 6: Report-IDs und fehlende Tasten

Behandeln Sie „Report-IDs und fehlende Tasten“ als eigene Abnahmegrenze für „USB-HID-Boot-Protocol vs. Report-Protocol debuggen: Keyboard-BIOS-Mode, SetProtocol, Report-IDs und fehlende Tasten“. Halten Sie den Zustand vor der Aktion, die erste sichtbare Änderung und den Endzustand fest. Weicht das Ergebnis vom beschriebenen Ziel ab, kehren Sie zum letzten bestätigten Prüfpunkt zurück, statt mit Annahmen fortzufahren.

Prüfpunkt 7: BIOS vs. Betriebssystem-Verhalten

Formulieren Sie für „BIOS vs. Betriebssystem-Verhalten“ eine reproduzierbare Pass/Fail-Aussage. Nennen Sie, was vorhanden sein muss, was fehlen muss und welche sichere Recovery bei einem Fehler möglich ist. Bewahren Sie Originalprojekt oder Capture unverändert, bis die reparierte Kopie dieselbe Prüfung bestanden hat.

Prüfpunkt 8: Debug-Checkliste

Behandeln Sie „Debug-Checkliste“ als eigene Abnahmegrenze für „USB-HID-Boot-Protocol vs. Report-Protocol debuggen: Keyboard-BIOS-Mode, SetProtocol, Report-IDs und fehlende Tasten“. Halten Sie den Zustand vor der Aktion, die erste sichtbare Änderung und den Endzustand fest. Weicht das Ergebnis vom beschriebenen Ziel ab, kehren Sie zum letzten bestätigten Prüfpunkt zurück, statt mit Annahmen fortzufahren.

Prüfpunkt 9: Enddiagnose

Formulieren Sie für „Enddiagnose“ eine reproduzierbare Pass/Fail-Aussage. Nennen Sie, was vorhanden sein muss, was fehlen muss und welche sichere Recovery bei einem Fehler möglich ist. Bewahren Sie Originalprojekt oder Capture unverändert, bis die reparierte Kopie dieselbe Prüfung bestanden hat.

Prüfpunkt 10: USB-Vertragsprüfung für „USB-HID-Boot-Protocol vs. Report-Protocol debuggen: Keyboard-BIOS

Behandeln Sie „USB-Vertragsprüfung für „USB-HID-Boot-Protocol vs. Report-Protocol debuggen: Keyboard-BIOS-Mode, SetProtocol, Report-IDs und fehlende Tasten““ als eigene Abnahmegrenze für „USB-HID-Boot-Protocol vs. Report-Protocol debuggen: Keyboard-BIOS-Mode, SetProtocol, Report-IDs und fehlende Tasten“. Halten Sie den Zustand vor der Aktion, die erste sichtbare Änderung und den Endzustand fest. Weicht das Ergebnis vom beschriebenen Ziel ab, kehren Sie zum letzten bestätigten Prüfpunkt zurück, statt mit Annahmen fortzufahren.

Abnahmematrix

Prüfpunkt Aufzubewahrender Nachweis Passkriterium
USB-HID-Boot-Protocol vs. Report-Protocol debuggen: Keyboard-BIOS-Mode, SetProtocol, Report-IDs und fehlende Tasten Ausgangszustand, eine Aktion und Ergebniszustand Eine zweite Person kann das Ergebnis reproduzieren
So debuggen Sie USB-HID-Boot-Protocol- und Report-Protocol-Switching, SetProtocol-Requests, Keyboard-BIOS-Mode, Report-I Ausgangszustand, eine Aktion und Ergebniszustand Eine zweite Person kann das Ergebnis reproduzieren
Boot-Protocol Ausgangszustand, eine Aktion und Ergebniszustand Eine zweite Person kann das Ergebnis reproduzieren
Report-Protocol Ausgangszustand, eine Aktion und Ergebniszustand Eine zweite Person kann das Ergebnis reproduzieren
SetProtocol-Request Ausgangszustand, eine Aktion und Ergebniszustand Eine zweite Person kann das Ergebnis reproduzieren
Report-IDs und fehlende Tasten Ausgangszustand, eine Aktion und Ergebniszustand Eine zweite Person kann das Ergebnis reproduzieren

Fehlerisolierung, Recovery und Übergabe

Stoppen Sie beim ersten fehlerhaften Übergang. Bewahren Sie Quelle, Projekt, Session oder Capture und erstellen Sie vor destruktiven Änderungen eine Kopie. Ändern Sie pro Experiment nur eine Variable. Ein kompletter erneuter Lauf nach mehreren Änderungen kann anders enden, ohne die Ursache zu erklären.

Unterscheiden Sie fehlende Evidenz von Evidenz für ein Fehlen. Eine leere Ansicht kann auf falsche Eingabe, Scope, Filter, Berechtigung, Gerät, Zeitbereich oder Projektzustand hinweisen. Beweisen Sie Aufnahme oder Import, bevor Sie Decoder, Editor, Bericht oder Export interpretieren.

Öffnen Sie vor der Übergabe das dauerhafte Artefakt erneut und prüfen Sie Anfang, Entscheidungsstelle und Ende. Dokumentieren Sie Version, Plattform, Konfiguration, Erwartung, Beobachtung und kleinste Reproduktion. Entfernen oder schwärzen Sie sensible Daten und prüfen Sie die Berechtigung des Empfängers.

Fragen und Antworten

Wie beginnt man am schnellsten zuverlässig?

Verwenden Sie den kleinsten repräsentativen Fall, notieren Sie das erwartete Ergebnis und ändern Sie nur eine Variable. Beweisen Sie den Grundpfad, bevor Filter, Effekte, Bearbeitungen, Automatisierung oder größere Quellen hinzukommen.

Welche Evidenz sollte gespeichert werden?

Bewahren Sie Eingabeidentität, Version, Plattform, Einstellungen, exakte Aktion, ersten unerwarteten Übergang und Endausgabe. Projekt, Session, Bericht oder Export müssen geschlossen und erneut geöffnet werden.

Wann sollte das Verfahren wiederholt werden?

Wiederholen Sie es nach relevanten Änderungen an Anwendung, Betriebssystem, Treiber, Firmware, Modell, Quelle oder Workflow. Behalten Sie den früher akzeptierten Fall als unveränderte Vergleichsbasis.

Wann ist die Aufgabe übergabefähig?

Wenn eine autorisierte zweite Person Eingabe und Aktion erkennt, dasselbe Ergebnis reproduziert, verbleibende Grenzen versteht und das gespeicherte Artefakt ohne undokumentierten lokalen Zustand öffnen kann.

Verwandte Anleitungen

Diese gleichsprachigen Seiten decken angrenzende Schritte ab, ohne den kanonischen Eigentümer dieses Themas zu verändern:

<!-- multilingual-blog-closeout:end -->