Вы находитесь на странице: 1из 5

UsbTreeView V2.6.1.

0 - Shows the USB Device Tree

Freeware by Uwe Sieber - www.uwe-sieber.de
Works under Windows 2000, XP and higher
UsbTreeView [/R:filename] [/L:logfile]
/R:filename write (silently) a report to filename
write a logfile for debugging in case of crash or hang (causes mas
sive slow down)
UsbTreeView is based upon the USBView sample from the Windows Driver Kit for Ser
ver 2003.
- better icons in the treeview
- refresh on device change performed asynchronously, selected item stays selecte
- shows additional information gathered from the Windows device management
- shows drive letters/mountpoints and COM ports
- can perform safe removal, device restart and port restart
- custom font and color for the right pane
- toolbar with jump-lists for easily finding devices in complex trees



first published version

works with Windows 2000 again
shows some more information about USB 3.0 devices
minor fixes
workaround for TI root hubs
device safe removal and restart, saves window position
shows driver version and date, custom font and color for the right pa
removed some redundant information
keeps tree item selection over refresh
More USB information
Extended USB information available under Windows 8
Rearranged the text output
Some minor improvements
USB enumeration rewritten; faster and independent from the treeview
Port restart
Extended host controller information
Some failed USB requests are re-tried in the background, e.g. for
nearly flicker free refresh and resize
lots of minor improvements
Bugfix: Crash on complex descriptors
Bugfix: Multiple volumes per disk not shown correctly
Bugfix: String descriptors which are referenced more than once was
shown multiple times each
Decoding of USB Video Class (UVC) 1.1 descriptors
Toolbar with jump-lists for easily finding devices in complex trees
Driveletters, COM-Ports or extended device names shown in the device

V2.1.1 - Bugfix: Crash on root-hubs which are not a child device of the host c
V2.1.2 - Bugfix: Windows 'app key' (or Shift+F10) opened the context menu in t

he wrong position
V2.1.3 - Bugfix: V2.1.2 always showed wrong error for the device's Address pro
Bugfix: Workaround for font problem
V2.1.4 - Bugfix: V2.1.3 switched back to the default font
V2.1.5 - New: Can write a report
New: Improved device names in the treeview
V2.1.6 - Bugfix: Crash on decoding USB3 standard hubs
- Bugfix: some format glitches on USB3 standard hubs
V2.1.7 - Bugfix: Decoding of bmAttributes in USB 2.0 Extension Descriptor was
V2.1.8 - Bugfix: Decoding of SuperSpeed Endpoint Companion Descriptors was don
e only for MSC devices
V2.1.8.1 - Bugfix: Crash when saving report to 'long' path
V2.1.9 - Bugfix: Crash on USB-Hubs with more than 16 Ports
- New: Commandline parameter for writing a report, e.g. /R:U:\UsbTreeVi
V2.2.0 - New: Shows some more device properties
- New: Can show the Windows device properties dialog
V2.2.1 - Bugfix: V2.2.0 worked under Windows 7 and 8 only
V2.3.0 - Bugfix: Several bugs which could cause crashes
- New: Decoding of HID descriptors
V2.3.1 - Bugfix: Font color setting was ignored
V2.3.2 - Bugfix: Device Descriptor was called Device Qualifier Descriptor and
a Device Qualifier Descriptor was not decoded
V2.3.3 - Bugfix: Crash when configuration descritor fails to be read
V2.3.4 - Bugfix: Crash with some USB over network products
V2.3.5 - New: Can save report for selected device only
V2.3.6 - Bugfix: Configuration Descriptor's bmAttributes Bit7 decoded wrong
- Bugfix: If a device's Address value is not found then it was shown as
'0', now as '-'
- New: All string descriptors shown in a separate section
- New: Hexdumps with ASCII
V2.3.7 - Bugfix: Damaged display when window is resized from top or left
- New: Safely removed devices get a green "SR" icon instead of the yell
ow error icon
V2.3.8 - Bugfix: USB Hub Descriptor's DeviceRemovable and PowerControlMask err
or shown wrong (Intel ICH6 and VirtualBox with 8 or more ports)
- Bugfix: USB SuperSpeed Hub Descriptor's DeviceRemovable was decoded f
or all ports even the USB3 spec states a maximum of 15 ports
- Bugfix: USB SuperSpeed Hub Descriptor's PowerControlMask was decoded
even it does no more exist
- Bugfix: USB Hub Descriptor's wHubCharacteristics "TT Think Time" deco
ded wrong
V2.3.9 - Bugfix: Wrong Error message about number of frame descriptors when mo
re than one Frame Based Format Type
- Bugfix: Crash when 'Audio Control Feature Unit Descriptor' bControlSi
ze is zero Descriptor
- New: Decoding of bmaControls of 'Audio Control Feature Unit Descripto
V2.4.0 - New: Decoding of MIDI descriptors
- New: On Windows before Windows 8 'H' or 'S' on port icons if High or
SuperSpeed device is attached
V2.4.1 - Bugfix: Wrong 'USB 3.0 Companion Descriptor missing' error removed
- Bugfix: Windows Version under Windows 8 and 10 correctly shown as NT
6.3 and 6.4
V2.4.2 - Bugfix: Wrong item order in the report
- New: "Copy report from here" treeview context menu
- New: Decoding of some USB 3.1 descriptors (untested)
- New: Decoding of some Wireless USB 1.1 descriptors (untested)

