Compartir a través de


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 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:

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:

  1. 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.
  2. 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
    
  3. 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.

  4. 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.

  5. 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.