Depuração de HID Boot Protocol versus Report Protocol: modo BIOS, SetProtocol e teclas faltando
Como depurar a alternância entre Boot Protocol e Report Protocol em USB HID, requisições SetProtocol, modo BIOS de teclado, report IDs, teclas faltando e compatibilidade de firmware HID.
Teclados e mouses USB HID podem usar Boot Protocol ou Report Protocol. Quem busca por "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" geralmente vê a entrada funcionar em um ambiente e falhar em outro.
O Bus Scope ajuda porque o host pode enviar requisições de classe HID que mudam a forma como o dispositivo formata os relatórios. Se o firmware ignora SetProtocol ou envia o formato errado, teclas podem sumir mesmo com o dispositivo enumerando corretamente.
Boot Protocol
O Boot Protocol é um formato HID simplificado, usado por BIOS, UEFI, ambientes de pre-boot e stacks simples de host. Ele permite que teclados e mouses básicos funcionem antes que um parser HID completo esteja disponível.
Sintomas que envolvem Boot Protocol:
- Teclado funciona no BIOS, mas falha no sistema operacional.
- Teclado funciona no sistema operacional, mas não no menu de boot.
- Teclas especiais somem no modo pre-boot.
- Mouse só funciona depois que o sistema operacional carrega.
- Firmware envia report IDs quando o boot report espera nenhum.
A pergunta de diagnóstico é qual protocolo o host selecionou.
Report Protocol
O Report Protocol usa o descritor de relatório HID. Ele suporta layouts mais ricos, report IDs, relatórios vendor, teclas de mídia, sensores e comportamento composto.
Se o host alterna para Report Protocol, mas o dispositivo continua mandando Boot reports, o sistema operacional pode interpretar a entrada errado. Se o host pede Boot Protocol, mas o dispositivo manda Report Protocol, o BIOS pode ignorar os relatórios.
A requisição SetProtocol
A requisição de classe HID SetProtocol pode alternar entre Boot Protocol e Report Protocol em dispositivos suportados.
Evidência a coletar:
- Descritor de interface HID.
- Valores de subclass e protocol de boot.
- Descritor de relatório.
- Requisição
SetProtocol. - Valor de protocolo escolhido pelo host.
- Bytes do relatório interrupt IN antes e depois da troca.
O Bus Scope pode tornar essa sequência visível.
Report IDs e teclas faltando
O Report Protocol pode usar report IDs. O Boot Protocol geralmente espera relatórios de tamanho fixo sem prefixo de report ID.
Bugs comuns de firmware:
- Dispositivo inclui report ID no Boot Protocol.
- Dispositivo omite report ID no Report Protocol.
- Dispositivo muda o tamanho do relatório, mas o descritor não acompanha.
- Teclas de mídia só aparecem em um relatório secundário.
- Relatório NKRO é enviado antes do host habilitar.
- Teclado envia relatório vendor no endpoint de teclado.
Esses bugs criam buscas do tipo "USB keyboard missing keys" e "HID report ID wrong".
Comportamento de BIOS versus sistema operacional
Ambientes de BIOS e UEFI costumam ser mais estritos e mais simples do que sistemas operacionais completos. Um teclado pode funcionar bem em Windows ou Linux, mas falhar antes do boot.
Comparações úteis:
- Captura durante pre-boot, se possível com um analisador externo.
- Captura depois que o sistema operacional carrega.
- Compare o comportamento de SetProtocol.
- Compare o formato do payload do relatório.
- Confira se o dispositivo reseta entre ambientes.
Mesmo quando capturar em pre-boot é difícil, a evidência de SetProtocol no lado do sistema operacional pode revelar suposições erradas no firmware.
Checklist de depuração
Use este processo:
- Capture a enumeração.
- Inspecione subclass e protocol da interface HID.
- Inspecione o descritor de relatório HID.
- Encontre requisições SetProtocol.
- Decodifique o protocolo selecionado.
- Compare relatórios interrupt IN antes e depois.
- Confira o uso de report ID.
- Teste teclas normais e teclas de mídia.
- Compare o comportamento em BIOS, bootloader, Windows e Linux.
- Preserve descritor e bytes do relatório juntos.
Diagnóstico final
Falhas de HID Boot Protocol e Report Protocol são problemas de negociação de formato de relatório. O dispositivo pode enumerar corretamente enquanto envia relatórios no formato de protocolo errado.
O Bus Scope ajuda a provar se teclas faltando, falhas de entrada no BIOS ou problemas de compatibilidade HID vêm do tratamento de SetProtocol, dos report IDs, do descritor ou da formatação do relatório pelo firmware.
<!-- bus-scope-localized-transaction-foundation-v1:start -->Teste do contrato USB para “Depuração de HID Boot Protocol versus Report Protocol: modo BIOS, SetProtocol e teclas faltando”
A resposta direta é que STALL, timeout ou reset não explica sozinho a causa. Primeiro prove que o provider vê o device correto; depois leia o contrato do transfer: tipo, direção, recipient, wValue, wIndex, comprimento declarado e real, status e estado anterior e posterior. Ligue a conclusão à primeira transação diferente do caso bom.
| Limite | Comparação | Decisão |
|---|---|---|
| Plataforma | provider, permissão, Root Hub ou usbmon/XHC20 | Os records são da conexão correta? |
| Setup | bmRequestType, bRequest, wValue, wIndex, wLength | O host enviou o pedido esperado? |
| Data | direção, comprimento e bytes retidos | O payload cumpre o contrato? |
| Status | ACK, STALL, timeout ou cancellation | Onde a transação termina? |
| Estado | configuration, interface, alternate setting, halt | O device estava pronto? |
Comece antes de reset e enumeration e preserve descriptors, SET_CONFIGURATION, SET_INTERFACE e o command anterior à falha. Filtro estreito pode esconder o control transfer decisivo. Execute uma ação USB por teste e altere apenas firmware, driver, porta, cabo, comando ou timing.
Como escrever resposta citável?
Informe request, campos setup, resposta e contexto anterior; depois proponha teste com uma variável. Bytes não retidos não provam packet loss. Proximidade entre command e reset mostra correlação, não causa sem repetição ou mudança de estado.
Mantenha VID/PID, firmware, speed, topologia, provider, filtro e trigger. Compare fases USB semânticas, não frame numbers entre usbmon e USBPcap. Registre início, fim, versão, OS, conexão e checksum. Consulte o troubleshooting Bus Scope.
Os owners Semrush continuam separados: free USB analyzer na página do produto, best USB protocol analyzer na comparação e USB descriptor viewer no guia descriptor. Não invente volume ou KD.
<!-- bus-scope-localized-transaction-foundation-v1:end --><!-- multilingual-blog-closeout:start -->Resposta direta e limite de aceitação
A resposta curta para “Depuração de HID Boot Protocol versus Report Protocol: modo BIOS, SetProtocol e teclas faltando” é: Como depurar a alternância entre Boot Protocol e Report Protocol em USB HID, requisições SetProtocol, modo BIOS de teclado, report IDs, teclas faltando e compatibilidade de firmware HID. Trate essa frase como um resultado a verificar, não como promessa para qualquer entrada, dispositivo, projeto ou ambiente. Um resultado completo registra estado inicial, ação exata, saída visível e condição que comprova a conclusão da tarefa no Bus Scope.
Procedimento orientado por evidências
Comece com um caso pequeno e repetível antes de alterar um projeto completo. Registre versão do aplicativo, sistema operacional, identidade da entrada ou dispositivo, configurações relevantes e resultado esperado. Execute uma ação deliberada, preserve a primeira transição inesperada e compare com um caso conhecido quando possível. Alterar vários controles ao mesmo tempo esconde qual condição criou ou corrigiu o problema.
Ponto de controle 1: Depuração de HID Boot Protocol versus Report Protocol: modo BIOS, SetProtocol e teclas fal
Converta “Depuração de HID Boot Protocol versus Report Protocol: modo BIOS, SetProtocol e teclas faltando” em uma declaração reproduzível de aprovação ou falha. Inclua o que deve aparecer, o que deve estar ausente e qual recuperação é segura. Preserve o projeto ou captura original até a cópia corrigida passar pelo mesmo teste.
Ponto de controle 2: Como depurar a alternância entre Boot Protocol e Report Protocol em USB HID, requisições S
Trate “Como depurar a alternância entre Boot Protocol e Report Protocol em USB HID, requisições SetProtocol, modo BIOS de teclado, report IDs, teclas faltand” como uma etapa de aceitação separada para “Depuração de HID Boot Protocol versus Report Protocol: modo BIOS, SetProtocol e teclas faltando”. Registre o estado antes da ação, a primeira mudança visível e o estado final. Se o resultado divergir do objetivo descrito, volte ao último ponto confirmado em vez de continuar com suposições.
Ponto de controle 3: Boot Protocol
Converta “Boot Protocol” em uma declaração reproduzível de aprovação ou falha. Inclua o que deve aparecer, o que deve estar ausente e qual recuperação é segura. Preserve o projeto ou captura original até a cópia corrigida passar pelo mesmo teste.
Ponto de controle 4: Report Protocol
Trate “Report Protocol” como uma etapa de aceitação separada para “Depuração de HID Boot Protocol versus Report Protocol: modo BIOS, SetProtocol e teclas faltando”. Registre o estado antes da ação, a primeira mudança visível e o estado final. Se o resultado divergir do objetivo descrito, volte ao último ponto confirmado em vez de continuar com suposições.
Ponto de controle 5: A requisição SetProtocol
Converta “A requisição SetProtocol” em uma declaração reproduzível de aprovação ou falha. Inclua o que deve aparecer, o que deve estar ausente e qual recuperação é segura. Preserve o projeto ou captura original até a cópia corrigida passar pelo mesmo teste.
Ponto de controle 6: Report IDs e teclas faltando
Trate “Report IDs e teclas faltando” como uma etapa de aceitação separada para “Depuração de HID Boot Protocol versus Report Protocol: modo BIOS, SetProtocol e teclas faltando”. Registre o estado antes da ação, a primeira mudança visível e o estado final. Se o resultado divergir do objetivo descrito, volte ao último ponto confirmado em vez de continuar com suposições.
Ponto de controle 7: Comportamento de BIOS versus sistema operacional
Converta “Comportamento de BIOS versus sistema operacional” em uma declaração reproduzível de aprovação ou falha. Inclua o que deve aparecer, o que deve estar ausente e qual recuperação é segura. Preserve o projeto ou captura original até a cópia corrigida passar pelo mesmo teste.
Ponto de controle 8: Checklist de depuração
Trate “Checklist de depuração” como uma etapa de aceitação separada para “Depuração de HID Boot Protocol versus Report Protocol: modo BIOS, SetProtocol e teclas faltando”. Registre o estado antes da ação, a primeira mudança visível e o estado final. Se o resultado divergir do objetivo descrito, volte ao último ponto confirmado em vez de continuar com suposições.
Ponto de controle 9: Diagnóstico final
Converta “Diagnóstico final” em uma declaração reproduzível de aprovação ou falha. Inclua o que deve aparecer, o que deve estar ausente e qual recuperação é segura. Preserve o projeto ou captura original até a cópia corrigida passar pelo mesmo teste.
Ponto de controle 10: Teste do contrato USB para “Depuração de HID Boot Protocol versus Report Protocol: modo BI
Trate “Teste do contrato USB para “Depuração de HID Boot Protocol versus Report Protocol: modo BIOS, SetProtocol e teclas faltando”” como uma etapa de aceitação separada para “Depuração de HID Boot Protocol versus Report Protocol: modo BIOS, SetProtocol e teclas faltando”. Registre o estado antes da ação, a primeira mudança visível e o estado final. Se o resultado divergir do objetivo descrito, volte ao último ponto confirmado em vez de continuar com suposições.
Matriz de aceitação
| Ponto | Evidência a manter | Condição de aprovação |
|---|---|---|
| Depuração de HID Boot Protocol versus Report Protocol: modo BIOS, SetProtocol e teclas faltando | Estado inicial, uma ação e estado resultante | Outra pessoa reproduz o resultado declarado |
| Como depurar a alternância entre Boot Protocol e Report Protocol em USB HID, requisições SetProtocol, modo BIOS de tecla | Estado inicial, uma ação e estado resultante | Outra pessoa reproduz o resultado declarado |
| Boot Protocol | Estado inicial, uma ação e estado resultante | Outra pessoa reproduz o resultado declarado |
| Report Protocol | Estado inicial, uma ação e estado resultante | Outra pessoa reproduz o resultado declarado |
| A requisição SetProtocol | Estado inicial, uma ação e estado resultante | Outra pessoa reproduz o resultado declarado |
| Report IDs e teclas faltando | Estado inicial, uma ação e estado resultante | Outra pessoa reproduz o resultado declarado |
Isolamento, recuperação e entrega
Pare no primeiro limite que falhar. Preserve fonte, projeto, sessão ou captura, duplique antes de edição destrutiva e altere uma variável por experimento. Repetir um fluxo amplo depois de várias mudanças pode gerar outro resultado sem explicar o motivo.
Separe ausência de evidência de evidência de ausência. Uma tela vazia pode indicar entrada, escopo, filtro, permissão, dispositivo, intervalo ou estado incorreto. Verifique aquisição ou importação antes de interpretar decoder, editor, relatório ou exportação.
Antes da entrega, reabra o artefato e examine início, ponto de decisão e final. Registre versão, plataforma, configuração, expectativa, observação e reprodução mínima. Remova ou oculte dados sensíveis e confirme a autorização do destinatário.
Perguntas e respostas
Qual é a maneira confiável mais rápida de começar?
Use o menor caso representativo, escreva o resultado esperado e altere uma variável. Confirme o caminho básico antes de adicionar filtros, efeitos, edições, automação ou uma fonte maior.
Quais evidências devem ser salvas?
Mantenha identidade da entrada, versão, plataforma, configurações, ação exata, primeira transição inesperada e saída final. Feche e reabra projeto, sessão, relatório ou exportação antes de tratá-lo como durável.
Quando o procedimento deve ser repetido?
Repita após mudanças relevantes no aplicativo, sistema, driver, firmware, modelo, fonte ou fluxo. Preserve o caso aceito anterior como referência sem alterações.
Quando a tarefa está pronta para entrega?
Quando outra pessoa autorizada identifica a entrada, repete a ação, vê o mesmo resultado, entende os limites restantes e abre o artefato sem depender de estado local não documentado.
Guias relacionados
Estas páginas no mesmo idioma cobrem etapas próximas sem alterar o proprietário canônico deste assunto:
<!-- multilingual-blog-closeout:end -->