V2.4.3 - Bugfix: "Save Report from current Item" made a report of the selected
item only
- Bugfix: "Save Report from current Item" failed if the item name conta
ins a character which is invalid in a file name
V2.4.4 - Bugfix: Since V2.3.9 'S' and 'H' not shown on empty ports unter Win8+
V2.5.0 - New: Audio 2.0 descriptors
V2.5.1 - Bugfix: Since V2.5.0 possible crash when getting a string descriptor
V2.5.2 - New: Option to show the drive numbers in the tree, e.g. Disk3, CdRom1
V2.5.3 - New/Bugfix: USB Attached SCSI drives (UASPStor) shown with drive lett
er in the tree and in the drives combobox
V2.5.4 - Bugfix: Crash on H.264 WebCams
- Bugfix: Crash when more than 127 USB devices
- New: Reading of the Microsoft specific string descriptor 0xEE
V2.5.5 - Bugfix: Occasional crash after device safe removal or reactivation
V2.5.6 - Bugfix: String descriptors containing invalid characters where not sh
own at all
- Bugfix: Crash when more than 64 ports per hub
- New: On Windows 8 and 10 the Microsoft USB stack returns for USB devi
ces running at SuperSpeed a
Device Bus Speed of 0x02 (High-Speed). So far UsbTreeView faked
it to 0x03 (SuperSpeed) as Microsoft's USBview does.
Now the truely returned value is shown with a hint if it is not
the true speed.
V2.5.7 - New: Display SuperSpeedPlus in Connection Information V2 under Window
s 10
V2.5.8 - Bugfix: Decoding of SuperSpeedPlus descriptor and some others fixed
V2.5.9 - Bugfix: Wrong warning about characters below 0x20 in some string desc
- Bugfix: Delay on opening a Windows Device Manager device properties d
ialog removed
- New: Decoding of Microsoft string descriptor 0xEE
V2.6.0 - Bugfix: bRefresh field in endpoint descriptors of Audio 1.0 devices w
as not shown
V2.6.1 - Bugfix: Limit of 32 root hubs removed
- Bugfix: 'Other Speed Configuration' Descriptors was not read
- New: Shows progress information in the status bar, when stuck giving
a hint where
- New: Getting Microsoft String Descritor 0xEE can be deactivated becau
se it causes some devices to freeze.
If in the Registry under HKLM\SYSTEM\CurrentControlSet\Control\U
sbFlags\VVVVPPPPRRRR there is a
osvc value != 0 then UsbTreeView reads it anyway because Windows
already read it successfully.
VVVVPPPPRRRR is a 12 digit hex value containing idVendor, idProd
uct and bcdDevice from the USB Device Descriptor
- USB Video Class H.264 decoding
- Maybe Unicode support

About Unknown Descriptors

There are two reasons why decriptors cannot be decoded and therefore
shown as "Unknown":
- decoding is not implemented
- the device's InterfaceClass is 0xFF (vendor specific), so class specific
descriptors cannot be decoded since their class is unknown

So, if you have an unknown descriptor and the interface class is not 0xFF
then please let me know, maybe I find the right specification document
and can add the decoding for it.
HID descriptors usually cannot be read. Probably this is because they
must be requested from the interface rather than the device but the
choice. The parameters are ignored and filled by the USB stack:
"the USB stack ignores the value of bmRequest and inserts a value of 0x80
which indicates standard USB device request".
For most devices the result is an ERROR_GEN_FAILURE or ERROR_INVALID_PARAMETER.
But some devices return the HID descriptor anyway.

About "Safe Removal" and "Restart"

On Safe Removal UsbTreeView first calls the configuration management call
CM_Query_And_Remove_SubTree. On success the device has the problem code
21 which is CM_PROB_WILL_BE_REMOVED. A code 21 device can be reactivated
by performing a DIF_PROPERTYCHANGE class installer call. This is what
UsbTreeView does if you select "Restart device".
But CM_Query_And_Remove_SubTree needs admin previleges, otherwise it fails
with CR_ACCESS_DENIED. In this case CM_Request_Device_Eject is called
which works without admin previleges but leads to problem code 47 which
is CM_PROB_HELD_FOR_EJECT. Such a device cannot be reactivated alone.
A reactivation is possible by restarting the port or the whole hub it is
attached to. But the latter of course restarts all devices attached to
the hub.
In all cases UsbTreeView just performs the system call and shows a
message-box if Windows returns an error. But Windows does not always
return an error, even there was one, so sometimes nothing happens at all.

About "Restart Port"

This calls IOCTL_USB_HUB_CYCLE_PORT which simulates a disconnect and
reconnect of the attached device.
It is available under XP but usually only for hubs which run with the
Microsoft standard driver. 3rd party drivers usually return
Under Vista and Windows 7 it is no more supported by the Windows standard
drivers, it always fails with ERROR_NOT_SUPPORTED.
Since Windows 8 it works again but in contrast to XP admin previleges
are required. Without admin previleges it fails as under Vista and Win7
About the Debug-Port
In Microsoft's USBView sample there is a list of USB host controllers
and their debug port. I've put the table into UsbTreeView, it shows
then in the properties of the host controller a line like so:
DebugPort (from List): 1
Windows 8 has extended USB information, it reports for each port if it

is debug capable and this works indeed (seen on a i945G Chipset with ICH7).

USB Mouses
If an USB mouse is moved while the tool requests its USB properties there
is usually an error because the mouse just has more important things to
do than answering descriptor requests. UsbTreeView tries then for some
seconds to get this information.
You might see the yellow question mark at the mouse's tree node for a
moment which disappears as soon as you stop moving the mouse.
This retry mechanism is done for all type of devices but usually its a
mouse where it helps.
Information shown in the tree-view
UsbTreeView is optimized for speed, therefore USB descriptors are not
gathered before a device is selected in the tree-view. So, information
which come from USB descriptors cannot be shown in the tree-view, it
all comes from the Windows device manager.
This is also why creating a full report takes a moment.

Uwe Sieber, mail@uwe-sieber.de

Feb 2016