This document contains research about USB tests compliance which allow to analyze USB device detection process. Mostly it references to USB 3.0.
- Universal Serial Bus 3.0 Specification
- USB 3.0 Electrical Compliance Test Specification
- USB 3.1 Link Layer Test Specification
- USB 3.0 Electrical Test Fixture Topologies
- Universal Serial Bus 2.0 Specification
- USB 2.0 Electrical Compliance Tests Specification
- eXtensible Host Controller Interface for Universal Serial Bus
HS
- High Speed USB (USB 2.0)SS
- Super Speed USB (USB 3.0)LFPS
- Low Frequency Periodic SignalingLTSSM
- Link Training and Status State Machine
Power | Speed | PHY Layer | |
---|---|---|---|
USB 1.1 Low Speed | 5V @500mA | 1,5 Mbps | VCC, GND, D+, D- |
USB 1.1 Full Speed | 5V @500mA | 12 Mbps | VCC, GND, D+, D- |
USB 2.0 High Speed | 5V @500mA | 480 Mbps | VCC, GND, D+, D- |
USB 3.0 SuperSpeed | 5V @900mA | 5 Gbps | VCC, GND, D+, D-, Rx+, Rx-, Tx+, Tx- |
USB 3.1 SuperSpeed+ | 5V @900mA | 10 Gbps | VCC, GND, D+, D-, Rx+, Rx-, Tx+, Tx- |
USB enumeration process lets a host determine if USB device was plugged into USB port and what kind of device is that. Enumeration process could be divided into multiple stages proceeded after previous one if there were no errors:
- RxDetect mode (USB 3.0 Specification Section 6.11)
- Polling LFPS (USB 3.0 Specification Section 6.9.2)
- TSEQ Ordered Sets (USB 3.0 Specification Section 6.4.1.1.3 and Table 6-3)
- TS1 Ordered Sets (USB 3.0 Specification Section 6.4.1.1.3 and Table 6-4)
- TS2 Ordered Sets (USB 3.0 Specification Section 6.4.1.1.3 and Table 6-5)
- Logical idle (sending idle data)
- Exit Initialization to U0 state
NOTE: Link Initialization and Training (stages 3,4,5) could be different depending on USB 3.0 (Gen 1) or USB 3.1 (Gen 2) devices. More details are available in USB 3.0 Specification Section 6.4.
After last stage device should be recognized by host and communication between them is opened. To test device detection in system it should be checked if all above stages are performed correctly. Hence electrical compliance tests and link layer tests should be performed to compare data, timing and electrical values with Specification requirements (tables with reference values are available in Specification under mentioned above sections which corresponds to specific stage).
Link Training and Status State Machine (LTSSM) is a state machine consists of 12 link states. It is described in USB 3.0 Specification Section 7.5. LTSSM diagram is presented in figure 7.14. During USB device detection process LTSSM changes stages according to diagram flow. To test if device detection process is done correctly state machine analyze should be done.
Electrical compliance tests verify that electrical signals sent between host and device meet USB 3.0 requirements which are described in USB 3.0 Specification Document. To correctly capture these data high-class oscilloscope is required (with minimum 13 GHz bandwidth) with high-class cables and probes. Also Test Fixtures are needed to separate signals from USB data lines and dedicated software installed on oscilloscope.
Proposed tool kit:
- Teledyne LeCroy SDA 813Zi-A Oscilloscope
- QualiPHY Software
- SigTest software v.3.2.1
- TF-USB3 Test Fixture
- SMA cables
- PeRT3 Phoenix System (for Receiver tests)
All tools are listed in QPHY-USB3.2-TX-RX Manual in section Introduction/Required Equipment. That document contains also guide how to perform electrical tests with QualiPHY Software.
From QPHY-USB3.2-TX-RX Manual those tests should be carried out:
- in section USB 3.1/3.2 Transmitter Testing:
- TD 1.1 Low Frequency Periodic Signaling Test
- TD 1.6 Spread Spectrum Test
- in section USB 3.1/3.2 Transmitter Testing:
- TD 1.2 Low Frequency Periodic Signaling Test
- TD 1.8 and 1.9 Receiver Jitter Tolerance Tests
Electrical compliance tests tool kit is rather expensive and those tests don't guaranty that stick detection problem will be resolved. My advice is to first carry out link layer tests because they can give more information and benefits about problem.
Proposed tests are compatible with USB-IF official Electrical Compliance Tests Program. All tests are listed in Electrical Compliance Test Specification SuperSpeed Universal Serial Bus.
Link layer compliance tests can be performed with USB Analyzers. USB Analyzers capture USB traffic and with dedicated software it is possible to find and resolve problems caused by errors in link layer during enumeration process, i.e. data packets missing, states are not proceed in exact way, errors between process stages etc.
Examples of USB 3.0 Analyzers with dedicated software:
- Beagle USB 5000 v2 SuperSpeed Protocol Analyzer | Data Center Software
- Ellisys Explorer 280 | Analyzer Software
- Teledyne LeCroy Advisor T3 | USB Protocol Suite
- Teledyne LeCroy Voyager M3 | USB Protocol Suite
NOTE: From mentioned above analyzers only Beagle USB 5000's software is supported on Linux. Another ones are supported only in Windows.
Should be considered to carry out tests:
- analyze LFPS at communication initialization
- analyze Training Sequences TSEQ, TS1, TS2 Ordered Sets
- analyze State Machine (check if states proceed according to Specification)
- checking if USB Port/Device ends in U0 mode
- checking packets between host and recognized device
USB-IF has its own Link Layer Compliance Tests program. However, to carry out those tests it is required to use their hardware and software tools. In my opinion, good enough alternative is to use one of mentioned above devices, because they have features which are sufficient to resolve stick detection problems.
If mentioned above analyses aren't sufficient, tests from sections 7.5.1 to 7.5.5 from USB 3.1 Link Layer Test Specification can be performed.
Mentioned above equipment is necessary to carry out electrical and link layer tests. Due to its high price it's rather impossible to perform such tests now. So far I couldn't find any alternate solutions which will meet the requirements and will be low-price devices. It results from the fact, that to test USB 3.0 protocol, high frequency devices are needed and such devices are rather expensive. Most of available instruments are suitable only for USB 2.0 testing.
USB 2.0 Analyzer's principles of operation is exactly the same as USB 3.0 Analyzer and it is described above in that document.
Proposed USB 2.0 Analyzers with dedicated software:
- OpenVizsla | Wireshark
- Beagle USB 480 | Data Center Software
Both analyzers are perfectly good to capture and investigate USB data. However, OpenVizsla is an open-source solution which can easily handle with USB analysis within low price. In combination with Wireshark (or any other program which can descramble USB data) it doesn't stand out from any other available solutions. On the other hand, Beagle's software has feature which analyze state machine and show current state in LTSSM.
Those devices can't be extended to analyze USB 3.0/3.1 transmission.
Detailed description of RxDetect
machine state (with substates) is available
in Section 7.5.3 in USB 3.0 Specification.
Initially USB ports are in SS.Disabled
state (SuperSpeed connection is cut
off). RxDetect
state (in fact RxDetect.Reset
) is reached after Power On
Reset or Directed Warm Reset.
Let's look how machine substate sequence looks like depending on scenarios:
-
RxDetect.Reset
If it was reached by power on reset it transit directly to
RxDetect.Active
.If it was reached by warm reset it transmits LFPS sequence (warm reset sequence) and goes to
RxDetect.Active
. -
RxDetect.Active
In this state receiver termination (detecting termination at line) is performed. If it is detected (USB 3.0 device is at the end) then
Polling.LFPS
state is reached. If it is not detected thenRxDetect.Quiet
state is reached and after 12ms it gets back toRxDetect.Active
state and try procedure again. It can move toRxDetect.Quiet
state only 8 times in a row. Next time if no termination is detected it goes toSS.Disabled
. -
RxDetect.Quiet
Wait 12 ms timeout and go to
RxDetect.Active
state.
Maybe the problem with USB 3.0 stick detection is caused by not detecting Rx termination for 8 times in a row. Host will not get back to detecting USB 3.x device no more and will start procedure of detecting USB 2.0 device.