Comprobador de hardware USB (USB3HWVerifierAnalyzer.exe)
En este artículo se describe la herramienta de comprobador de hardware USB (USB3HWVerifierAnalyzer.exe) que se usa para probar y depurar eventos de hardware específicos.
La mayoría de los problemas de hardware se manifiestan de forma que provocan una mala experiencia del usuario final y a menudo es difícil determinar el fallo exacto. El comprobador de hardware USB tiene como objetivo capturar los fallos de hardware que se producen en un dispositivo, puerto, concentrador, controlador o una combinación de ellos.
El comprobador de hardware USB puede realizar estas tareas:
- Capturar eventos de hardware y mostrar información en tiempo real.
- Generar un archivo de seguimiento con información sobre todos los eventos.
- Analizar un archivo de seguimiento existente para obtener información de eventos.
Este artículo contiene las siguientes secciones:
- Obtención de la herramienta del analizador de comprobador de hardware USB
- Cómo capturar eventos con un comprobador de hardware USB
- Marcas de comprobador de hardware USB
Obtención de la herramienta del analizador de comprobador de hardware USB
La herramienta de comprobador de hardware USB se incluye con el paquete de software MUTT, que se puede descargar en Herramientas del paquete de software MUTT.
El paquete de herramientas contiene varias herramientas que realizan pruebas de estrés y transferencia (incluidas las transiciones de potencia) y pruebas de SuperSpeed. El paquete también tiene un documento Léame (disponible como descarga independiente). El documento proporciona una breve introducción a los tipos de hardware MUTT. Proporciona instrucciones paso a paso sobre varias pruebas que debe ejecutar y sugiere topologías para las pruebas de controlador, concentrador, dispositivo y BIOS/UEFI.
Cómo capturar eventos con un comprobador de hardware USB
Para capturar eventos con el comprobador de hardware, siga estos pasos:
Inicie una sesión ejecutando este comando en un símbolo del sistema con privilegios elevados.
USB3HWVerifierAnalyzer.exe
La herramienta admite estas opciones:
Opción Descripción -v <VendorID> Registra todos los eventos del comprobador de hardware para el VendorID especificado. -p <ProductID> Registra todos los eventos del comprobador de hardware para el ProductID especificado. -f <ETL file> Analiza el archivo ETL especificado. No se admite el análisis en tiempo real. Con esta opción, la herramienta analiza el archivo sin conexión. /v output Muestra todos los eventos en la consola. Ejecute el escenario de prueba para el que desea capturar eventos de hardware.
Durante una sesión, el comprobador de hardware USB captura información sobre los eventos de hardware a medida que se producen. Si desea filtrar los eventos para un hardware determinado, especifique VendorId y ProductId del hardware. Puede que la herramienta no capture determinada información (como VID/PID) sobre los eventos que se producen antes de que el dispositivo se enumere por completo. La información que falta está disponible en el informe detallado que se genera al final de la sesión (se describe a continuación).
Nota:
El archivo ETL AllEvents siempre contendrá todos los eventos ETW para todos los dispositivos. No se ve afectado por los conmutadores -v y -p.
Esta es la línea de comandos para filtrar por VendorId y ProductId:
USB3HWVerifierAnalyzer.exe -v 0781 -p 5595
Esta es una salida de ejemplo de la herramienta de comprobador de hardware:
Session Name : TraceSessionFriJan271351112023 Attempting to start session TraceSessionFriJan271351112023... Trace Session created...Status : 0 Provider Enable Success, Status : 0 Provider Enable Success, Status : 0 Provider Enable Success, Status : 0 Provider Enable Success, Status : 0 Provider Enable Success, Status : 0 Provider Enable Success, Status : 0 13319329877.425596: (UsbHub3/179) Event Message: Client Initiated Recovery Action VendorID/ProductID: 0x5e3/0x612 DeviceInterfacePath: \??\USB#VID_05E3&PID_0612#6&130491ac&0&4#{f18a0e88-c30c-11d0-8815-00a0c906bed8} DeviceDescription: Generic SuperSpeed USB Hub PortPath: 0x12, 0x4, 0x0, 0x0, 0x0, 0x0 Provider disable Success, Status : 0 Provider disable Success, Status : 0 Provider disable Success, Status : 0 Provider disable Success, Status : 0 Provider disable Success, Status : 0 Provider disable Success, Status : 0 Session Stopped...Status : 0
Pulse CTRL+C para detener la sesión.
Al final de la sesión, se agrega un archivo denominado AllEvents.etl en el directorio actual. Este archivo contiene información de seguimiento sobre todos los eventos capturados durante la sesión.
Además de AllEvents.etl, la ventana de comandos muestra un informe. El informe incluye cierta información que se ha perdido en la salida en tiempo real. En la salida siguiente se muestra un informe de prueba de ejemplo para la sesión anterior. El informe muestra todos los eventos que encontró el comprobador de hardware USB.
Record #1 (Key = 0x57ff0de4858) VendorID/ProductID: 0x451/0x2077 DeviceInterfacePath: \??\USB#VID_0451&PID_2077#6&c4be011&0&2#{f18a0e88-c30c-11d0-8815-00a0c906bed8} DeviceDescription: Generic USB Hub PortPath: 0x2, 0x0, 0x0, 0x0, 0x0, 0x0 All errors encountered: #1: (UsbHub3/176): DescriptorValidationError20HubPortPwrCtrlMaskZero #2: (UsbHub3/179): Client Initiated Recovery Action #3: (UsbHub3/179): Client Initiated Recovery Action #4: (UsbHub3/179): Client Initiated Recovery Action #5: (UsbHub3/179): Client Initiated Recovery Action #6: (UsbHub3/179): Client Initiated Recovery Action #7: (UsbHub3/179): Client Initiated Recovery Action #8: (UsbHub3/179): Client Initiated Recovery Action #9: (UsbHub3/179): Client Initiated Recovery Action #10: (UsbHub3/179): Client Initiated Recovery Action #11: (UsbHub3/179): Client Initiated Recovery Action #12: (UsbHub3/179): Client Initiated Recovery Action #13: (UsbHub3/179): Client Initiated Recovery Action #14: (UsbHub3/179): Client Initiated Recovery Action Record #2 (Key = 0x57ff62a36a8) VendorID/ProductID: 0x1058/0x740 DeviceInterfacePath: \??\USB#VID_1058&PID_0740#57583931453631414E5A3331#{a5dcbf10-6530-11d2-901f-00c04fb951ed} DeviceDescription: USB Mass Storage Device PortPath: 0x2, 0x4, 0x0, 0x0, 0x0, 0x0 All errors encountered: #1: (UsbHub3/173): SuperSpeed Device is Connected on the 2.0 Bus Record #3 (Key = 0x57ff79fd4e8) VendorID/ProductID: 0x1edb/0xbd3b PortPath: 0x3, 0x0, 0x0, 0x0, 0x0, 0x0 All errors encountered: #1: (UsbHub3/176): DescriptorValidationErrorCompanionIsochEndpointWBytesPerIntervalTooLarge #2: (UsbHub3/176): DescriptorValidationErrorCompanionIsochEndpointWBytesPerIntervalTooLarge #3: (UsbHub3/176): DescriptorValidationErrorCompanionIsochEndpointWBytesPerIntervalTooLarge #4: (UsbHub3/176): DescriptorValidationErrorCompanionIsochEndpointWBytesPerIntervalTooLarge #5: (UsbHub3/176): DescriptorValidationErrorCompanionIsochEndpointWBytesPerIntervalTooLarge #6: (UsbHub3/176): DescriptorValidationErrorCompanionIsochEndpointWBytesPerIntervalTooLarge #7: (UsbHub3/176): DescriptorValidationErrorStringMismatchBetweenBlengthAndBufferLength #8: (UsbHub3/176): DescriptorValidationErrorStringMismatchBetweenBlengthAndBufferLength
En el informe de ejemplo anterior, observe el valor del campo Key para cada registro. El informe clasifica la información por esos valores de Key, lo que facilita la lectura. Los mismos valores de Key se usan en eventos capturados en AllEvents.etl.
Convierta AllEvents.etl en formato de texto ejecutando el siguiente comando:
USB3HWVerifierAnalyzer.exe -f AllEvents.etl /v > Output.txt
En el archivo de salida, busque los valores de Key indicados anteriormente. Los valores están asociados a uno de estos campos: fid_UcxController, fid_HubDevice y fid_UsbDevice.
Abra AllEvents.etl en Netmon y seleccione Agregar <field_name> para mostrar el filtro para filtrar los eventos por controlador, concentrador y dispositivo. Para obtener más información, consulte Cómo instalar analizadores Netmon y USB ETW.
Marcas de comprobador de hardware USB
Marca | Indica que... |
---|---|
DeviceHwVerifierClientInitiatedResetPipe | El controlador de cliente inició una acción de recuperación restableciendo una canalización determinada en respuesta a errores de E/S. Algunos controladores de cliente pueden realizar la recuperación de errores en otros escenarios. |
DeviceHwVerifierClientInitiatedResetPort | El controlador de cliente inició una acción de recuperación restableciendo el dispositivo en respuesta a errores de E/S. Algunos controladores de cliente pueden realizar la recuperación de errores en otros escenarios. |
DeviceHwVerifierClientInitiatedCyclePort | El controlador de cliente inició una acción de recuperación apagando y encendiendo el puerto. Esta marca hace que Plug and Play Manager vuelva a enumerar el dispositivo. |
DeviceHwVerifierSetIsochDelayFailure | Un dispositivo USB 3.0 produjo un error en la solicitud de SET_ISOCH_DELAY. El dispositivo puede producir un error en la solicitud porque el controlador no requiere la información de solicitud o se produjo un error transitorio. Sin embargo, el controlador no puede diferenciar entre esas razones. Este error no se captura en el informe. |
DeviceHwVerifierSetSelFailure | Un dispositivo USB 3.0 produjo un error en la solicitud de SET_SEL. El dispositivo usa la información de solicitud para Link Power Management (LPM). El dispositivo puede producir un error en la solicitud porque el controlador no requiere la información de solicitud o se produjo un error transitorio. Sin embargo, el controlador no puede diferenciar entre esas razones. Este error no se captura en el informe. |
DeviceHwVerifierSerialNumberMismatchOnRenumeration | El dispositivo informó de un número de serie diferente durante la nueva enumeración, en lugar del que informó durante la enumeración inicial. Se puede producir una nueva enumeración como resultado de una operación de reinicio del puerto o de reanudación del sistema. |
DeviceHwVerifierSuperSpeedDeviceWorkingAtLowerSpeed | El dispositivo USB 3.0 está funcionando una velocidad de bus inferior a SuperSpeed. |
DeviceHwVerifierControlTransferFailure | No se pudo realizar una transferencia de control al punto de conexión predeterminado del dispositivo. La transferencia puede fallar como resultado de un error del dispositivo o del controlador. Los registros del concentrador indican el código de estado de USBD para el error de transferencia. Esta marca excluye los fallos en las transferencias de control SET_SEL y SET_ISOCH_DELAY. Estos tipos de solicitudes están cubiertos por las marcas DeviceHwVerifierSetIsochDelayFailure y DeviceHwVerifierSetSelFailure flags. |
DeviceHwVerifierDescriptorValidationFailure | Un descriptor devuelto por el dispositivo no se ajusta a la especificación USB. El registro del concentrador indica el error exacto. |
DeviceHwVerifierInterfaceWakeCapabilityMismatch | El bit RemoteWake se ha establecido incorrectamente en el dispositivo. Los dispositivos USB 3.0 que admiten la activación remota también deben admitir la activación de funciones. Hay dos formas en las que el dispositivo indica su compatibilidad con la activación de funciones. La primera forma es a través del campo bmAttributes del descriptor de configuración y la segunda forma es en su respuesta a la solicitud de GET_STATUS dirigida a la interfaz. Para un dispositivo no compuesto, el valor de bit RemoteWake debe coincidir con el valor devuelto por la solicitud de GET_STATUS destinada a la interfaz 0. En el caso de los dispositivos compuestos, el bit RemoteWake debe ser 1 para al menos una de las funciones. De lo contrario, esta marca indica que el dispositivo informó de valores contradictorios. |
DeviceHwVerifierBusRenumeration | El dispositivo se vuelve a enumerar en el bus. Se puede producir una nueva enumeración como resultado de una operación de reinicio del puerto o de reanudación del sistema. También se produce una nueva enumeración cuando el dispositivo se deshabilita/habilita o cuando se detiene/inicia. |
HubHwVerifierTooManyResets | Un concentrador ha pasado por demasiadas operaciones de restablecimiento en un breve período. Aunque esos restablecimientos se realizaron correctamente, el concentrador no procesa las solicitudes y se producen errores repetidos. |
HubHwVerifierControlTransferFailure | Error en una transferencia de control dirigida al punto de conexión predeterminado del concentrador. La transferencia puede fallar como resultado de un error del dispositivo o del controlador. Los registros del concentrador indican el código de estado de USBD para el error. |
HubHwVerifierInterruptTransferFailure | Error en una transferencia de datos dirigida al punto de conexión de interrupción del concentrador. La transferencia puede fallar como resultado de un error del dispositivo o del controlador. Los registros del concentrador indican el código de estado de USBD para el error. Si se ha producido un error en la transferencia debido a la cancelación de la solicitud, no se captura el error. |
HubHwVerifierNoSelectiveSuspendSupport | El bit RemoteWake no se establece en 1 en el descriptor de configuración del concentrador. |
HubHwVerifierPortResetTimeout | Al enumerar o volver a enumerar un dispositivo, se agota el tiempo de espera de la operación de restablecimiento de puerto. No se recibe una notificación de cambio de puerto que indica que se ha completado el restablecimiento del puerto. |
HubHwVerifierInvalidPortStatus | El estado del puerto de destino no es válido según la especificación USB. Algunos dispositivos pueden hacer que el concentrador notifique el estado no válido. |
HubHwVerifierPortLinkStateSSInactive | El vínculo entre el puerto de destino y el dispositivo de bajada está en estado de error. |
HubHwVerifierPortLinkStateCompliance | El vínculo entre el puerto de destino y el dispositivo de bajada está en modo de cumplimiento. En algunos escenarios que implican la reanudación de suspensión del sistema, se espera el error de modo de cumplimiento y, en esos casos, no se captura el error. |
HubHwVerifierPortDeviceDisconnected | El dispositivo de bajada del puerto de destino ya no está conectado al bus. |
HubHwVerifierPortOverCurrent | El puerto de bajada ha notificado un estado sobrecorriente. |
HubHwVerifierControllerOperationFailure | No se pudo realizar una operación de controlador (por ejemplo, habilitar el dispositivo, configurar puntos de conexión) para el dispositivo que está conectado al puerto de destino. Los errores de las solicitudes SET_ADDRESS y restablecer punto de conexión no se capturan. |