USBStress is the combination of a user-mode application (usbstress.exe) and driver installation package for the kernel-mode driver, usbstress.sys.
Those files are included in the MUTT Software Package.
USBStress is a set of tests focused on the entire USB driver stack and the USB Generic Parent Driver (Usbccgp.sys), and controller and its upstream hubs. USBStress randomly chooses the tests and configures the attached test devices. Due to the random nature of the tests, we recommend that you should run USBStress over a 24 hour time period to allow more test combinations.
The tool performs control, bulk, isochronous, data transfers of various transfer lengths to and from the test device. For a SuperMUTT device, USBTCD transfers data to streams supported by a bulk endpoint.
The USBStress driver is largely self-driven, that is, most I/O requests are generated by the driver and not the application. The driver uses timers and work items to generate I/O and perform other operations. The driver checks the registry to determine whether it should run its tests. An external program sets that registry key. The goal of this driver is to create as much concurrency as possible among various operations to flush out race conditions and synchronization issues.
This list summarizes the tests that USBStress performs:
- Selective suspend with remote wake-up.
- Concurrent read/write requests on bulk, interrupt, and isochronous endpoints and cancellation.
- Concurrent strings transfer requests and cancellation.
- Concurrent abort pipe on bulk endpoints and cancellation .
- Random reset to surprise-remove and re-enumerate.
- Random reset to surprise-remove and re-enumerate and fail the re-enumeration.
- Randomly select an available alternate interface .
- Randomly instruct the device to stall every nth control transfer .
- Randomly instruct the MUTT Pack (if connected) to disconnect VBUS from the exposed downstream port.
- Randomly instruct the MUTT Pack (if connected) to simulate an over-current condition on the exposed downstream port .
- Randomly instruct the MUTT Pack (if connected) to perform a hardware reset on the hub.
To install the usbstress.sys driver for the MUTT device, use MuttUtil with the
c:\Program Files (x86)\USBTest\x64>MuttUtil.exe -UpdateDriver usbstress.inf Return value: 0 c:\Program Files (x86)\USBTest\x64>MuttUtil.exe -list : : HARDWARE ID : PROBLEM CODE : DRIVER DEVICE : 0 : USB\VID_045E&PID_078E&REV_8011 : 0 : USBSTRESS Return value: 1