I2C SPI USB CAN eSPI Cable Testing View All Quick Start Guides User Manuals Software Downloads Knowledge Base Videos Case Studies App Notes White Papers Sales Support About Us
Products Blog Sales Support Contact Search
Data Center Software Series: USB Class-Level Parsing
Briana Watson

Total Phase’s Data Center Software is our industry-leading bus monitoring software that gives users the ability to interface with our protocol analyzers including the line of Beagle protocol analyzers, the USB Power Delivery Analyzer, the Komodo CAN Duo Interface, and the eSPI analyzer, to capture, display, and filter USB, USB Power Delivery, I2C, SPI, CAN and eSPI bus data in real time. This software offers numerous tools and capabilities to help users easily debug their embedded systems in a wide-range of applications.

In this blog post, we’ll specifically cover the USB class-level parsing capability within the Data Center Software to explain how it can parse raw packets into a human-readable format and define USB traffic according to specific device classes - making it easier for users to understand and analyze.

What Are USB Classes?

Before we dive into the USB class-leveling parsing capability, let’s take a moment to review USB classes. USB, or Universal Serial Bus, is one of the most widely-used communication protocols we often see utilized in computer systems to both send information or charge devices. With the number of different USB devices there are, it’s important to make sure the host computer can immediately recognize the target device and its intended use. This is where USB classes come into play.

USB classes group specific devices that use a standard set of commands and instructions, allowing these devices to share a common USB class driver.

For instance, some common USB classes include Video, Audio, Human Interface Devices (HID), Printer, and Mass Storage.

Class-Level Decoding

When developing USB devices, there is always the possibility of bugs that can end up interrupting the flow and transfer of information. Being able to view class-level information while monitoring the USB traffic in a USB system gives our users a unique look into the communication of these devices. Once the information is reviewed and understood, it becomes increasingly simple to isolate potential errors and bugs within the USB protocols.

Full class-level decoding is a supported feature of the Beagle USB 480 Protocol Analyzer, the Beagle USB 480 Power Protocol Analyzer, and the Beagle USB 5000 v2 SuperSpeed Protocol Analyzer. The Beagle USB 12 Protocol Analyzer does not support class-level coding but is capable of real-time USB descriptor parsing.

USB Class-Level Parsing in Data Center Software

By using our line of Beagle USB protocol analyzers in conjunction with the Data Center Software, engineers can quickly gain visibility into the bus where the class-level parsing capability will decode protocol level packets into class-level decoded data.

Data Center Software

The following is a brief list of some of the USB classes that are supported within the Data Center Software:

  • Audio v1.0 - v2.0
  • Communications Device Class (CDC)
  • Printer
  • Mass Storage (SCSI, UASP)
  • Human Interface Device (HID)
  • Video (v1.0 – v1.1)
  • Device Firmware Update (DFU)
  • Network Control Model (NCM)
  • Mobile Direct Line Model (MDLM)
  • Hub
  • Still Image (MTP, PTP)

To enable the class-level parsing feature, navigate to the Capture View menu and select Class View. The software will need to capture an enumeration of the USB device, which is accomplished by first starting the capture and then plugging the device into the analyzer. The enumeration of the USB device is preserved across capture sessions should they need to be accessed or referenced again.

Class-Level Fields and Control Transfers

Class-level fields are visible with each transfer. One or more protocol-level transactions will be grouped into a class-level transaction. For some classes, a class-level transaction may contain one or more other class-level transactions. The transaction will exhibit information relevant to the specific device class. For example, in the context of a mass storage device, a class-level transaction could be labeled as "Read," and within the Data column, details such as the logical block address and transfer length will be indicated. Further details can be accessed by selecting the class-level transaction and referring to the Info panel. This panel will display the parsed attributes of the chosen class transaction.

A parsed mass storage class transaction

Another advantage to enabling classification is the consolidation of protocol-level transactions that constitute a control transfer into a single transaction at the class level. When it's possible to parse the control transfer, the transaction will be named accordingly. If parsing isn't achievable, the transaction will appear as a "Control Transfer."

A parsed control transfer in the Data Center Software A parsed control transfer

Bulk Transfer Grouping

There is also an option to group bulk endpoint transfers. Once your device has been enumerated, and if it includes an unrecognized class, the Data Center Software is able to group bulk endpoint transfers based on a short packet delimitation. To enable this feature, right-click on the Universal Serial Bus item in the USB Bus Pane and choose "Enable Bulk Ep Grouping."

This feature is only applicable if enumeration is achieved. If the device has not been enumerated, users can set a custom enumeration in the Configuration Management interface.

Configuration Management for Custom Class-Level Decoding

By default, the Data Center Software uses configuration descriptor information captured during the enumeration phase to configure class-level decoding of USB traffic. However, with the Configuration Management interface, users can apply arbitrary configuration descriptors to the captured USB device data. This provides a custom class-level decoding experience within the set of USB classes supported by Data Center Software.

To clarify, this feature does not add support for decoding custom USB classes, only for specifying custom configuration descriptors.

For more information on this feature, please visit Data Center Software Series: USB Configuration Management Window.

USB Class-Level Decoding Video

Check out our video “Debugging USB with Class-Level Decoding in Data Center Software” to see the USB class-level parsing in action:

Conclusion

In summary, the Data Center Software provides real-time USB monitoring, providing specific capabilities such as class-level decoding that allow users to gain unmatched insight into the USB bus. Monitoring USB traffic at the class level aids in identifying errors and bugs and optimizes the debugging process overall.

If you have any further questions about our Data Center Software and how it can be useful for debugging, please email us at sales@totalphase.com or request a demo for your application.