MuttUtil
MuttUtil performs various tasks on MUTT devices.
- Updates the firmware of the test devices.
- Installs drivers for MUTT devices.
- Verifies that the devices are installed without errors.
- Changes the operating bus speed of the device.
- Configures the device to send a resume wake signal after a specified time period.
- For the MUTT Pack, it sets the hub to operate at full or high speed; as a single-TT or multi-TT hub.
MuttUtil is embedded in the installation section of the included test scripts to ensure that the test device is properly upgraded to latest firmware. The tool is included in the MUTT Software Package.
Note
Use CMUTTUtil.exe for CMUTT (SuperMUTT) devices. For example, run CMuttUtil.exe -updatefirmware
to update the image on the CMUTT. CMuttUtil.exe can be installed from the MUTT software package described in Overview of Microsoft USB Test Tool (MUTT) devices. For details, see TypeCSuperMUTT.pdf in the installation folder.
How to run MuttUtil
MuttUtil Help
Run the following command to get a list of command-line options:
MUTTUtil.exe
Finding all MUTT devices attached to the system
MUTTUtil.exe -list
: : HARDWARE ID : PROBLEM CODE : DRIVER
DEVICE : 0 : USB\VID_045E&PID_0611&REV_0034 : 0 : WINUSB
DEVICE : 1 : USB\VID_045E&PID_078E&REV_8011 : 28 :
Return value: 1
The preceding command indicates that the system has a SuperMUTT (1) and a MUTT Pack (0) attached. The Microsoft-provided kernel mode driver, Winusb.sys, is the function driver for the SuperMUTT device. For information about Winusb.sys, see Introduction to WinUSB for Developers.
PROBLEM CODE 28 for the MUTT Pack device indicates that no driver is loaded for the device.
Change the personality of a MUTT device
MUTT devices are also used as test devices for the USB UWP app sample. For that scenario, the firmware must be updated by running the -SetWinRTUsb
option. In this exercise, SuperMUTT device is set to WinRT personality.
To change it back to MUTT personality, use this command:
MuttUtil.exe -# 1 -MuttPersonality
c:\Program Files (x86)\USBTest\x64>MuttUtil.exe -MuttPersonality
Looking for MUTT devices
Send command to change device personality
Return value: 0
c:\Program Files (x86)\USBTest\x64>MuttUtil.exe -list
: : HARDWARE ID : PROBLEM CODE : DRIVER
DEVICE : 0 : USB\VID_045E&PID_078F&REV_0034 : 0 : WINUSB
Return value: 1
Notice that the hardware ID is changed to USB\VID_045E&PID_078F&REV_0037. The revision version indicates the firmware version number.
Installing a driver for a MUTT device
Specify the INF file for the driver that contains installation information. For example,
MUTTUtil.exe -UpdateDriver USBTCD.inf
c:\Program Files (x86)\USBTest\x64>MuttUtil.exe -UpdateDriver USBTCD.inf
Return value: 0
c:\Program Files (x86)\USBTest\x64>MuttUtil.exe -list
: : HARDWARE ID : PROBLEM CODE : DRIVER
DEVICE : 0 : USB\VID_045E&PID_078F&REV_0034 : 0 : USBTCD
Return value: 1
The preceding command replaces the existing driver with the specified USBTCD.sys driver. The driver is included in the MUTT Software Package.
If you have multiple MUTT devices attached, you can update the driver simultaneously.
MUTTUtil.exe -# 0 -# 1 -MultiUpdateDriver USBTCD.inf usbfx2.inf
The preceding command installs USBTCD.sys for device 0, Winusb.sys for device 1, and so on.
Updating the firmware on a MUTT device
MuttUtil.exe -UpdateFirmware
c:\Program Files (x86)\USBTest\x64>MuttUtil.exe -UpdateFirmware
Looking for MUTT devices
0: Updating device firmware from version 34 to version 37
Erasing EEPROM -- this takes approx 30 seconds
Writing core firmware image
Writing Table at sector 0x09
Writing Table at sector 0x0A
Writing Table at sector 0x0B
Writing Table at sector 0x0C
Writing Table at sector 0x0D
Writing Table at sector 0x0E
Writing Table at sector 0x0F
Writing Table at sector 0x10
Writing Table at sector 0x08
0: Resetting device
Return value: 0
c:\Program Files (x86)\USBTest\x64>MuttUtil.exe -list
: : HARDWARE ID : PROBLEM CODE : DRIVER
DEVICE : 0 : USB\VID_045E&PID_078F&REV_0037 : 0 : USBTCD
Return value: 1
The command updates the EEPROM with firmware only if the version in the device is old. The firmware image is embedded in the tool. If the device has newer version than the firmware installed by the tool, it doesn't replace the firmware in the device. If you want to replace the firmware in the device regardless of the version, run MuttUtil with the -ForceUpdateFirmware
option instead.
Another way of updating the firmware is by writing it to the EEPROM or RAM directly. This option requires that you have the firmware file.
To erase EEPROM, use the -EraseEEPROM
option
Disconnecting, reconnecting, and re-enumerating the device
MuttUtil.exe -Reconnect
MuttUtil.exe -CyclePort
The preceding command causes the device to disconnect and then reconnect on the same port.
The -CyclePort
option causes the device to disconnect and connect back to the port, except the device isn't disconnected electrically. The device is disconnected and reconnected in software. This operation leads to device reset and the PnP Manager rebuilds the device node.
To reset the hub of a MUTT Pack or a SuperMUTT Pack device, use this command:
MuttUtil.exe -# 1 -ResetHub
Changing the speed of the device
You can change the device speed of MUTT devices by using this command:
MuttUtil.exe -# 0 -SetFullSpeed
MuttUtil.exe -# 1 -SetHighSpeed
The command causes the device to disconnect and then reconnect on the same port at the specified speed.
If you want to change the speed of the hub, of a MUTT Pack or SuperMUTT Pack, to operate in full speed mode, use the -HubFS
command:
MuttUtil.exe -# 1 -HubFS
Sending a resume signal to wake up the system
Typically, the device (in low power) sends a resume signal upon certain user action. You can simulate that behavior by using this command:
MuttUtil.exe -WakeAfterSuspend 5000
The command configures the device to send a resume signal, 5 seconds after the bus suspends.
You can also configure the device to disconnect and reconnect in a certain period of time after the bus suspends by using the -DisconnectAfterSuspend
option.
Setting and clearing overcurrent on the port downstream port - MUTT Pack and SuperMUTT Pack
These commands set and clear the overcurrent pin for the exposed port of the Mutt-Pack.
MuttUtil.exe -# 1 -SetOvercurrent
MuttUtil.exe -# 1 -ClearOvercurrent
Converting the hub to a TT high speed hub - MUTT Pack and SuperMUTT Pack
You can set the hub to operate as a multi-TT high speed hub or a single-TT high speed hub by using these commands:
MuttUtil.exe -# 1 -HubHSMultiTT
MuttUtil.exe -# 1 -HubHSSingleTT