Debug USB HID Boot Protocol e Report Protocol: SetProtocol e tasti mancanti

Come diagnosticare cambio tra USB HID Boot Protocol e Report Protocol, richieste SetProtocol, modalità BIOS della tastiera, report ID, tasti mancanti e compatibilità firmware HID.

USB, HID, Boot Protocol, Report Protocol, SetProtocol, tastiera USB, report ID

Tastiere e mouse USB HID possono usare Boot Protocol o Report Protocol. Gli utenti cercano "HID Boot Protocol", "HID Report Protocol", "USB keyboard BIOS mode", "SetProtocol HID", "keyboard works in BIOS but not OS" e "HID report ID missing keys" quando l'input funziona in un ambiente ma fallisce in un altro.

Bus Scope è utile perché l'host può inviare richieste di classe HID che cambiano il formato dei report del dispositivo. Se il firmware ignora SetProtocol o invia il formato report sbagliato, alcuni tasti possono sparire anche se il dispositivo enumera correttamente.

Boot Protocol

Boot Protocol è un formato HID semplificato usato da BIOS, UEFI, ambienti pre-boot e stack host semplici. Permette a tastiere e mouse di base di funzionare prima che sia disponibile un parser HID completo.

Sintomi che coinvolgono Boot Protocol:

  • La tastiera funziona nel BIOS ma fallisce nel sistema operativo.
  • La tastiera funziona nel sistema operativo ma non nel menu di boot.
  • I tasti speciali spariscono in modalità pre-boot.
  • Il mouse funziona solo dopo il caricamento del sistema operativo.
  • Il firmware invia report ID quando il boot report non ne prevede.

La domanda diagnostica è quale protocollo ha selezionato l'host.

Report Protocol

Report Protocol usa il descrittore di report HID. Supporta layout più ricchi, report ID, report vendor-defined, tasti multimediali, sensori e comportamento composito.

Se l'host passa a Report Protocol ma il dispositivo continua a inviare report Boot, il sistema operativo può interpretare male l'input. Se l'host richiede Boot Protocol ma il dispositivo invia Report Protocol, il BIOS può ignorare i report.

Richiesta SetProtocol

La richiesta di classe HID SetProtocol può passare tra Boot Protocol e Report Protocol per i dispositivi che li supportano.

Evidenze da raccogliere:

  • Descrittore interfaccia HID.
  • Valori di sottoclasse e protocollo Boot.
  • Descrittore di report.
  • Richiesta SetProtocol.
  • Valore di protocollo selezionato dall'host.
  • Byte dei report interrupt IN prima e dopo il cambio.

Bus Scope può rendere visibile questa sequenza.

Report ID e tasti mancanti

Report Protocol può usare report ID. Boot Protocol spesso si aspetta report di dimensione fissa senza prefisso report ID.

Bug firmware comuni:

  • Il dispositivo include il report ID in Boot Protocol.
  • Il dispositivo omette il report ID in Report Protocol.
  • Il dispositivo cambia dimensione del report ma il descrittore non corrisponde.
  • I tasti multimediali sono solo in un report secondario.
  • Il report NKRO viene inviato prima che l'host lo abiliti.
  • La tastiera invia un report vendor sull'endpoint tastiera.

Questi bug generano ricerche come "USB keyboard missing keys" e "HID report ID wrong."

BIOS vs comportamento del sistema operativo

Gli ambienti BIOS e UEFI sono di solito più rigidi e semplici rispetto ai sistemi operativi completi. Una tastiera può sembrare corretta su Windows o Linux ma fallire prima del boot.

Confronto utile:

  • Acquisisci durante il pre-boot, se possibile con un analizzatore esterno.
  • Acquisisci dopo il caricamento del sistema operativo.
  • Confronta il comportamento SetProtocol.
  • Confronta il formato del payload dei report.
  • Controlla se il dispositivo si resetta tra gli ambienti.

Anche se l'acquisizione pre-boot è difficile, le evidenze SetProtocol lato sistema operativo possono rivelare assunzioni del firmware.

Checklist di debug

Usa questo processo:

  1. Acquisisci l'enumerazione.
  2. Ispeziona sottoclasse e protocollo dell'interfaccia HID.
  3. Ispeziona il descrittore di report HID.
  4. Trova le richieste SetProtocol.
  5. Decodifica il protocollo selezionato.
  6. Confronta i report interrupt IN prima e dopo.
  7. Controlla l'uso dei report ID.
  8. Testa tasti normali e tasti multimediali.
  9. Confronta comportamento in BIOS, bootloader, Windows e Linux.
  10. Conserva insieme descrittori e byte dei report.

Diagnosi finale

I fallimenti HID Boot Protocol e Report Protocol sono problemi di negoziazione del formato report. Il dispositivo può enumerare correttamente e allo stesso tempo inviare report nel formato di protocollo sbagliato.

Bus Scope aiuta a provare se tasti mancanti, fallimenti di input nel BIOS o problemi di compatibilità HID derivano da gestione di SetProtocol, report ID, mismatch dei descrittori o formattazione dei report firmware.