USB Device Tree Viewer V3.7.5
 
Home

  English version of this page

[Download]
 
  Einführung
 
Der USB Device Tree Viewer, kurz UsbTreeView, basiert auf dem Microsoft USBView Beispielprojekt aus dem Windows Server 2003 Driver Development Kit. Dieses gibt es jetzt auf GitHub.
Da hier nur die Quelltexte enthalten sind und Microsoft das lange Zeit verfügbare UVCView auch nicht mehr anbietet, habe ich daraus ein eigenes Tool gemacht. Inzwischen gibts USBView wieder als EXE, und zwar als Teil der "Debugging Tools für Windows", siehe hier: USBView. Es ist aber immernoch nur ein Demo-Projekt für das Windows USB-API, auch nach 20 Jahren speichert es nicht mal die Fensterposition...

UsbTreeView begann mit dem USBView-Quelltext aus dem DDK für Server 2003. Hier die Verbesserungen:

  • UsbTreeView sammelt neben den USB-Informationen auch Daten aus dem Windows Geräte-Management und führt beide zusammen - so kann es auch Laufwerksbuchstaben und COM-Ports von USB-Geräten zeigen
  • Die Fensterposition wird gespeichert - dazu musste ich auch erst ermahnt werden, jahrelang wurde das Fenster einfach maximiert :-)
  • Hintergrundfarbe und Schriftart der Textansicht rechts können eingestellt werden (in den Screenshots wurde DOSLike 7 genutzt)
  • Auswahl im TreeView bleibt über Refresh hinaus erhalten
  • Zusätzliche Descriptoren werden dekodiert, u.a. UVC 1.1, Audio 2.0
  • Hexdump der Descriptoren kann angezeigt werden
  • Erweiterte USB-Infos unter Windows 8 und 10 (aus der aktuellen USBView Beispielanwendung übernommen)
  • Erweiterte Informationen zu Host-Controllern und Root-Hubs
  • Fehlgeschlagene Abfragen werden im Hintergrund wiederholt, z.B. bei USB-Mäusen die während des Enumerierens bewegt wurden
  • Im TreeView handgemachte 16x16 icons (USBView nutzt 32x32 Icons und skaliert sie auf 15x15 runter)
  • Hardware sicher entfernen, Geräte-Neustart, Port-Reset
  • Zeigt offene Handles nach fehlgeschlagenem "sicheren Entfernen"
  • u.v.a.
