I2C SPI USB CAN eSPI Cable Testing View All Videos Quick Start Guides Software Downloads App Notes White Papers User Manuals Knowledge Base Sales Support About Us
Products Blog Sales Support Contact Search
How Do I Interpret USB Data Errors for Isochronous Endpoints?
Rena Ayeras

Question from the Customer: I am using your Beagle USB 480 Protocol Analyzer and Data Center Software to troubleshoot a USB 2.0 device and its interaction with the host. The system has several interfaces and endpoints. The host connects to multiple devices, two of which are audio devices: one input and one output. The USB device that has an issue is audio input, which involves isochronous endpoints. On occasion, not frequently, isochronous input endpoint packets are dropped. I have observed no issues with the interrupt I/O HDI devices or other vendor specific endpoints.
Logged data readings for lost endpoint packets Captured Data Logged by Data Center Software

Looking at the data log, I assume the source of this faulty interaction is the host. Otherwise, if it was the USB 2.0 device, I would at least see the IN packet part of the transaction, followed by either an error or a 0 byte DATA0 packet. In other words, during frame 0 (SOF index 4156719), I expect to see an isochronous IN transaction on endpoint 7, but that is missing.

To me, this indicates that the host is not providing service to this USB device.

My question – can you confirm my interpretation, that this issue is sourced at the host, not the USB 2.0 device?

Response from Technical Support:

Thanks for your question! Based on the information, we agree that the loss of the endpoint data packet is due to the host. To explain why we support our confirmation, we will describe how isochronous data transactions work. We are assuming that the test scenario is “normal”.  For significantly complex test setups or devices, additional analysis may be needed.

How Isochronous Transmissions Guarantees Real-Time Data

To guarantee real-time data, the isochronous data transmission allows data errors. This protocol does not provide error detection or recovery for isochronous transfers.  The host or the USB device do not send handshake packets – real-time data is guaranteed, but not delivery.

  • For High-speed and Full-speed devices, the polling uses IN-OUT token packets.
  • When the endpoint is ready to send data, the DUT responds to one of the IN token packets by sending data.
  • To write to the USB device, the host sends an OUT token packet that is followed by data packets.
  • If no data is transferred or the data is corrupted, no error information is passed.

In this case, because the host controller does not attempt to retry the transfer, data might be lost if an error occurs. This correlates with the logged data that you observed.

Comparing Isochronous and Interrupt Data Transfers

For interrupt transfers, if the device does not have data to send, it responds with NAK.

However, in an isochronous transfer, the driver issues a request to read or write data to an isochronous endpoint. The host then initiates an isochronous transfer that sends or receives data by polling the device at regular intervals. This polling uses IN-OUT token packets.

When the endpoint is ready to send data, the USB device responds to one of the IN token packets by sending data. To write to the device, the host sends an OUT token packet followed by data packets. As previously mentioned, there is no guaranteed delivery since no handshake packets are involved. Since the host controller does not attempt a retry, data can be lost if an error occurs.

Real-Time Analysis

Real-time analysis assures the accuracy of the captured data that is displayed via the Data Center Software.

  • With the Data Center Software being a real-time analyzer, it does not have a prerogative of looking into future data or transactions. This application does not parse through the data; it does real-time analysis.
  • The Beagle USB 480 Protocol Analyzer is a passive monitor. Due to the nature of a pass-through analyzer, the Beagle USB 480 analyzer does not have the ability to alter any data or command sent from the host to the device or vice versa.

We hope this answers your question. Additional resources that you may find helpful include the following:

If you want more information, feel free to contact us with your questions, or request a demo that applies to your application.

Request a Demo