SourceQuest
bringing hardware & software together
SourceUSB Overview
A Host Side USB Analyzer
SourceUSB is a software-only USB analysis tool. It is installed on a Windows operating system as a kernel-mode driver and user-mode application. The analyzer driver coexists with the Windows USB driver stack. Since USB is a host driven bus, viewing USB activity from the host perspective is a valuable complement to viewing USB transactions on the bus with a hardware analyzer.
Easy Installation and Setup
SourceUSB installs easily from a Windows Installer package. Separate packages are supplied for 32-bit and x64 platforms. It does not require any changes to existing drivers to benefit from its use.
Logging and Real-Time Display
SouceUSB records USB I/O requests and events in a binary log file and displays them in real-time. Requests and events can be logged from the time the system boots or logging can be easily started and stopped using keyboard shortcuts or menu commands. Filters can be applied to control the amount and type of information which is captured or displayed. All transactions are time-stamped to aid in performance analysis.
Capture Categories
SourceUSB logs the initiation, completion, and pending status of several types of USB I/O requests and function calls which are summarized below:
| URB | URB Request |
| MPORT | Miniport-Usbport Interface |
| IHUB | Hub-Usbport Interface |
| USBINT | USB Internal Ioctl |
| PNP | PnP Request |
| PWR | Power Request |
| HUB | Hub Ioctl Request |
| HCD | Host Controller Ioctl Request |
| HID | HID Ioctl Request |
Captured Details
SourceUSB allows you to examine each I/O request or event in detail. For example, the fields in setup packets, URBs, and descriptors are displayed and annotated. The request, response, and pending phases of each I/O request are displayed separately with the completion status.
Total Enumeration
SourceUSB can combine four levels of capture information to give you the most complete view of the host enumeration process.
- All URBs (USB Request Blocks) for the device of interest are logged
- Hub-class specific URBs for the hub port state changes can be captured
- Hub-to-usbport interface function calls can be captured, to track the phases of enumeration
- Miniport-to-usbport function calls can be captured for low level details at the host controller and endpoint 0 requests that do not use URBs.
Export Logs to XML
Log files can be exported as XML for detailed analysis with other tools or custom XML parsers. XML or HTML reports can also be generated for a device's properties including their descriptor sets.