Protocolo de arranque USB HID frente a depuración del protocolo de informe: modo BIOS del teclado, protocolo de configuración, ID de informe y teclas faltantes

Cómo depurar el protocolo de arranque USB HID y el cambio de protocolo de informe, solicitudes SetProtocol, modo BIOS del teclado, ID de informe, claves faltantes y compatibilidad del firmware HID.


Los teclados y ratones USB HID pueden utilizar el protocolo de arranque o el protocolo de informe. Los usuarios buscan "Protocolo de arranque HID", "Protocolo de informe HID", "modo BIOS del teclado USB", "SetProtocol HID", "el teclado funciona en BIOS pero no en el sistema operativo" y "Faltan teclas de ID de informe HID" cuando la entrada funciona en un entorno pero falla en otro.

Bus Scope es útil porque el host puede enviar solicitudes de clase HID que cambian la forma en que el dispositivo formatea los informes. Si el firmware ignora SetProtocol o envía el formato de informe incorrecto, las claves pueden desaparecer aunque el dispositivo enumere correctamente.

Protocolo de arranque

El protocolo de arranque es un formato HID simplificado utilizado por BIOS, UEFI, entornos previos al arranque y pilas de host simples. Permite que los teclados y ratones básicos funcionen antes de que esté disponible un analizador HID completo.

Síntomas relacionados con el protocolo de arranque:

  • El teclado funciona en BIOS pero falla en el sistema operativo.
  • El teclado funciona en el sistema operativo pero no en el menú de inicio.
  • Las claves especiales desaparecen en el modo previo al inicio.
  • El mouse funciona solo después de que se carga el sistema operativo.
  • El firmware envía ID de informes cuando el informe de inicio no espera ninguno.

La pregunta de diagnóstico es qué protocolo seleccionó el host.

Protocolo de informe

El protocolo de informe utiliza el descriptor de informe HID. Admite diseños más completos, ID de informes, informes definidos por el proveedor, claves multimedia, sensores y comportamiento compuesto.

Si el host cambia al protocolo de informes pero el dispositivo sigue enviando informes de arranque, es posible que el sistema operativo analice la entrada incorrectamente. Si el host solicita el protocolo de arranque pero el dispositivo envía el protocolo de informe, el BIOS puede ignorar los informes.

Solicitud de establecimiento de protocolo

La solicitud de clase HID SetProtocol puede cambiar entre el protocolo de inicio y el protocolo de informe para los dispositivos compatibles.

Pruebas a recoger:

  • Descriptor de interfaz HID.
  • Valores de protocolo y subclase de arranque.
  • Descriptor del informe.
  • Solicitud Establecer protocolo.
  • Valor de protocolo seleccionado por el host.
  • Bytes de informe IN de interrupción antes y después del cambio.

Bus Scope puede hacer visible esta secuencia.

Informe de ID y claves faltantes

El protocolo de informes puede utilizar ID de informes. El protocolo de arranque a menudo espera informes de tamaño fijo sin prefijo de ID de informe.

Errores comunes de firmware:

  • El dispositivo incluye ID de informe en el protocolo de arranque.
  • El dispositivo omite la identificación del informe en el protocolo de informe.
  • El dispositivo cambia el tamaño del informe pero el descriptor no coincide.
  • Las claves de medios solo se encuentran en un informe secundario.
  • El informe NKRO se envía antes de que el host lo habilite.
  • El teclado envía un informe del proveedor al terminal del teclado.

Estos errores crean frases de búsqueda como "Faltan teclas en el teclado USB" y "ID de informe HID incorrecto".

Comportamiento del BIOS frente al sistema operativo

Los entornos BIOS y UEFI suelen ser más estrictos y sencillos que los sistemas operativos completos. Un teclado puede verse bien en Windows o Linux pero fallar antes del arranque.

Comparación útil:

  • Capture durante el prearranque si es posible con un analizador externo.
  • Captura después de cargar el sistema operativo.
  • Compare el comportamiento de SetProtocol.
  • Compare el formato de carga útil del informe.
  • Compruebe si el dispositivo se reinicia entre entornos.

Incluso si la captura previa al arranque es difícil, la evidencia SetProtocol del lado del sistema operativo puede revelar suposiciones de firmware.

Lista de verificación de depuración

Utilice este proceso:

  1. Capturar enumeración.
  2. Inspeccione la subclase y el protocolo de la interfaz HID.
  3. Inspeccione el descriptor del informe HID.
  4. Busque solicitudes SetProtocol.
  5. Decodificar el protocolo seleccionado.
  6. Compare los informes de interrupción IN antes y después.
  7. Verifique el uso de ID del informe.
  8. Pruebe claves normales y claves multimedia.
  9. Compare el comportamiento del BIOS, el gestor de arranque, Windows y Linux.
  10. Conservar el descriptor y los bytes del informe juntos.

Diagnóstico final

Las fallas del protocolo de arranque HID y del protocolo de informes son problemas de negociación del formato de informe. El dispositivo puede enumerar correctamente mientras envía informes en el formato de protocolo incorrecto.

Bus Scope ayuda a comprobar si las claves faltantes, las fallas de entrada del BIOS o los problemas de compatibilidad de HID se deben al manejo de SetProtocol, ID de informes, falta de coincidencia de descriptores o formato de informes de firmware.