diff --git a/tools/usbtreeview/UsbTreeView.txt b/tools/usbtreeview/UsbTreeView.txt new file mode 100644 index 00000000..9f5af434 --- /dev/null +++ b/tools/usbtreeview/UsbTreeView.txt @@ -0,0 +1,168 @@ + +UsbTreeView V2.3.1.0 - Shows the USB Device Tree +Freeware by Uwe Sieber - www.uwe-sieber.de + +Works under Window 2000, XP, and higher + +Usage: +UsbTreeView [/R:filename] + +/R:filename write (silently) a report to filename + + + +UsbTreeView is based upon the USBView sample from the Windows Driver Kit for Server 2003. + +Improvements: +- better icons in the treeview +- refresh on device change performed asynchronously, selected item stays selected +- 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 + +History +V1.1 - first published version +V1.2 - works with Windows 2000 again +V1.3 - shows some more information about USB 3.0 devices +V1.3.1 - minor fixes +V1.3.2 - workaround for TI root hubs +V1.4.0 - device safe removal and restart, saves window position +V1.4.1 - shows driver version and date, custom font and color for the right pane, + removed some redundant information +V1.4.2 - keeps tree item selection over refresh +V1.5.0 - More USB information + - Extended USB information available under Windows 8 + - Rearranged the text output + - Some minor improvements +V2.0.0 - 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 + mouses + - nearly flicker free refresh and resize + - lots of minor improvements +V2.0.1 - Bugfix: Crash on complex descriptors +V2.0.2 - Bugfix: Multiple volumes per disk not shown correctly + - Bugfix: String descriptors which are referenced more than once was + shown multiple times each +V2.1.0 - 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 tree +V2.1.1 - Bugfix: Crash on root-hubs which are not a child device of the host controller +V2.1.2 - Bugfix: Windows 'app key' (or Shift+F10) opened the context menu in the wrong position +V2.1.3 - Bugfix: V2.1.2 always showed wrong error for the device's Address property + 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 wrong +V2.1.8 - Bugfix: Decoding of SuperSpeed Endpoint Companion Descriptors was done 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:\UsbTreeView-Report.txt +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 + +ToDo: +- USB Video Class H.264 decoding +- Maybe Unicode support if someone shows me that it is required + + + +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. + +For an unknown reason HID descriptors often cannot be read, Windows +returns ERROR_GEN_FAILURE or ERROR_INVALID_PARAMETER. As far as I have +seen it depends alone on the device but another user reported that +some device's hid descriptor can be read under NT6 but not under NT5. + + + +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 default driver. 3rd party drivers usually return +ERROR_UNKNOWN_FUNCTION. +Under Vista and Windows 7 it is no more supported, it always fails +with ERROR_NOT_SUPPORTED. +With Windows 8 it works again but in contrast to XP admin previleges +are required. Without admin previleges it fails as under Vista and Win7 +with ERROR_NOT_SUPPORTED. + + +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. UsbTreeView tries then for some seconds to get this information. +You might see the yellow question mark at your mouse 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 devices manager. + + + + +Uwe Sieber, mail@uwe-sieber.de +2013-10-14 + + diff --git a/tools/usbtreeview/Win32/UsbTreeView.exe b/tools/usbtreeview/Win32/UsbTreeView.exe new file mode 100644 index 00000000..2df3ddff Binary files /dev/null and b/tools/usbtreeview/Win32/UsbTreeView.exe differ diff --git a/tools/usbtreeview/x64/UsbTreeView.exe b/tools/usbtreeview/x64/UsbTreeView.exe new file mode 100644 index 00000000..ffebcfa6 Binary files /dev/null and b/tools/usbtreeview/x64/UsbTreeView.exe differ