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