SourceQuest
bringing hardware & software together
Change History
Release 3.2.0 (12-February-2010)
These are the highlights of features added in release 3.2:
- Support for Windows 7
SourceUSB now supports Windows 7:- Minor application changes were made to make SourceUSB "Windows 7 Ready".
- O/S specifc USB driver stack structures have been updated for Win7.
- DIFx installer components have been updated to v2.1 for Win7.
- Driver build now uses Windows Driver Kit 7600.
- Support for Vista SP2
SourceUSB now supports Windows Vista Service Pack 2:- O/S specifc USB driver stack structures have been updated for Vista SP2
- New Win7 Hub Interface functions
Windows 7 has introduced new functions at the Hub Bus Interface (USB_BUSIF_HUB_VERSION_7). These are now logged by SourceUSB:- CreateUsbDeviceV7
- GetContainerIdForPort
- SetContainerIdForPort
- AbortAllDevicePipes
- SetDeviceErrataFlag
- New Win7 Miniport functions
Windows 7 has introduced new functions at the Miniport Interface. These new functions are now logged by SourceUSB:- GetHcCapabilities
- USBPORTSVC_EtwWrite
- Support for Broadband Stick Modems
USB Broadband Modems are initially enumerated as Mass Storage Class devices that then re-enumerate as Communication Class devices using the drive installation contents. This release fixes some plug-and-play issues that prevented SourceUSB from tracing the double enumeration sequence.
- Enhanced Application and Driver Diagnostics
SourceUSB's Help menu has added commands for enabling and saving a driver diagnostics file. The SourceUSB application also now registers as an event provider with Event Tracing for Windows. These enhancements will help with customer support.
Release 3.1.0 (15-August-2009)
These are the highlights of features added in release 3.1:
- Mass Storage Class, Bulk-Only Transport
The Bulk-Only Transport, used by flash drives, external hard disks and DVD players, etc., is now decoded:- All fields of the Command Block Wrapper (CBW) are decoded in the Log Details pane.
- All fields of the Command Status Wrapper (CSW) are also decoded in the Log Details pane.
- Log View Columns for CBW and CSW
New Log View columns make it easy to locate command and status URBs.- The CBW column contains the unique tag value and operation code for bulk transfer URBs which carry a Command Block Wrapper.
- The CSW column contains the unique tag value (which matches the paired CBW) and status for bulk transfer URBs which carry a Command Status Wrapper.
- Decoding of SCSI Command Descriptor Blocks (CDBs)
SourceUSB now decodes Command Descriptor Blocks of 109 SCSI operation codes carried by CBWs.- CDBs from the SPC-2, MMC-5, and RBC command sets are decoded.
- The decoded fields for each CDB are displayed beneath the CBW in the Log Details pane.
- Display of Class Specific Requests Embedded in Vista Control
Transfer URBs
There are many URBs which are used to send control transfers, which potentially carry class specific requests that SourceUSB decodes.- In this release URB_FUNCTION_CONTROL_TRANSFER_EX is added.
- Setup packets in these control transfers are also now decoded by class.
- New Documentation on Some Advanced User Interface
Features
The User’s Guide has been updated with more complete documentation on the advanced user interface capabilities:- Description of window pane pinning and unpinning behavior.
- Use of the Ctrl+Tab shortcut to get the window selector popup.
- A sample window layout for optimum Log View browsing.
- Restructuring of the Analyzer Driver
The analyzer driver has undergone fundamental refactoring of some internals, for improved maintainability and stability.
- Bug Fixes
- Under some circumstances a "dangling reference" to a removed device could cause a BSOD.
Release 3.0.1 (14-November-2008)
In this release, the following bug fixes were made:
- Host Controller Hot Plug - crash from hot-plug of PC Card and ExpressCard - PCI Express host controller cards; this also applies to devices which are hosted on host controller cards, e.g. Sierra Wireless aircard; host-controller can be disabled and re-enabled from device manager without hanging application.
- Registry Repair - registry repair after a program crash could cause application hang;.
- Minidump File Overwritten - multi-exception crash could cause minidump files to be overwritten; now each exception has a unique minidump file named sqdXXXX.dmp
- Multiple Driver Nodes with Same Name - Drivers Tab now displays driver object addresses for each driver node; helps distinguish multiple Driver nodes with same name.
Release 3.0.0 (11-June-2008)
These are the highlights of features added in release 3.0:
- Windows x64 Support
Both x86 and x64 setup programs are now included in each release. Supported x64 platforms include:- Windows XP/x64
- Windows Server 2003/x64
- Windows Vista/x64
- Capture File Restructured
As in previous versions, SourceUSB captures a log of events in a binary ".srcusb" file. The internal structure of the capture file has been modified to be portable between x86 and x64 platforms. For example, you can capture a trace using SourceUSB-x64 on Vista/x64 and subsequently view it using SourceUSB-x86 on Windows XP/x86.
- Upgrade to Visual Studio "Whidbey Style"
SourceUSB's user interface has been redesigned with the robust and versatile Codejock Xtreme Toolkit. In this release, SourceUSB has incorporated their Docking Pane and Property Grid features:- Panes can be docked, floated or combined in a tabbed window
- Panes can be pinned or can auto-hide
- Layout is saved and restored on program close and open
- Property Grids provide compact display of two column data
- Property Grids come with dedicated toolbars
- Replacement of Details Pane with multiple property grids
In previous versions, the “Details Pane” contained a mini-browser window that rendered dynamic HTML content to display details relating to a selected log record, device properties and USB descriptors for a selected device tree node, or properties for the system as a whole. To make all of this information accessible at the same time, three new property grids are used:- Log Details - shows detailed information for selected log records in the listview
- Device Properties - shows PnP properties and descriptors for selected nodes in the device tree
- System Properties - shows properties for the system as a whole
- Logging Irp dispatch return status
Previously, two states were logged for each Irp (I/O Request Packet), “initiated” when the Irp is sent down a device stack, and “completed” when the Irp completion routine is called by I/O Manager. In this release, a third state is logged for each Irp, its “return” state. This log entry is generated at the return from a dispatch routine. This log record reveals asynchronous Irps when the return status is STATUS_PENDING.
- Large buffer support
Previously, data capture was limited to either 8, 64, or 64K bytes per URB transfer. This meant that no more than 64K bytes of a transfer could be captured. In this release, several higher capture limits are allowed: 256K, 512K, 768K, and 1024K. The larger transfers are captured using additional 64K capture buffers. Each additional capture buffer adds another log record.
- Enhanced support for Isochronous/Interrupt transfers
The following endpoint characteristics are now decoded:- Additional transactions per microframe (high-bandwidth)
- Effective maximum packet size (up to 3K/microframe)
- Isochronous Usage Type
- Isochronous Synchronization Type
- bInterval is interpreted depending on endpoint type
- Counts of zero-length and error packets per Isochronous URB transfer are displayed as a column in the Log ListView and in the Log Details Pane.
- Compatibility with latest service packs
SourceUSB has been tested with the following recent service packs:- Windows XP Service Pack 3
- Windows Vista Service Pack 1
Release 2.1.1 (5-December-2007)
In this release, the following bug fixes were made:
- Installer error - Repaired installer error which displayed a message box with "Failed to move MSI package to cache" and terminated.
- Boot logging - When starting SourceUSB after reboot (with boot logging enabled), new log records start at sequence number 0. This is now fixed so that subsequent record numbers are consecutive with earlier collected records.
- Log enable reset - Rarely, the log enable for a device object could be reset during a capture session in response to a PnP event.
- Log enable cleared - Sometimes logging enable (device tree checkbox) for a device would be cleared when starting capture.
Release 2.1.0 (28-April-2007)
These are the highlights of features added in release 2.1:
- Miniport-Usbport interface logging for Vista
This release supports logging of direct function calls between the miniport driver (EHCI, UHCI, OHCI) and the Usbport driver in Windows Vista.
- Support 11 new Usbport-Miniport interface functions for Vista
This release includes support for new interface functions introduced in Windows Vista Build 6000: ReleasePortControl, ReadConfigFlag, SetWakeOnConnect, InterruptDpcEx, NotifyTransferQueueState, CheckHwSync, USBPORTSVC_RequestAsyncCallbackEx, USBPORTSVC_CancelAsyncCallback, DbgFreeEndpoint, HaltController, and Get32BitMicroFrameNumber.
- Support 8 new USB internal ioctl requests for Vista
This release includes support for new USB internal ioctls introduced in Windows Vista Build 6000: IOCTL_INTERNAL_USB_RECORD_FAILURE, IOCTL_INTERNAL_USB_GET_DEVICE_HANDLE_EX, IOCTL_INTERNAL_USB_GET_TT_DEVICE_HANDLE, IOCTL_INTERNAL_USB_GET_TOPOLOGY_ADDRESS, IOCTL_INTERNAL_USB_NOTIFY_IDLE_READY, IOCTL_INTERNAL_USB_REQ_GLOBAL_SUSPEND, IOCTL_INTERNAL_USB_REQ_GLOBAL_RESUME, and IOCTL_INTERNAL_USB_GET_DEVICE_CONFIG_INFO.
- Support 2 new URBs for Vista
This release includes support for new URBs introduced in Windows Vista Build 6000: URB_FUNCTION_SET_PIPE_IO_POLICY, URB_FUNCTION_GET_PIPE_IO_POLICY.
- Support 15 new Hub-Bus interface functions for Vista
This release includes support for new Hub-Bus interface functions introduced in Windows Vista Build 6000: CreateUsbDeviceEx, InitializeUsbDeviceEx, HubIsRoot, AcquireBusSemaphore, ReleaseBusSemaphore, CalculatePipeBandwidth, SetBusSytemWakeMode, SetDeviceFlag, HubTestPoint, GetDevicePerformanceInfo, WaitAsyncPowerUp, GetDeviceAddress, RefDeviceHandle, DerefDeviceHandle, and SetDeviceHandleIdleReadyState.
- Delta Timings are now displayed
Log View can now display performance timing as a time difference between adjacent log entries.
- Device Reports in HTML
HTML is now an export option for Device Reports. This allows quick capture of device and system configurations as an easily viewable report.
- Raw Descriptor Display
In addition to the decoded descriptor display, the DataBar will now show the raw bytes of the descriptor block.
- 3 new reference guides have been added to the help system
New reference guides have been added including: USB internal ioctl (USBINT) reference, Hub-Bus interface (IHUB) function reference, and Miniport-Usbport interface (MPORT) function reference.
- Extended context sensitive help for trace records
The Details Pane and Log View can supply help on a specific record (e.g. USBINT request). In this release, the new reference guides provide links to USBINT, IHUB, and MPORT trace records.
- Enhancements and bug fixes
Many bug fixes and enhancements have been made, these include:- SourceUSB application now uses shared libraries to reduce file size.
- Improved tracking of PipeHandles on transfers including the NULL handle for the default endpoint.
- Improved tracking of configuration/interface/endpoint on transfers:
- Early capture of device handle, interface, configuration data.
- Use Setup Packet information from CONTROL_TRANSFER_EX urbs.
- Bug fix: Detect bogus non-zero DeviceHandle values which would sometimes prevent a device from being properly recognized by the Analyzer Driver.
- Bug fix: SET_POWER filter was not working, now corrected.
- Bug fix: Repaired validation errors in the MSI installer.
- Bug fix: Emptying "local temp" directory could break SourceUSB uninstall; MSI file is now cached to a sub-directory of "\WINDOWS\Downloadable Installations".
Release 2.0.1 (9-December-2006)
This is a bug fix release following Windows Vista RTM.
See SourceUSB 2.0.1 Release Notes
for details.
Release 2.0.0 (3-July-2006)
These are the highlights of features added in release 2.0:
- Host Controller Logging: Hub Interface
This release includes complete logging of hub driver support functions supplied by the Usbport driver in Windows XP and newer. Functions in this group are called in response to hub events on a device plug-in or an unplug. These include functions such as CreateUsbDevice, InitializeUsbDevice, and RemoveUsbDevice. - Host Controller Logging: Miniport Interface
This release includes logging of direct function calls between the miniport driver (EHCI, UHCI, OHCI) and the Usbport driver in Windows XP and newer. Functions in this group are a common API for all host controllers. These functions fall into several categories: controller state, end point operations and state, queueing and completing transfer descriptors to endpoints, root hub state and port control, and various utility functions. Logging these functions reveals how URBs ultimately become transfer descriptors which are queued and completed. But more importantly, it reveals transfer descriptors which have no URB or Irp associated with them, some of these are the hidden transactions performed during early phases of enumeration. - Windows Vista support
This release includes preliminary support for Windows Vista based on testing with Beta 2 (Build 5384). Host Controller logging at the Hub Interface is supported but not at the Miniport Interface. Support for Miniport Interface logging will be added when Vista is finalized. Support for the CONTROL_TRANSFER_EX URB is included. - Windows 2000 Undocumented URBs
This release includes decoding and logging of several Windows 2000 undocumented URBs. One of these undocumented URBs makes it possible to see early stages of enumeration on Windows 2000 platforms. - Context Sensitive Help for Trace Records
This release links User's Guide topics to help buttons on Configuration Options, Find, Filter Definition, and Trigger Definition dialogs. The main windows have "Help" on their Context Menus. The Details Pane and Log View can supply help on a specific record (e.g. URB function). In this release, links to an URB Reference are included. - Bug fixes
many bug fixes have been made including fixes for SQReport crashdumps we have received from customers and trial users.
Release 1.2.0 (26-September-2005)
These are the highlights of features added in release 1.2:
- Contiuous logging - logging can now continue non-stop by
wrapping to the alternate buffer once the active buffer fills.
Logging can be stopped manually using the toolbar or menu.
Logging can also be stopped by a trigger.
- Capture triggering - a trigger can be defined which consists
of a combination of: request type, request status, started or completed
status, and data direction. Defined triggers can be named and saved for
later recall.
- Background logging - in previous versions, log records were
displayed as they were received; this is still available as the default
'real-time" logging. For devices with high throughput, a "real-time"
display can not keep up. For this scenario, logging is best performed
"silently" in the background until manually stopped or a trigger
is encountered.
- Sequence tagging - log records have been
numbered sequentially in all versions of SourceUSB. In previous versions,
two different streams of data from the analyzer driver were combined, so
it was not possible to detect dropped data from the sequence numbers. In
this release, the data streams have been separated. This makes it possible
to detect records which arrive out-of-sequence. At the end of each log
session, a warning is given if any out-of-sequence records were detected.
Out-of-sequence records are highlighted in red in the log view. Seeing
out-of-sequence records when "real-time" logging is a hint that background
logging would be more appropriate.
- New context menu commands - in the log view,
every log record has a performance counter value stored with it and these
are used to compute the elapsed time. Any record can be designated as
"time 0" using the "Time Origin" menu command. The default units for
elapsed time are seconds but context menu commands have been added for
selecting seconds, milliseconds, or microseconds.
- Auto-sizing of log view columns - two
methods are provided to size the columns of the log view. The first is
an auto-sizing that sets some columns to a fixed width and other columns
shrink or expand in proportion to the overall size of the client window.
The second method is a context menu command to resize columns to "best fit"
the displayed data. Log view columns can be removed and added back as well
as rearranged. Your arrangement is saved on exit from the application
and restored next time SourceUSB is launched.
- Windows Installer - the new SourceUSB
installation package is a "wrapped" MSI file. In older releases,
problems would occur if a previous installation was not completely
removed before installing a new version. The new installer accurately
detects previous installations of SourceUSB and prevents any attempt to
install over an incompletely removed instance. The new "repair" function
allows "in-place" refresh of package components. Installation is for all
machine users, while it was for a single-user in previous versions.
- User-interface improvements - tooltips for
menu items and toolbar buttons also display short cut keystrokes. Status
bar indicators are provided for continuous logging, trigger active, filter
active, and capture in progress. For background logging, a pair of
progress bars show the fill level of each capture buffer.
- Bug fixes - many bug fixes have been made
including fixes for SQReport crashdumps we have received from customers
and trial users.
Release 1.1.0 (23-July-2004)
These are the highlights of features added in release 1.1:
- New Data bar - a separate dockable, scrollable data window
for viewing transfer buffers up to 64 Kbytes transfer size
- Capture filtering - use filters to limit capture of log
records
- Max log size increased - logging buffer size is now selectable
from 1, 5, 10, 50, or 100 Megabytes
- Export log data as XML - capture buffers and existing logfiles
can be exported as XML files; the exported data follows a defined schema; a sample
XSL stylesheet illustrates how to scan log records
- Export device report as XML - a new report has been created
which pulls together many device characteristics into a single document; this report
has a defined schema and a sample XSL stylesheet
- Relaxed trial limits - capture buffer size increased to
256 Kbytes; no limit on transfer buffer sizes
- Log file schema enhanced - logging settings, filter settings,
timestamp, Windows platform string now included
- Crash recovery improved - application crash recovery is
more robust and includes reseting the analyzer driver and auto-generation of problem
reports by SQReport.exe for emailing to sqsupport@sourcequest.com
- Bug fixes - many bug fixes have been made including corrections
to pipe information, end point direction, configuration value; for more details
see the release notes.