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.
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:
- Acquisisci l'enumerazione.
- Ispeziona sottoclasse e protocollo dell'interfaccia HID.
- Ispeziona il descrittore di report HID.
- Trova le richieste SetProtocol.
- Decodifica il protocollo selezionato.
- Confronta i report interrupt IN prima e dopo.
- Controlla l'uso dei report ID.
- Testa tasti normali e tasti multimediali.
- Confronta comportamento in BIOS, bootloader, Windows e Linux.
- 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.