Средство проверки оборудования USB (USB3HWVerifierAnalyzer.exe)
В этой статье описывается средство проверки оборудования USB (USB3HWVerifierAnalyzer.exe), используемое для тестирования и отладки определенных событий оборудования.
Большинство проблем с оборудованием проявляются таким образом, что приводит к плохому интерфейсу пользователей и часто трудно определить точный сбой. Средство проверки оборудования USB нацелено на захват аппаратных сбоев, возникающих на устройстве, порту, концентраторе, контроллере или сочетании их.
Средство проверки оборудования USB может выполнять следующие задачи:
- Захват событий оборудования и отображение сведений в режиме реального времени.
- Создайте файл трассировки со сведениями обо всех событиях.
- Анализ существующего файла трассировки для сведений о событии.
Эта статья состоит из следующих разделов:
- Получение средства анализатора средства проверки оборудования USB
- Как записывать события с помощью средства проверки оборудования USB
- Флаги средства проверки оборудования USB
Получение средства анализатора средства проверки оборудования USB
Средство проверки оборудования USB включается в пакет программного обеспечения MUTT, который доступен для скачивания по адресу Tools в пакете программного обеспечения MUTT.
Пакет средств содержит несколько средств, которые выполняют тесты стресса и передачи (включая переходы питания) и тесты SuperSpeed. Пакет также содержит документ Readme (доступен как отдельная загрузка). В этом документе представлен краткий обзор типов оборудования MUTT. Он предоставляет пошаговые инструкции по различным тестам, которые следует выполнять, и предлагает топологии для тестирования контроллера, концентратора, устройства и BIOS/UEFI.
Как записывать события с помощью средства проверки оборудования USB
Чтобы записать события с помощью средства проверки оборудования, выполните следующие действия.
Запустите сеанс, выполнив эту команду в командной строке с повышенными привилегиями.
USB3HWVerifierAnalyzer.exe
Средство поддерживает следующие параметры:
Вариант Описание -v <VendorID> Регистрирует все события проверки оборудования для указанного идентификатора поставщика. -p <ProductID> Регистрирует все события проверки оборудования для указанного ProductID. -f <ETL-файл> Анализирует указанный ETL-файл. Синтаксический анализ в режиме реального времени не поддерживается. С помощью этого параметра средство анализирует файл в автономном режиме. Выходные данные /v Отображает все события в консоли. Запустите тестовый сценарий, для которого требуется записать события оборудования.
Во время сеанса средство проверки оборудования 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
Остановите сеанс, нажав клавиши 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.
Преобразуйте AllEvents.etl в текстовый формат, выполнив следующую команду:
USB3HWVerifierAnalyzer.exe -f AllEvents.etl /v > Output.txt
В выходном файле выполните поиск ранее отмеченных значений ключей . Значения связаны с одним из этих полей: fid_UcxController, fid_HubDevice и fid_UsbDevice.
Откройте 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 и сброса конечных точек не записываются. |