Ab V3.0
  • Bei Anschließen und Entfernen von USB-Geräte keine erneute Enumeration aller USB-Geräte
  • Suchfunktion (kein Volltext, nur Sachen wie Geräte-ID, Volume-Name, COM-Port)
  • Neue Tastaturkürzel (Alt-D öffnet die Laufwerksliste, Alt+O die Liste der anderen Geräte, Alt+S das Such-Textfeld, Alt+Links/Rechts springt durch die Such-Treffer
  • Option, Knoten leerer Hubs oder Hubs an denen nur leere Hubs angeschlossen sind, nicht aufzuklappen
  • Option, zum Knoten neu angeschlossener und entfernter Geräte zu springen
  • Option, den Hub-Knoten neu angeschlossener Geräte aufzuklappen
  • Geräte können in der Baumansicht umbenannt werden (F2 oder Mausklick, benötigt Adminrechte)
  • Nutzt Windows-Design ("Theme") mit der Option zum Abschalten
Ab V3.2
  • Farbliche Hervorhebung von angeschlossenen und entfernten Geräten
Ab V3.3
  • Schreibt und liest XML-Report (nicht kompatibel mit USBview)
Ab V3.5
  • Kann einen vollständigen Screenshot der Baumansicht ins Windows Clipboard kopieren
Ab V3.7
  • Bessere Geräte-Namen in der Baumansicht (umschaltbar unter Options -> Device Names in Tree)

 

  Screenshots
 
USB 1.1
Hier haben wir einen alten XP-Computer der nur einen einzelnen USB 1.1 Host-Controller hat. Wie jeder USB-Host-Controller hat er genau einen USB-Root-Hub, dieser hat zwei USB-Ports.
Am Port 1 ist ein USB-Massenspeichergerät angeschlossen, dessen Laufwerk ist auf Z: gemountet.
Obwohl es ein USB-Gerät 2.0 Gerät ist, läuft es mit "Full-Speed", weil es an einen USB 1.1 Hub angeschlossen ist.
 
usbtreeview_1.png

 

USB 2.0
Hier haben wir einen Windows 7 Computer mit Intel P35 Chipsatz dessen ICH7 über einen 8-Port USB 2.0 High-Speed Controller verfügt. Die 8 physischen Ports sind hier aufgeteilt: Die logischen Ports für Low- und Full-Speed-Geräte sind auf vier USB 1.1 Controller mit je zwei Ports verteilt während die acht logischen Ports für USB High-Speed-Geräte an einem "Enhanced" Controller hängen. Warum die USB-1.1-Ports bei allen Herstellern auf mehrere Controller verteilt werden, habe ich noch nicht ergründet.
Eine Möglichkeit abzufragen, welcher USB1-Port zu welchem USB2-Port gehört, gibt es wohl nicht.
USB 2.0 High-Speed-Controller haben typischerweise das Wort "Enhanced" im Gerätenamen. Ab Vista kann man die High-Speed-Unterstützung abfragen - UsbTreeView zeigt das in den "USB Hub Capabilities" im Flag "HighSpeed".
Am Port 1 des Enhanced-Controllers ist ein USB High-Speed Hub angeschlossen, an dessen Port 4 wiederum dasselbe USB-Massenspeichergerät wie oben, dank USBDLM wieder auf Z: gemountet.
Neuere Intel-Chipsätze haben keine USB1-Hostcontroller mehr, stattdessen hat der Chipsatz USB-Standard-Hubs integriert, die ggf. von Low- oder Full-Speed auf High-Speed wandeln. Intel nennt das "Integrated USB 2.0 Rate Matching Hub".
Die große Anzahl der Ports liegt zum einen am Doppelleben der Ports und zum anderen sind oft nicht alle vom Chipsatz untersützten Ports aus dem Computer herausgeführt.
 

usbtreeview_2.png

 

USB 3.0
Hier sind wir unter Windows 8 mit einem Texas Instrumens USB 3.0 Controller TUSB7340. Windows 8 hat eingebaute Unterstützung für USB 3.0 SuperSpeed und einen erweiteten USB-Stack. Dieser liefert u.a. jetzt für jeden USB-Port dessen unterstützte Geschwindigkeit, so dass UsbTreeView hier in den Port-Icons ein 'H' für High-Speed und ein 'S' für SuperSpeed zeigen kann, auch wenn noch kein Gerät angeschlossen ist. Was leider bis heute fehlt ist die Information über die maximal unterstützte SuperSpeed-Geschwindigkeit (5, 10 oder 20 GBits/s)

Der TUSB7340 ist für vier USB3-Anschlüsse ausgelegt, in jeder Buchse ist ein physischer USB2-Port (die vier Kontakte vorn) und ein USB3-SuperSpeed-Port (die fünf innen). Die ersten vier aufgelisteten Ports sind die USB2-Ports für Low-, Full- und High-Speed-Geträte während die hinteren vier für SuperSpeed-Geräte zuständig sind.
Im Screenshot sieht man, dass der ausgewählte Port 4 die "CompanionPortNumber" 8 hat. Das heißt dass die Ports 4 und 8 zusammengehören, sich also die Buchse teilen. Der Hersteller könnte das auch anders verdrahten, aber so ist der Plan. An so einer Buchse könnte man mit einem passenden Adapter auch ein USB1/2-Gerät und ein USB3-SuperSpeed-Gerät gleichzeitig betreiben.
An einigen wenigen Computern, bei denen nur USB3-Ports herausgeführt sind, wurden die Ports so verdrahtet, dass die USB2-Kontakte einer USB3-Buchse nicht mit dem eigentlichen USB3-Controller verbunden sind sondern mit einem anderen, klassischen USB2-Controllers - so funktionieren Maus, Tastatur und USB2-Datenträger während der Installation von Betriebssystem ohne eingebaute Treiber für den neuen USB3-Controller.

 

usbtreeview_3.png

 

USB 3.0 Hub
USB3-Hubs bestehen aus zwei völlig unabhängigen Hubs, einem für USB3-SuperSpeed und einem für USB2-High-, Full- und Low-Speed.
Einzige Gemeinsamkeit ist, dass sie an "Companion-Ports" angeschlossen sind, also Ports die typischerweise im selben physischen Anschluss liegen.
Hier ist Port 20 der Companion-Port von Port 9 und umgekehrt, Port 9 ist in rot farblich hervorgehoben weil es der High-Speed-Port ist, wäre Port 9 ausgewählt wäre Port 20 in blau hervorgehoben, da SuperSpeed-Port:
 

usbtreeview_4.png
 
Ein USB3-Gerät versucht zunächst eine stabile Verbindung zum USB3-Hub aufzubauen, wenn dass z.B. wegen eines zu langen oder schlechten Kabels fehlschlägt, wird die USB2-Highspeed-Verbindung versucht, was dann meist funktioniert weil die Anforderungen an Kabel und Kontakte hier deutlich geringer sind.
 


 
  BadUSB-Geräte erkennen
 
Einfache BadUSB-Geräte melden sich als USB-Verbundgeräte, so dass sie ihre normale Funktion behalten, nebenbei aber noch etwas Böses tun. Mit UsbTreeView kann man das prüfen:

Das BadUSB-Gerät aus der von Adam Caudill und Brandon Wilson bei github.com veröffentlichten Demo sieht so aus:

      ======================== USB Device ========================

        +++++++++++++++++ Device Information ++++++++++++++++++
Device Description       : USB-Verbundgerät
Device ID                : USB\VID_13FE&PID_5201\6&1A941099&0&2
Driver KeyName           : {36fc9e60-c465-11cf-8056-444553540000}\0021
Driver                   : C:\Windows\system32\DRIVERS\usbccgp.sys
Legacy BusType           : PNPBus
Class                    : USB
Service                  : usbccgp
Enumerator               : USB
Location Info            : Port_#0002.Hub_#0006
Manufacturer Info        : (Standard-USB-Hostcontroller)
Child Device 1           : Disk drive
 Device ID               : USB\VID_13FE&PID_5201&MI_00\7&17D1C3FF&0&0000
 Class                   : USB
Child Device 2           : USB-Eingabegerät
 Device ID               : USB\VID_13FE&PID_5201&MI_01\7&17D1C3FF&0&0001
 Class                   : HIDClass
Man beachte die zwei Child Devices, zum einen das erwartete Laufwerk, zum anderen die potentiell böse USB-Tastatur.

Ein normaler USB-Stick sieht so aus:

      ======================== USB Device ========================

        +++++++++++++++++ Device Information ++++++++++++++++++
Device Description       : SanDisk Cruzer Edge
Device ID                : USB\VID_0781&PID_556B\20043514800F42F2829F
Driver KeyName           : {36fc9e60-c465-11cf-8056-444553540000}\0023
Driver                   : C:\Windows\system32\DRIVERS\USBSTOR.SYS
Legacy BusType           : PNPBus
Class                    : USB
Service                  : USBSTOR
Enumerator               : USB
Location Info            : Port_#0002.Hub_#0006
Manufacturer Info        : Kompatibles USB-Speichergerät
Child Device 1           : Laufwerk
 Device ID               : USBSTOR\DISK&VEN_SANDISK&PROD_CRUZER_EDGE&REV_1.18\123
 Class                   : DiskDrive
  Volume                 : \\?\Volume{4d513cf0-6422-11e4-86f7-001b2157a355}\
  Kernel Name            : \Device\HarddiskVolume17
  Mountpoint             : Z:\
USBDLM kann beim Anschließen einer Tastatur oder eines Netzwerkadapters fragen, ob dieser aktiviert werden soll:
https://www.uwe-sieber.de/usbdlm_help.html#badusb

 

 
  Konditionen und Download
 

Download aktuelle Version:
x64:
https://www.uwe-sieber.de/files/UsbTreeView_x64.zip
(~390KB)
Win32:
https://www.uwe-sieber.de/files/UsbTreeView_Win32.zip
(~360KB)
Download V3.0.2 (die letzte ohne RichEdit Control):
https://www.uwe-sieber.de/files/usbtreeview302.zip
(~299KB)
Download V2.6.1 (die letzte 2.x):
https://www.uwe-sieber.de/files/usbtreeview261.zip
(~273KB)
Download alte V2.0.2:
https://www.uwe-sieber.de/files/usbtreeview202.zip
(126KB)
Download alte V1.5:
https://www.uwe-sieber.de/files/usbtreeview150.zip
(96KB)

Fast alle alten Versionen stehen nach dem Schema usbtreeviewNNN.zip zum Download.

UsbTreeView ist Freeware.

Erlaubt:
- Nutzung in jeder Umgebung, auch kommerziell
- Ausliefern zusammen mit anderen Software-Produkten, auch kommerziellen
- Veröffentlichen auf CD/DVD von Computer-Zeitschriften
- Mittels Packet-Manager verteilen

Nicht erlaubt:
- Verändern von Dateien
- zum Download mittels einer "Downloader-Software" anbieten

Um Spenden bitte ich nicht, aber wer unbedingt möchte:
PayPal


 

 

 
  Verwandte Tools
 

USB-Port neu starten per Kommandozeile:
Restart USB Port

Infos über COM-Ports:
COM Port Info

Infos über Laufwerke:
USB Drive Info

 

 



 

Uwe Sieber

Home: https://www.uwe-sieber.de/deutsch.html