Depuración del informe de funciones USB HID: GET_REPORT, SET_REPORT, comandos del proveedor y configuraciones de dispositivos faltantes

Cómo solucionar errores de informes de funciones HID, GET_REPORT, SET_REPORT, ID de informes, transferencias de control, configuraciones de proveedores, configuración de dispositivos y errores de firmware USB HID.


Los dispositivos HID no son sólo teclados y ratones. Incluyen llaves de seguridad, sensores, paneles de control, herramientas de proveedores, dispositivos industriales, controladores de juegos, dispositivos UPS e interfaces de configuración personalizadas. Muchos de estos dispositivos utilizan informes de funciones HID para configuración y estado. Cuando los informes de funciones fallan, los usuarios buscan "El informe de funciones HID no funciona", "Error en GET_REPORT", "Error en SET_REPORT", "No coincide el ID del informe HID" y "Tiempo de espera de comando del proveedor USB HID" porque la entrada normal puede funcionar mientras que la configuración no.

Bus Scope es útil porque los informes de funciones a menudo viajan sobre el punto final cero como transferencias de control. El paquete de configuración real, el tipo de informe, el ID del informe, la longitud y el estado de la respuesta son importantes.

Qué son los informes de funciones

HID tiene varios tipos de informes:

  • Informes de entrada
  • Informes de salida
  • Informes de funciones

Los informes de entrada a menudo llegan a los puntos finales de entrada de interrupción. Los informes de características se solicitan comúnmente con transferencias de control usando GET_REPORT o SET_REPORT.

Si los botones de un dispositivo funcionan pero el panel de configuración falla, el motivo puede ser el manejo del Informe de funciones.

Informe de discrepancias en el ID y la longitud

Muchos dispositivos HID utilizan ID de informe. Si el host incluye el ID de informe 3 y el firmware espera el ID de informe 0, la solicitud puede fallar o devolver datos incorrectos.

Errores comunes:

  • El firmware omite el byte de ID del informe.
  • El anfitrión envía un informe con una longitud incorrecta.
  • El descriptor declara una longitud, el firmware devuelve otra.
  • El informe de funciones existe en el firmware pero no en el descriptor.
  • El descriptor declara informar que el firmware nunca se implementa.

Se deben comparar el descriptor del informe HID y la transferencia de control.

GET_REPORT y SET_REPORT evidencia

Buscar:

  • Tipo de solicitud de paquete de configuración.
  • HID GET_REPORT o SET_REPORT.
  • Tipo de informe Característica.
  • Identificación del informe.
  • wLongitud.
  • Bytes de etapa de datos.
  • STALL o tiempo de espera.

Si el dispositivo detiene un informe de funciones que anuncia su descriptor, se sospecha de la coherencia del firmware o del descriptor.

Configuración de proveedores a través de HID

Muchos productos utilizan HID porque evita controladores de kernel personalizados. La configuración del proveedor se puede implementar como informes de funciones.

Ejemplos:

  • Cambiar la frecuencia de muestreo.
  • Leer la versión del firmware.
  • Configure el modo LED.
  • Configurar el rango del sensor.
  • Habilite el gestor de arranque.
  • Leer datos de calibración.

Si estos comandos fallan, es posible que el dispositivo aún aparezca como un dispositivo HID válido.

Lista de verificación de depuración

Utilice este proceso:

  1. Captura de enumeración y descriptor HID.
  2. Guarde el descriptor del informe HID.
  3. Identificar las definiciones de informes de funciones.
  4. Capture el GET_REPORT o SET_REPORT defectuoso.
  5. Verifique la identificación del informe.
  6. Consultar longitud solicitada.
  7. Compare la longitud del descriptor con la longitud de la transferencia.
  8. Busque STALL, tiempo de espera o respuesta corta.
  9. Compare los informes de entrada de trabajo con los informes de características fallidas.
  10. Preservar el descriptor y la transferencia de control juntos.

Diagnóstico final

Las fallas en los informes de funciones HID suelen ser problemas de descriptor, ID del informe, longitud, estado del firmware o manejo de transferencia de control. La entrada puede funcionar mientras falla la configuración.

Bus Scope ayuda a exponer el contrato del informe HID y la transferencia de control exacta que falló, lo que hace que los errores del informe de funciones sean diagnosticables en lugar de errores misteriosos de las herramientas del proveedor.