Introduction

This document shows step-by-step how to decode USB transfers associated with higher-level protocols than USB. As a pre-requisite it is assumed that the reader is familiar with the CATC Trace viewer software and is able to set the display to the transfer level.

Hub Decoding

The 'trick' is to tell the software which device address was assigned to the Hub, this is likely to be Address 1, assuming that it is the first device connected to the host and nothing else has been connected to the same port since start-up before the hub. Selecting the decode-totransfer level, then just after the hub has been enumerated you will see some control packets to that device address with bRequest fields.

If you left-click the control packet and select the option Map Request Recipients to Class/Vendor Decoding you can assign the device to a class and the endpoint to a control function:

Now click Endpoints and assign the hub endpoint to the hub control:

I have assigned the other endpoints in the trace to other standard USB functions so they will be decoded too.

Note: You need to select the address/endpoint and the decode type and press assign – BEFORE selecting OK or Apply.

When successfully decoded then hub events will be decoded further like this:

This is a USB1.1 hub connected to a USB2.0 hub connected to a USB2.0 host. Packet 36 the host asks the USB2.0 hub (address 1) for the port#1 status (this is from the map endpoint decoding) as the USB1.1 device is Full speed Transfer 37 is shown as a FullSpeed Transaction over a Highspeed link.

Transfer 38 is expanded to show that the USB2.0 hub is doing a store and forward using the USB2.0 split transaction system. Transaction 198 is the Host PC asking the USB2.0 hub to perform a FullSpeed IN on port#1, this was recorded on the Highspeed channel. The classic speed channel was connected to port#1 of the usb2.0 hub so the merged trace shows Transaction 199 as Full speed and we see the packets were recorded on channel 1 not channel 0. After this the host polls the usb2.0 hub to see if the FS transaction has been completed and when it has been completed, it pulls up the data across the HS link.

Mass Storage Decode

Just after the enumeration of a Mass storage device, left click the control or Bulk packet cell header associated with the mass storage device. If you click in the right place the menu will offer you the ‘Map Endpoints to Class/Vendor Decoding’. Select this to assign the endpoint decoding.

Next on the dialog select Mass storage decode from the drop down list and assign it to the endpoint. On the Endpoint tab you will need to assign the appropriate mass-storage IN or OUT decode to the In or Out endpoint. In general, this will be the SCSI Bulk format unless it is a USB floppy in which case the UFI is more appropriate.

Similarly on the Request Recipients tab the device address can be assigned to the Mass Storage Bulk Class.

Note: You need to select the address/endpoint and the decode type and press assign – BEFORE selecting OK or Apply.

If the assignment is correct the transfer level display will change from:

to:

PTP Decoding

Just after the enumeration of a Picture Transfer Protocol (PTP) device, left click the control or Bulk packet cell header associated with the Picture Transfer Protocol (PTP) device. If you click in the right place the menu will offer you the ‘Map Endpoints to Class/Vendor Decoding’ option. Select this to assign the endpoint decoding.

Next on the dialog select Picture Transfer Protocol (PTP) decode from the drop down list and assign it to the endpoint.

Note: You need to select the address/endpoint and the decode type and press assign – BEFORE selecting OK or Apply

If the assignment is correct the transfer level display will change from:

to:

HID Device Decoding

Just after the enumeration of a Human Interface Device (HID) device, left click the control or anywhere else in the trace click the packet cell header associated with the Human Interface Device(HID) device transfer. This latter will usually be an Interrupt In transfer. A menu will offer you the ‘Map Endpoints to Class/Vendor Decoding’ option. Select this to assign the endpoint decoding.

Next on the dialog select Human Interface Device(HID) decode from the drop down list and assign it to the endpoint.

Similarly on the Request Recipients tab the device address can be assigned to the Human Interface Device(HID) Class.

Note: You need to select the address/endpoint and the decode type and press assign – BEFORE selecting OK or Apply.

If the assignment is correct the transfer level display will change from:

to: