Acroname USB C Switch Data Line Mismatch
Abstract: For users of the redriver version of the Acroname USB Type C 4-Channel Port Selector Switch: if using USB 2.0 only or are having troubles with USB 2.0 connections, disable the USB 3.1 redriver and disconnect the USB 3.1 data lines to restore function to the USB 2.0 data lines.
Background: No connection being attempted by the test device
One of our customers ran into a bizarre issue with the Acroname USB-C-Switch during the testing of an automotive infotainment head unit. While testing the connectivity of iOS and Android devices to their infotainment head unit (presumably using CarPlay or Android Auto), one of their test devices was simply not connecting and additionally did not appear to be trying to connect. In other words, no connection - successful or unsuccessful - was being attempted by the test device.
Normally when we hear about a connection issue through a USB C Switch, we commonly recommend decreasing cable length and increasing the redriver strengths, assuming root cause is a signal integrity problem. In this particular situation, however, neither of these suggestions produced any change or improvement in the connection!
The root of the issue was the mobile device was too smart for its own good.
Upon connection to the switch, the phone was able to detect the termination impedance on the USB 3.1 data lines, and therefore decided not to attempt a connection over USB 2.0. In the phone’s logic, it preferred the USB 3.1 connection, and so completely neglected USB 2.0 – after all, why would it connect on the slower bus if the faster bus is available? Since the automotive head unit was only a USB 2.0 device, it saw no traffic on the USB 2.0 lines and therefore was reacting as if there was no device connected.
The data speed negotiation mismatch, indirectly caused by the USB-C-Switch’s termination of the USB 3.1 data lines, was behind the data connectivity problem. This termination is done at the USB3 redriver, and is required for the redriver functionality.
The solution was to use the USB-C-Switch to first disconnect the USB 3.1 data lines and second, disable the USB 3.1 redriver so the redriver in the switch does not provide termination. This allows the phone to recognize only the USB 2.0 link to the infotainment host, thereby allowing the CarPlay or Android Auto protocol to proceed.
Who Is Impacted by Data Line Mismatch?
Any device that has both USB 2.0 and USB 3.1 connections can exhibit the issue described above. With both sets of data lines present, a device might detect the termination on the USB 3.1 lines and completely ignore the USB 2.0 lines.
Why Does This Happen?
The USB 3.1 redriver chip in the switch provides resistive termination because it’s ending and recreating a new cleaner signal as it passes through the switch. The USB 2.0 redriver works on a different concept and does not recreate the signal, instead only augmenting the signal’s rising edge and DC offset.
How Do I Know If I Am Having A Data Speed Negotiation Issue?
The issue exhibits itself as a device that is not attempting to connect through the USB C Switch. In contrast, a signal integrity issue normally shows as a constant cycle of easily seen attempts to connect/disconnect, or an incomplete discovery in the USB device tree.
How to Fix Mismatch Issues?
For use cases that only test USB 2.0 when there are one or many connected devices that also are USB 3.1 capable, we would recommend disconnecting the USB 3.1 data lines and disabling the USB 3.1 redriver.
With StemTool open, under the “Data” section, uncheck the “SS1” and “SS2” boxes.
Unchecking these boxes will disconnect the Super Speed 1 lanes and the Super Speed 2 lanes.
Next, under the “USB-C” section, find the “Alt. Mode” selection box. The “Alt. Mode” setting is used to configure the four data lanes through the USB 3.1 redriver. By default, the switch is configured to “USB 3.1 Enabled”. To implement the fix, change the “Alt. Mode” setting to “USB 3.1 Disabled”, which disables the redriver on all super speed data lanes going through the switch.
While the above steps and images show the fix as implemented in StemTool, these changes can also be performed programmatically in any of our API’s. Look into the BrainStem USB entity and follow the setSuperSpeedDataDisable and setAltModeConfig methods.
Please let us know at support at acroname.com if this does not solve your problem. And, as a shop with substantial experience regarding USB technology and use cases, we welcome inquiries of all types about designing, building, and testing USB hardware, including those directly related to our hubs and switches. We look forward to hearing from you!