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_REPORToSET_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:
- Captura de enumeración y descriptor HID.
- Guarde el descriptor del informe HID.
- Identificar las definiciones de informes de funciones.
- Capture el GET_REPORT o SET_REPORT defectuoso.
- Verifique la identificación del informe.
- Consultar longitud solicitada.
- Compare la longitud del descriptor con la longitud de la transferencia.
- Busque STALL, tiempo de espera o respuesta corta.
- Compare los informes de entrada de trabajo con los informes de características fallidas.
- 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.