Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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 maneras que conducen a una experiencia de usuario final deficiente y a menudo es difícil determinar el error exacto. El comprobador de hardware USB tiene como objetivo capturar errores 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:
- Capture eventos de hardware y muestre información en tiempo real.
- Genere un archivo de seguimiento con información sobre todos los eventos.
- Analice un archivo de seguimiento existente para obtener información de eventos.
Este artículo contiene las siguientes secciones:
- Obtener la herramienta de verificación de hardware USB
- Cómo capturar eventos mediante un comprobador de hardware USB
- Marcas de comprobador de hardware USB
Obtención de la herramienta de análisis de verificador de hardware USB
La herramienta de comprobador de hardware USB se incluye con el paquete de software MUTT que está disponible para su descarga en Herramientas en el paquete de software MUTT.
El paquete de herramientas contiene varias herramientas que realizan pruebas de esfuerzo y transferencia (incluidas las transiciones de energía) y las pruebas superspeed. El paquete también tiene un documento README (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 mediante un comprobador de hardware USB
Para capturar eventos mediante el comprobador de hardware, realice estos pasos:
Inicie una sesión ejecutando este comando en un indicador de comandos 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 <archivo ETL> 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. Salida /v 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 eventos para un hardware determinado, especifique vendorId y ProductId del hardware. Es posible que la herramienta no capture 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 modificadores -v y -p .
Esta es la línea de comandos que se va a 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
Presione 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 siguiente salida se muestra un ejemplo de informe de prueba 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, anote el valor del campo Clave para cada registro. El informe clasifica la información por esos valores de clave , lo que facilita la lectura. Los mismos valores de clave 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 clave 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 eventos por controlador, concentrador y dispositivo. Para obtener más información, vea Cómo instalar analizadores NETMON y USB ETW.
Marcas de comprobador de hardware USB
Bandera | Indica que... |
---|---|
VerificadorHardwareDelDispositivoReinicioDeTuberaIniciadoPorElCliente | El controlador 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. |
RestablecerPuertoIniciadoPorClienteDelVerificadorHwDelDispositivo | El controlador 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 cliente inició una acción de recuperación mediante el ciclo del 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 conductor 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 conductor no puede diferenciar entre esas razones. Este error no se captura en el informe. |
** DispositivoVerificadorDeHwNúmeroDeSerieNoCoincideEnRenumeración | 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. Una nueva enumeración puede ocurrir como consecuencia de un puerto de reinicio o una operación de reanudación del sistema. |
VerificadorHardwareDispositivoSuperVelocidadTrabajandoABajaVelocidad | El dispositivo USB 3.0 está funcionando a una velocidad del bus menos que SuperSpeed. |
FalloEnTransferenciaDeControlDelVerificadorDeHardwareDelDispositivo | No se pudo realizar una transferencia de control al punto de conexión predeterminado del dispositivo. La transferencia puede producir un error como resultado del error del dispositivo o del controlador. Los registros del concentrador central muestran el código de estado de USBD para el error de transferencia. Esta marca excluye errores en las transferencias de control SET_SEL y SET_ISOCH_DELAY. Estos tipos de solicitudes están cubiertos por las marcas DeviceHwVerifierSetIsochDelayFailure y DeviceHwVerifierSetSelFailure. |
Fallo en la Validación del Descriptor del Verificador de Hardware del Dispositivo | Un descriptor devuelto por el dispositivo no se ajusta a la especificación USB. El registro del concentrador indica el error exacto. |
Incompatibilidad de Capacidad de Despertar del Verificador de Interfaz del Dispositivo | El bit RemoteWake se establece incorrectamente en el dispositivo. Los dispositivos USB 3.0 que admiten la reactivación remota también deben admitir la reactivación de funciones. Hay dos maneras en las que el dispositivo indica su compatibilidad con la reactivació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 aquí. |
DeviceHwVerifierBusRenumeration | El dispositivo se vuelve a enumerar en el bus de datos. Una reenumeración puede ocurrir como resultado de un puerto de restablecimiento o una operación de reanudación del sistema. También se produce una nueva enumeración, cuando el dispositivo está deshabilitado o habilitado o detenido o iniciado. |
VerificadorHwHubDemasiadosReinicios | Un centro ha pasado por demasiadas operaciones de restablecimiento en un breve período. Aunque esos restablecimientos se realizaron correctamente, el centro no procesa las solicitudes y se producen errores repetidos. |
HubHwVerifierControlTransferFailure | Error en una transferencia de control dirigida al punto de conexión predeterminado del centro. La transferencia puede producir un error como resultado del 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 centro. La transferencia puede producir un error como resultado del error del dispositivo o del controlador. Los registros del concentrador indican el código de estado del 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. |
VerificadorDeHwDelHubSinSoporteDeSuspensiónSelectiva | El bit RemoteWake no se establece en 1 en el descriptor de configuración del centro. |
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 centro 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 suspensión y reanudación del sistema, se prevé un error en el modo de cumplimiento y, en esos casos, no se captura el error. |
ConcentradorVerificadorDeHardwareDispositivoDePuertoDesconectado | El dispositivo de bajada del puerto de destino ya no está conectado al bus. |
HubHwVerifierPortOverCurrent | El puerto de salida ha notificado un estado de sobrecorriente. |
Fallo de Operación del Controlador Verificador de HubHw | 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 de restablecimiento del punto de conexión no se capturan. |