Поделиться через


Средство проверки оборудования USB (USB3HWVerifierAnalyzer.exe)

В этой статье описывается средство проверки оборудования USB (USB3HWVerifierAnalyzer.exe), используемое для тестирования и отладки определенных событий оборудования.

Большинство проблем с оборудованием проявляются таким образом, что приводит к плохому интерфейсу пользователей и часто трудно определить точный сбой. Средство проверки оборудования USB нацелено на захват аппаратных сбоев, возникающих на устройстве, порту, концентраторе, контроллере или сочетании их.

Средство проверки оборудования USB может выполнять следующие задачи:

  • Захват событий оборудования и отображение сведений в режиме реального времени.
  • Создайте файл трассировки со сведениями обо всех событиях.
  • Анализ существующего файла трассировки для сведений о событии.

Эта статья состоит из следующих разделов:

Получение средства анализатора средства проверки оборудования USB

Средство проверки оборудования USB включается в пакет программного обеспечения MUTT, который доступен для скачивания по адресу Tools в пакете программного обеспечения MUTT.

Пакет средств содержит несколько средств, которые выполняют тесты стресса и передачи (включая переходы питания) и тесты SuperSpeed. Пакет также содержит документ Readme (доступен как отдельная загрузка). В этом документе представлен краткий обзор типов оборудования MUTT. Он предоставляет пошаговые инструкции по различным тестам, которые следует выполнять, и предлагает топологии для тестирования контроллера, концентратора, устройства и BIOS/UEFI.

Как записывать события с помощью средства проверки оборудования USB

Чтобы записать события с помощью средства проверки оборудования, выполните следующие действия.

  1. Запустите сеанс, выполнив эту команду в командной строке с повышенными привилегиями.

    USB3HWVerifierAnalyzer.exe
    

    Средство поддерживает следующие параметры:

    Вариант Описание
    -v <VendorID> Регистрирует все события проверки оборудования для указанного идентификатора поставщика.
    -p <ProductID> Регистрирует все события проверки оборудования для указанного ProductID.
    -f <ETL-файл> Анализирует указанный ETL-файл. Синтаксический анализ в режиме реального времени не поддерживается. С помощью этого параметра средство анализирует файл в автономном режиме.
    Выходные данные /v Отображает все события в консоли.
  2. Запустите тестовый сценарий, для которого требуется записать события оборудования.

    Во время сеанса средство проверки оборудования USB записывает сведения о событиях оборудования по мере их возникновения. Если вы хотите отфильтровать события для определенного оборудования, укажите Идентификатор поставщика и ProductId оборудования. Средство может не записывать некоторые сведения (например, VID/PID) о событиях, которые происходят до полного перечисления устройства. Недостающие сведения доступны в подробном отчете, созданном в конце сеанса (описано далее).

    Примечание.

    ETL-файл AllEvents всегда будет содержать все события ETW для всех устройств. Он не влияет на коммутаторы -v и -p .

    Ниже приведена командная строка для фильтрации по VendorId и ProductId:

    USB3HWVerifierAnalyzer.exe -v 0781 -p 5595
    

    Ниже приведен пример выходных данных средства проверки оборудования:

    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. Остановите сеанс, нажав клавиши CTRL+C.

    В конце сеанса в текущий каталог добавляется файл с именем AllEvents.etl. Этот файл содержит сведения о трассировке всех событий, которые были записаны во время сеанса.

    Помимо AllEvents.etl, в окне командной строки отображается отчет. В отчете содержатся некоторые сведения, пропущенные в выходных данных в режиме реального времени. В следующих выходных данных показан пример тестового отчета для предыдущего сеанса. В отчете показаны все события, с которым столкнулись средства проверки оборудования 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
    
    

    В предыдущем примере отчета обратите внимание на значение поля "Ключ" для каждой записи. Отчет классифицирует сведения по этим значениям ключей , что упрощает чтение. Те же значения ключей используются в событиях, захваченных в AllEvents.etl.

  4. Преобразуйте AllEvents.etl в текстовый формат, выполнив следующую команду:

    USB3HWVerifierAnalyzer.exe -f AllEvents.etl /v > Output.txt 
    

    В выходном файле выполните поиск ранее отмеченных значений ключей . Значения связаны с одним из этих полей: fid_UcxController, fid_HubDevice и fid_UsbDevice.

  5. Откройте AllEvents.etl в Netmon и выберите "Добавить <field_name> ", чтобы отобразить фильтр для фильтрации событий по контроллеру, концентратору и устройству. Дополнительные сведения см. в разделе "Установка средств синтаксического анализа Netmon и USB ETW".

Флаги средства проверки оборудования USB

