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


Средство верификации аппаратуры 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 <ID продукта> Регистрирует все события проверки оборудования для указанного 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 Драйвер клиента инициировал действие восстановления, сбросив определенный канал в ответ на сбои ввода-вывода. Некоторые клиентские драйверы могут выполнять восстановление ошибок в других сценариях.
Перезагрузка порта, инициированная клиентом, проверка устройства Клиентский драйвер инициировал действие восстановления, сбросив устройство в ответ на отказы ввода-вывода. Некоторые клиентские драйверы могут выполнять восстановление ошибок в других сценариях.
DeviceHwVerifierClientInitiatedCyclePort Драйвер клиента инициировал выполнение действия восстановления путем перезагрузки порта. Этот флаг приводит к повторному перечислению устройства диспетчером Plug and Play.
DeviceHwVerifierSetIsochDelayFailure Устройство USB 3.0 не выполнило запрос SET_ISOCH_DELAY. Устройство может завершиться сбоем запроса, так как драйвер не требует сведений о запросе или временной ошибки. Однако водитель не может различать эти причины. Эта ошибка не фиксируется в отчете.
DeviceHwVerifierSetSelFailure Устройству USB 3.0 не удалось выполнить запрос SET_SEL. Устройство использует сведения о запросе для link Power Management (LPM). Устройство может отклонить запрос, потому что драйвер не требует информации о запросе или произошла временная ошибка. Однако водитель не может различать эти причины. Эта ошибка не фиксируется в отчете.
несоответствие серийного номера подтвердителя оборудования устройства при перенумерации Устройство сообщило другой серийный номер во время повторного перечисления в отличие от того, которое оно сообщило во время первоначального перечисления. Повторное перечисление может произойти в результате операции сброса порта или операции возобновления системы.
УстройствоHwПроверительУстройствоСуперСкоростьРаботаетНаНизкойСкорости Устройство 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 для хотя бы одной из функций. В противном случае этот флаг указывает, что устройство сообщило противоречивые значения здесь.
Проверка оборудования устройства и перенумерация шины Устройство перечислено заново на шине данных. Повторное перечисление может произойти в результате операции сброса порта или возобновления системы. Также происходит повторное перечисление, если устройство отключено или остановлено, или включено или запущено.
HubHwVerifierTooManyResets Центр прошел слишком много операций сброса в течение короткого периода. Несмотря на то, что эти сбросы были успешными, концентратор не обрабатывает запросы и повторяющиеся ошибки.
HubHwVerifierControlTransferFailure Не удалось выполнить управляющую передачу, предназначенную для конечной точки концентратора по умолчанию. Передача может завершиться ошибкой из-за неисправности устройства или контроллера. Логи концентратора указывают код состояния USBD при возникновении ошибки.
HubHwVerifierInterruptTransferFailure Сбой передачи данных в конечную точку прерывания концентратора. Передача может завершиться ошибкой в результате ошибки устройства или контроллера. Журналы концентратора указывают код состояния USBD для сбоя. Если сбой передачи произошел из-за отмены запроса, ошибка не фиксируется.
HubHwVerifierНетПоддержкиСелективнойОстановки Бит RemoteWake не установлен на 1 в дескрипторе конфигурации концентратора.
HubHwVerifierPortResetTimeout При перечислении или повторном перечислении устройства операция сброса портов истекает. Уведомление об изменении порта не получено, указывающее, что сброс порта завершен.
HubHwVerifierInvalidPortStatus Состояние целевого порта недействительно согласно спецификации USB. Некоторые устройства могут привести к тому, что концентратор сообщает о недопустимом состоянии.
HubHwVerifierPortLinkStateSSInactive Связь между целевым портом и подчиненным устройством находится в состоянии ошибки.
HubHwVerifierPortLinkStateCompliance Связь между целевым портом и подчиненным устройством находится в режиме соответствия требованиям. В некоторых сценариях, связанных с системным возобновлением работы, ожидается ошибка режима соответствия требованиям, и в этих случаях ошибка не фиксируется.
УзелПроверкиАппаратурыПортУстройствоОтключено Устройство ниже по потоку на целевом порту более не подключено к шине.
HubHwVerifierPortOverCurrent Подчиненный порт сообщил о состоянии переполнения.
Отказ операции контроллера HubHwVerifier Сбой операции контроллера (например, включение устройства, настройка конечных точек) для устройства, подключенного к целевому порту. Ошибки из запросов SET_ADDRESS и запросов на сброс точки подключения не фиксируются.