Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird das USB-Hardwareprüftool (USB3HWVerifierAnalyzer.exe) beschrieben, das zum Testen und Debuggen bestimmter Hardwareereignisse verwendet wird.
Die meisten Hardwareprobleme manifestieren sich in der Art und Weise, die zu einer schlechten Endbenutzererfahrung führen, und es ist oft schwierig, den genauen Fehler zu ermitteln. Die USB-Hardwareüberprüfung zielt darauf ab, Hardwarefehler zu erfassen, die in einem Gerät, Port, Hub, Controller oder einer Kombination von diesen auftreten.
Die USB-Hardwareüberprüfung kann folgende Aufgaben ausführen:
- Erfassen Sie Hardwareereignisse und zeigen Sie Informationen in Echtzeit an.
- Generieren Sie eine Ablaufverfolgungsdatei mit Informationen zu allen Ereignissen.
- Analysieren Sie eine vorhandene Ablaufverfolgungsdatei, um Ereignisinformationen zu erhalten.
Dieser Artikel enthält die folgenden Abschnitte:
- Abrufen des USB-Hardware-Verifizierungsanalysetools
- So erfassen Sie Ereignisse mithilfe einer USB-Hardwareüberprüfung
- USB-Hardwareüberprüfungskennzeichnungen
Abrufen des Tools für die USB-Hardwareüberprüfungsanalyse
Das USB-Hardwareprüftool ist im MUTT-Softwarepaket enthalten, das unter Tools im MUTT-Softwarepaket zum Download verfügbar ist.
Das Tools-Paket enthält mehrere Tools, die Stress- und Übertragungstests (einschließlich Stromübergänge) und SuperSpeed-Tests durchführen. Das Paket verfügt auch über ein Readme-Dokument (als separater Download verfügbar). Im Dokument erhalten Sie eine kurze Übersicht über die Typen von MUTT-Hardware. Sie enthält schrittweise Anleitungen zu verschiedenen Tests, die Sie ausführen sollten, und schlägt Topologien für Controller-, Hub-, Geräte- und BIOS/UEFI-Tests vor.
Wie Sie Ereignisse mit einem USB-Hardwareverifizierer erfassen
Führen Sie die folgenden Schritte aus, um Ereignisse mithilfe der Hardwareüberprüfung zu erfassen:
Starten Sie eine Sitzung, indem Sie diesen Befehl an einer Eingabeaufforderung mit erhöhten Rechten ausführen.
USB3HWVerifierAnalyzer.exe
Das Tool unterstützt diese Optionen:
Auswahlmöglichkeit BESCHREIBUNG -v <VendorID> Protokolliert alle Hardwareüberprüfungsereignisse für die angegebene VendorID. -p <Produkt-ID> Protokolliert alle Hardwareüberprüfungsereignisse für die angegebene ProductID. -f <ETL-Datei> Analysiert die angegebene ETL-Datei. Die Echtzeitanalyse wird nicht unterstützt. Mit dieser Option analysiert das Tool die Datei offline. /v-Ausgabe Zeigt alle Ereignisse in der Konsole an. Führen Sie das Testszenario aus, für das Sie Hardwareereignisse erfassen möchten.
Während einer Sitzung erfasst die USB-Hardwareüberprüfung Informationen zu Hardwareereignissen, sobald sie auftreten. Wenn Sie Ereignisse für eine bestimmte Hardware filtern möchten, geben Sie die VendorId und ProductId der Hardware an. Das Tool erfasst möglicherweise keine Informationen (z. B. VID/PID) zu Ereignissen, die auftreten, bevor das Gerät vollständig aufgezählt wird. Die fehlenden Informationen sind im detaillierten Bericht verfügbar, der am Ende der Sitzung generiert wird (weiter erläutert).
Hinweis
Die AllEvents ETL-Datei enthält immer alle ETW-Ereignisse für alle Geräte. Es ist nicht von den Schaltern -v und -p betroffen.
Hier ist die Befehlszeile zum Filtern nach VendorId und ProductId:
USB3HWVerifierAnalyzer.exe -v 0781 -p 5595
Hier ist eine Beispielausgabe des Hardwareprüftools:
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
Beenden Sie die Sitzung, indem Sie STRG+C drücken.
Am Ende der Sitzung wird eine Datei mit dem Namen AllEvents.etl im aktuellen Verzeichnis hinzugefügt. Diese Datei enthält Ablaufverfolgungsinformationen zu allen Ereignissen, die während der Sitzung erfasst wurden.
Zusätzlich zu AllEvents.etl zeigt das Befehlsfenster einen Bericht an. Der Bericht enthält bestimmte Informationen, die in der Echtzeitausgabe verpasst wurden. Die folgende Ausgabe zeigt einen Beispieltestbericht für die vorherige Sitzung. Der Bericht zeigt alle Ereignisse an, die beim USB-Hardwareprüfer aufgetreten sind.
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
Beachten Sie im vorherigen Beispielbericht den Wert des Schlüsselfelds für jeden Datensatz. Der Bericht kategorisiert die Informationen nach diesen Schlüsselwerten und erleichtert das Lesen. Dieselben Schlüsselwerte werden in Ereignissen verwendet, die in AllEvents.etl erfasst werden.
Konvertieren Sie AllEvents.etl in textformat, indem Sie den folgenden Befehl ausführen:
USB3HWVerifierAnalyzer.exe -f AllEvents.etl /v > Output.txt
Suchen Sie in der Ausgabedatei nach den zuvor angegebenen Schlüsselwerten . Die Werte sind einem der folgenden Felder zugeordnet: fid_UcxController, fid_HubDevice und fid_UsbDevice.
Öffnen Sie AllEvents.etl in Netmon, und wählen Sie "Field_name> hinzufügen<" aus, um Filter zum Filtern von Ereignissen nach Controller, Hub und Gerät anzuzeigen. Weitere Informationen finden Sie unter Installieren von Netmon- und USB ETW-Parsern.
USB-Hardwareüberprüfungskennzeichnungen
Flagge | Gibt an, dass... |
---|---|
GerätHwPrüferKundeninitiierterZurücksetzungsrohr | Der Clienttreiber hat eine Wiederherstellungsaktion initiiert, indem er eine bestimmte Pipe als Reaktion auf E/A-Fehler zurückgesetzt hat. Bestimmte Clienttreiber führen möglicherweise eine Fehlerwiederherstellung in anderen Szenarien durch. |
DeviceHwVerifierClientInitiatedResetPort | Der Clienttreiber hat eine Wiederherstellungsaktion initiiert, indem das Gerät als Reaktion auf E/A-Fehler zurückgesetzt wurde. Bestimmte Clienttreiber führen möglicherweise eine Fehlerwiederherstellung in anderen Szenarien durch. |
GerätHwPrüferKundenausgelösteZyklusPort | Der Clienttreiber hat eine Wiederherstellungsaktion initiiert, indem er den Port zyklisch ein- und ausschaltete. Diese Kennzeichnung bewirkt, dass der Plug- und Play-Manager das Gerät erneut aufzählt. |
GerätHwPrüferSetIsochVerzögerungsfehler | Ein USB 3.0-Gerät hat die SET_ISOCH_DELAY Anforderung fehlgeschlagen. Das Gerät kann die Anforderung nicht ausführen, da entweder der Treiber keine Anforderungsinformationen erfordert oder ein vorübergehender Fehler aufgetreten ist. Der Fahrer kann jedoch nicht zwischen diesen Gründen unterscheiden. Dieser Fehler wird im Bericht nicht erfasst. |
DeviceHwVerifierSetSelFailure | Ein USB 3.0-Gerät hat die SET_SEL Anforderung fehlgeschlagen. Das Gerät verwendet die Anforderungsinformationen für link Power Management (LPM). Das Gerät kann die Anforderung nicht ausführen, da entweder der Treiber keine Anforderungsinformationen erfordert oder ein vorübergehender Fehler aufgetreten ist. Der Fahrer kann jedoch nicht zwischen diesen Gründen unterscheiden. Dieser Fehler wird im Bericht nicht erfasst. |
GeräteHwVerifiziererSeriennummerAbweichungBeiNeunummerierung | Das Gerät hat während der erneuten Aufzählung eine andere Seriennummer gemeldet, im Gegensatz zu derjenigen, die es während der ersten Aufzählung gemeldet hat. Eine erneute Aufzählung kann als Ergebnis eines Zurücksetzens des Ports oder einer Systemfortsetzung auftreten. |
GeräteHwPrüferSuperSpeedGerätArbeitetMitNiedrigererGeschwindigkeit | Das USB 3.0-Gerät arbeitet mit einer Busgeschwindigkeit niedriger als SuperSpeed. |
GerätHwÜberprüferKontrollübertragungsfehler | Fehler bei einem Steuertransfer zum Standardendpunkt des Geräts. Die Übertragung kann aufgrund eines Geräte- oder Controllerfehlers fehlschlagen. Die Hubprotokolle geben den USBD-Statuscode für den Übertragungsfehler an. Dieses Kennzeichen schließt SET_SEL und SET_ISOCH_DELAY Steuerungsübertragungsfehler aus. Diese Arten von Anforderungen werden von DeviceHwVerifierSetIsochDelayFailure- und DeviceHwVerifierSetSelFailure-Flags abgedeckt. |
Gerätehardwareprüferdeskriptorvalidierungsfehler | Ein vom Gerät zurückgegebener Deskriptor entspricht nicht der USB-Spezifikation. Das Hubprotokoll gibt den genauen Fehler an. |
GerätHwPrüferSchnittstelleAufweckfähigkeitNichtübereinstimmung | Das RemoteWake-Bit ist auf dem Gerät falsch festgelegt. USB 3.0-Geräte, die die Remotereaktivierung unterstützen, müssen auch die Funktionsreaktivierung unterstützen. Es gibt zwei Möglichkeiten, wie das Gerät seine Unterstützung für die Weckfunktion angibt. Der erste Weg besteht über das bmAttributes-Feld des Konfigurationsdeskriptors, der zweite Weg erfolgt über die Antwort auf die GET_STATUS-Anforderung, die an die Schnittstelle gerichtet ist. Bei einem nicht zusammengesetzten Gerät muss der RemoteWake-Bitwert mit dem von der GET_STATUS Anforderung zurückgegebenen Wert übereinstimmen, der für die Schnittstelle 0 bestimmt ist. Für zusammengesetzte Geräte muss der RemoteWake-Bit 1 für mindestens eine der Funktionen sein. Andernfalls gibt dieses Kennzeichen an, dass das Gerät widersprüchliche Werte hier gemeldet hat. |
GeräteHwÜberprüferBusNeuauflistung | Das Gerät wird im Bus neuregistriert. Eine erneute Aufzählung kann aufgrund eines Port-Resets oder des Fortsetzens des Systems auftreten. Eine erneute Aufzählung tritt auch auf, wenn das Gerät deaktiviert/aktiviert oder beendet/gestartet wird. |
HubHwVerifierZuVieleNeustarts | Ein Hub hat innerhalb kurzer Zeit zu viele Reset-Vorgänge durchlaufen. Obwohl diese Zurücksetzungen erfolgreich waren, verarbeitet der Hub keine Anfragen und wiederholte Fehler treten auf. |
HubHwVerifierControlTransferFailure | Fehler bei einer Steuerelementübertragung, die auf den Standardendpunkt des Hubs ausgerichtet ist. Die Übertragung kann aufgrund eines Geräte- oder Controllerfehlers fehlschlagen. Die Hubprotokolle geben den USBD-Statuscode für den Fehler an. |
HubHwPrüferInterruptTransferFehler | Fehler bei einer Datenübertragung, die auf den Unterbrechungsendpunkt des Hubs ausgerichtet ist. Die Übertragung kann aufgrund eines Geräte- oder Controllerfehlers fehlschlagen. Die Hubprotokolle geben den USBD-Statuscode für den Fehler an. Wenn die Übertragung aufgrund einer stornierten Anforderung fehlgeschlagen ist, wird der Fehler nicht erfasst. |
HubHwVerifierNoSelectiveSuspendSupport | Die RemoteWake-Bit ist im Konfigurationsdeskriptor des Hubs nicht auf 1 festgelegt. |
HubHwVerifierPortResetTimeout | Beim Aufzählen oder erneuten Aufzählen eines Geräts läuft der Portzurücksetzungsvorgang ab. Eine Portänderungsbenachrichtigung wird nicht erhalten, die angibt, dass die Portzurücksetzung abgeschlossen wurde. |
HubHw-ÜberprüferUngültigerPortstatus | Der Portstatus des Zielports ist gemäß der USB-Spezifikation nicht gültig. Bestimmte Geräte können dazu führen, dass der Hub den ungültigen Status meldet. |
HubHwVerifierPortVerbindungsstatusSSInaktiv | Die Verbindung zwischen dem Zielport und dem nachgeschalteten Gerät befindet sich in einem Fehlerzustand. |
HubHwVerifierPortLinkStateCompliance | Die Verbindung zwischen dem Zielport und dem nachgeschalteten Gerät befindet sich im Compliancemodus. In einigen Szenarien im Zusammenhang mit dem Schlafen und Wiederaufnehmen des Systems wird der Compliance-Modus-Fehler erwartet, und in diesen Fällen wird der Fehler nicht erfasst. |
HubHardwarePrüferPortGerätGetrennt | Das nachgeschaltete Gerät am Zielport ist nicht mehr mit dem Bus verbunden. |
HubHwVerifierPortOverCurrent | Der nachgeschaltete Port hat den überaktuellen Zustand gemeldet. |
HubHwVerifierControllerOperationFailure | Fehler bei einem Controllervorgang (z. B. Aktivieren des Geräts, Konfigurieren von Endpunkten) für das Gerät, das an den Zielport angeschlossen ist. Fehler von SET_ADDRESS- und Reset-Endpunkt-Anfragen werden nicht erfasst. |