USB Device Tree Viewer V2.6.1
 
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 in einer aktualisierten Version jetzt auch einzeln: USBView sample application
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.

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
  • Hintergrundfarbe und Schriftart der Textansicht rechts können eingestellt werden (in den Screenshots wurde DOSLike 7 genutzt)
  • Textausgabe z.T. neu gruppiert
  • Auswahl im TreeView bleibt über Refresh hinaus erhalten
  • Zusätzliche Descriptoren werden dekodiert, u.a. UVC 1.1
  • Hexdump der Descriptoren kann angezeigt werden
  • Erweiterte USB-Infos unter Windows 8 (aus der aktuellen USBView Beispielanwendung übernommen)
  • Erweiterte Informationen zu Host-Controllern und Root-Hubs
  • Enumeration der USB-Geräte beschleunigt und im Hintergrund, unabhängig vom Füllen des TreeViews
  • 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)
  • u.v.a.
Todo:
  • USB Video Class H.264 Informationen die Microsofts aktuelles USBView zeigt

 

  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 Ports 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.
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 das selbe USB-Massenspeichergerät wie oben, dank USBDLM wieder auf Z: gemoutet.
Neuere Intel-Chipsätze haben keine USB1-Hostcontroller mehr, stattdessen hat der Chipsatz zwei USB-Hubs integriert, die ggf. von Low- oder Full-Speed auf High-Speed wandeln. Intel nennt das "Integrated USB 2.0 Rate Matching Hub".
 

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.

Der TUSB7340 hat vier physische Ports und acht logische: Die ersten vier logischen Ports sind 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 den selben physischen Port teilen. Bei USB 2.0 gab es noch keine Möglichkeit das abzufragen.
 

usbtreeview_3.png

 


 
  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 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:
http://www.uwe-sieber.de/usbdlm_help.html#badusb

 

 
  Konditionen und Download
 

Download aktuelle Version:
http://www.uwe-sieber.de/files/usbtreeview.zip
(~273KB)
Download V2.4.4:
http://www.uwe-sieber.de/files/usbtreeview244.zip
(220KB)
Download alte V2.0.2:
http://www.uwe-sieber.de/files/usbtreeview202.zip
(126KB)
Download alte V1.5:
http://www.uwe-sieber.de/files/usbtreeview150.zip
(96KB)

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

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


 

 



 

Uwe Sieber

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