Флаг Указывает, что...
DeviceHwVerifierClientInitiatedResetPipe Драйвер клиента инициировал действие восстановления, сбросив определенный канал в ответ на сбои ввода-вывода. Некоторые клиентские драйверы могут выполнять восстановление ошибок в других сценариях.
DeviceHwVerifierClientInitiatedResetPort Драйвер клиента инициировал действие восстановления, сбросив устройство в ответ на сбои ввода-вывода. Некоторые клиентские драйверы могут выполнять восстановление ошибок в других сценариях.
DeviceHwVerifierClientInitiatedCyclePort Драйвер клиента инициировал действие восстановления путем велоспорта порта. Этот флаг приводит к повторному перечислению устройства диспетчером самонастраивающийся.
DeviceHwVerifierSetIsochDelayFailure Устройство USB 3.0 завершилось сбоем запроса SET_ISOCH_DELAY. Устройство может завершиться сбоем запроса, так как драйвер не требует сведений о запросе или временной ошибки. Однако водитель не может различать эти причины. Эта ошибка не фиксируется в отчете.
DeviceHwVerifierSetSelFailure Устройство USB 3.0 завершилось сбоем запроса SET_SEL. Устройство использует сведения о запросе для link Power Management (LPM). Устройство может завершиться сбоем запроса, так как драйвер не требует сведений о запросе или временной ошибки. Однако водитель не может различать эти причины. Эта ошибка не фиксируется в отчете.
DeviceHwVerifierSerialNumberMismatchOnRenumeration Устройство сообщило другой серийный номер во время повторного перечисления в отличие от того, которое оно сообщило во время первоначального перечисления. Повторное перечисление может произойти в результате операции сброса порта или возобновления системы.
DeviceHwVerifierSuperSpeedDeviceWorkingAtLowerSpeed Устройство USB 3.0 работает со скоростью шины ниже, чем SuperSpeed.
DeviceHwVerifierControlTransferFailure Сбой передачи элемента управления в конечную точку по умолчанию устройства. Передача может завершиться ошибкой в результате ошибки устройства или контроллера. Журналы концентратора указывают код состояния USBD для сбоя передачи. Этот флаг исключает ошибки передачи SET_SEL и SET_ISOCH_DELAY управления. Эти типы запросов охватываются флагами DeviceHwVerifierSetIsochDelayFailure и DeviceHwVerifierSetSelFailure.
DeviceHwVerifierDescriptorValidationFailure Дескриптор, возвращаемый устройством, не соответствует спецификации USB. Журнал концентратора указывает на точную ошибку.
DeviceHwVerifierInterfaceWakeCapabilityMismatch Бит RemoteWake неправильно задан на устройстве. Устройства USB 3.0, поддерживающие удаленное пробуждение, также должны поддерживать пробуждение функции. Существует два способа, в которых устройство указывает на поддержку пробуждения функции. Первый способ — через поле дескриптора конфигурации bmAttributes , а второй — в ответ на запрос GET_STATUS, предназначенный для интерфейса. Для не составного устройства битовое значение RemoteWake должно совпадать со значением, возвращаемым запросом GET_STATUS, предназначенным для интерфейса 0. Для составных устройств бит RemoteWake должен быть 1 для хотя бы одной из функций. В противном случае этот флаг указывает, что устройство сообщило противоречивые значения здесь.
DeviceHwVerifierBusRenumeration Устройство переначислено на шине. Повторное перечисление может произойти в результате операции сброса порта или возобновления системы. Также происходит повторное перечисление, если устройство отключено или остановлено или остановлено или запущено.
HubHwVerifierTooManyResets Центр прошел слишком много операций сброса в течение короткого периода. Несмотря на то, что эти сбросы были успешными, концентратор не обрабатывает запросы и повторяющиеся ошибки.
HubHwVerifierControlTransferFailure Не удалось передать элемент управления, предназначенный для конечной точки центра по умолчанию. Передача может завершиться ошибкой в результате ошибки устройства или контроллера. Журналы концентратора указывают код состояния USBD для сбоя.
HubHwVerifierInterruptTransferFailure Сбой передачи данных в конечную точку прерывания концентратора. Передача может завершиться ошибкой в результате ошибки устройства или контроллера. Журналы концентратора указывают код состояния USBD для сбоя. Если сбой передачи произошел из-за отмены запроса, ошибка не фиксируется.
HubHwVerifierNoSelectiveSuspendSupport Бит RemoteWake не установлен на 1 в дескрипторе конфигурации концентратора.
HubHwVerifierPortResetTimeout При перечислении или повторном перечислении устройства операция сброса портов истекает. Уведомление об изменении порта не получено, указывающее, что сброс порта завершен.
HubHwVerifierInvalidPortStatus Состояние порта целевого порта недопустимо в спецификации USB. Некоторые устройства могут привести к тому, что концентратор сообщить о недопустимом состоянии.
HubHwVerifierPortLinkStateSSInactive Связь между целевым портом и подчиненным устройством находится в состоянии ошибки.
HubHwVerifierPortLinkStateCompliance Связь между целевым портом и подчиненным устройством находится в режиме соответствия требованиям. В некоторых сценариях, связанных с системным возобновлением работы, ожидается ошибка режима соответствия требованиям, и в этих случаях ошибка не фиксируется.
HubHwVerifierPortDeviceDisconnected Нижнее устройство на целевом порту больше не подключено к шине.
HubHwVerifierPortOverCurrent Подчиненный порт сообщил о состоянии переполнения.
HubHwVerifierControllerOperationFailure Сбой операции контроллера (например, включение устройства, настройка конечных точек) для устройства, подключенного к целевому порту. Ошибки из запросов SET_ADDRESS и сброса конечных точек не записываются.