USB 3 devices are only recognized as USB 2

Hi Toradex-Team & community,

I’ve currently come issues connecting USB 3 devices to a Verdin IMX8M-P with a custom carrier board. The devices are always recognized as USB 2 devices.

During the development we made sure to follow the layout requirements and used most of the schematics from the Verdin Development board - including the exact same USB hub. The only difference to the development board is, that we do not use the PCAL6416A port extender. Therefore we’ve removed the related I2C device definition from the device tree.

lsusb shows that three The Imaging Source Europe GmbH DMM 37UX568-ML devices are connected as expected but only as USB 2. Meanwhile dmesg doesn’t provide any hint of an error.

We’re looking forward to hear your thoughts and recommendations.

torizon@verdin-imx8mp-15676772:~$ lsusb
Bus 002 Device 002: ID 0424:5744 Microchip Technology, Inc. (formerly SMSC) Hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 0424:2740 Microchip Technology, Inc. (formerly SMSC) Hub Controller
Bus 001 Device 006: ID 199e:9497 The Imaging Source Europe GmbH DMM 37UX568-ML
Bus 001 Device 005: ID 199e:9497 The Imaging Source Europe GmbH DMM 37UX568-ML
Bus 001 Device 003: ID 064f:2af9 WIBU-Systems AG CmStick (HID, article no. 1001-xx-xxx)
Bus 001 Device 007: ID 199e:9497 The Imaging Source Europe GmbH DMM 37UX568-ML
Bus 001 Device 002: ID 0424:2744 Microchip Technology, Inc. (formerly SMSC) Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

torizon@verdin-imx8mp-15676772:~$ lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/5p, 480M
        |__ Port 1: Dev 7, If 4, Class=Video, Driver=uvcvideo, 480M
        |__ Port 1: Dev 7, If 2, Class=Miscellaneous Device, Driver=, 480M
        |__ Port 1: Dev 7, If 0, Class=Miscellaneous Device, Driver=, 480M
        |__ Port 1: Dev 7, If 3, Class=Video, Driver=uvcvideo, 480M
        |__ Port 1: Dev 7, If 1, Class=Miscellaneous Device, Driver=, 480M
        |__ Port 2: Dev 3, If 0, Class=Human Interface Device, Driver=usbfs, 12M
        |__ Port 3: Dev 5, If 3, Class=Video, Driver=uvcvideo, 480M
        |__ Port 3: Dev 5, If 1, Class=Miscellaneous Device, Driver=, 480M
        |__ Port 3: Dev 5, If 4, Class=Video, Driver=uvcvideo, 480M
        |__ Port 3: Dev 5, If 2, Class=Miscellaneous Device, Driver=, 480M
        |__ Port 3: Dev 5, If 0, Class=Miscellaneous Device, Driver=, 480M
        |__ Port 4: Dev 6, If 4, Class=Video, Driver=uvcvideo, 480M
        |__ Port 4: Dev 6, If 2, Class=Miscellaneous Device, Driver=, 480M
        |__ Port 4: Dev 6, If 0, Class=Miscellaneous Device, Driver=, 480M
        |__ Port 4: Dev 6, If 3, Class=Video, Driver=uvcvideo, 480M
        |__ Port 4: Dev 6, If 1, Class=Miscellaneous Device, Driver=, 480M
        |__ Port 5: Dev 4, If 0, Class=Vendor Specific Class, Driver=, 480M
torizon@verdin-imx8mp-15676772:~$ dmesg | grep usb
[    0.122039] usbcore: registered new interface driver usbfs
[    0.122086] usbcore: registered new interface driver hub
[    0.122118] usbcore: registered new device driver usb
[    0.380422] usbcore: registered new interface driver uas
[    0.380473] usbcore: registered new interface driver usb-storage
[    0.380551] usbcore: registered new interface driver usbserial_generic
[    0.380573] usbserial: USB Serial support registered for generic
[    0.380910] usbcore: registered new device driver onboard-usb-hub
[    0.427620] usbcore: registered new interface driver usbhid
[    0.427623] usbhid: USB HID core driver
[    0.438387] usbcore: registered new interface driver snd-usb-audio
[    0.562279] imx8mq-usb-phy 381f0040.usb-phy: supply vbus not found, using dummy regulator
[    0.648483] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM.
[    0.936785] usb 1-1: new high-speed USB device number 2 using xhci-hcd
[    1.287056] usb 2-1: new SuperSpeed USB device number 2 using xhci-hcd
[    2.146763] usb 1-1.2: new full-speed USB device number 3 using xhci-hcd
[    2.344920] hid-generic 0003:064F:2AF9.0001: hiddev96,hidraw0: USB HID v1.11 Device [WIBU-SYSTEMS AG CodeMeter-Stick] on usb-xhci-hcd.1.auto-1.2/input0
[    2.456840] usb 1-1.5: new high-speed USB device number 4 using xhci-hcd
[    7.336783] usb 1-1.3: new high-speed USB device number 5 using xhci-hcd
[    8.173060] usb 1-1.3: Found UVC 1.10 device DMM 37UX568-ML (199e:9497)
[    8.261733] usbcore: registered new interface driver uvcvideo
[    8.446773] usb 1-1.4: new high-speed USB device number 6 using xhci-hcd
[    9.242391] usb 1-1.4: Found UVC 1.10 device DMM 37UX568-ML (199e:9497)
[    9.627061] usb 1-1.1: new high-speed USB device number 7 using xhci-hcd
[   10.445162] usb 1-1.1: Found UVC 1.10 device DMM 37UX568-ML (199e:9497)

Hi, I’m the Toradex AI Assistant.

I might make mistakes. Our support team will step in if needed. If I answered your question, please tick the “Solution” checkbox. For follow-up questions to me, please use @ToradexAI in your post.

Did you like my answer? :+1: :-1:


Hello, and thank you for providing detailed information about your setup and logs!

From your description and the USB log output, your Verdin iMX8M Plus with a custom carrier board is only enumerating attached USB 3 devices (like the DMM 37UX568-ML cameras) as USB 2.0 (High-Speed, 480 Mbps), despite following the Verdin Development Board schematics and using the same USB hub (Microchip USB5744).

Let’s review some key points and suggestions to resolve this:


1. USB 3 Architecture and Signal Routing

  • The Verdin iMX8M Plus offers one USB 3.1 Gen 1-capable (SuperSpeed) port as USB_2. To have SuperSpeed, both the traditional USB 2.0 differential pairs and the SuperSpeed pairs (SSTX_P/N, SSRX_P/N) must be correctly routed from the SoM to your USB hub and onward to the connectors.
  • The signals for these pairs are:

2. Carrier Board Routing

  • If USB 3 devices enumerate only as USB 2, the most common issue is with the SuperSpeed differential pairs not being properly routed or connected.
  • On the Dahlia and Mallow carrier boards, AC coupling capacitors are not used on these lines, and the differential pairs must not be swapped or interrupted.
    Dahlia Carrier Board V1.1 Datasheet
    Mallow Carrier Board V1.1

3. USB Hub and Device Enumeration

  • The fact that your root hub appears at 5000M (in lsusb -t) suggests that the xHCI host and your upstream physical connection seem fine. However, the downstream devices enumerate at 480M, indicating the SuperSpeed connection isn’t present to the devices.

Troubleshooting Steps

  1. Check Hardware Connections:

    • Ensure the USB_2 SuperSpeed pairs from the Verdin module are routed directly to the USB hub in a matched-differential impedance path, with minimal stubs.
    • Confirm there are no missing connections or misrouted pins between the SoM and the hub.
  2. Compare With Reference Designs:

    • Double-check your carrier’s schematic and layout against the Dahlia or Mallow board, focusing on USB signal paths and connector wiring.
      Dahlia Carrier Board V1.1 Datasheet
    • Pay particular attention to the USB-C (if used) wiring, ensuring both sides’ SuperSpeed lines are connected properly.
    • Confirm there are no AC coupling capacitors on SuperSpeed pairs, as per reference designs.
  3. Device Tree & I2C Changes:

    • Omitting the PCAL6416A I2C GPIO expander should not impact USB 3.0 unless it’s used for USB line control (e.g., power enable, reset). Confirm that any USB-3 specific resets or enable GPIOs are not controlled via that expander.
  4. USB Hub Configuration:

    • Double-check your hub isn’t held in a default/low-speed mode due to strapping pins or lack of I2C configuration (if required for SuperSpeed operation).
  5. Basic Test:

    • If possible, test your camera devices directly on a certified USB 3.0 port (such as on a PC) to rule out issues with the cable or camera compatibility.

Summary

Based on your logs and description:

  • The host and hub are seen at SuperSpeed, but the downstream devices see only High-Speed (USB 2.0), strongly pointing to an issue with SuperSpeed lane continuity between the SoM, hub, connectors, or cable.
  • Please re-examine your carrier board’s SuperSpeed signal routing against the known-good reference designs. This class of issue is extremely unlikely to be caused by the device tree or Linux config, unless a USB supervisor device is not being powered/enabled due to missing GPIO.

If you need additional resources, these references may be helpful for schematic/layout checks:

Please let me know if you need more specific signal location/pinout details or further guidance!

Best regards,
Toradex AI Assistant.

Hello @KDehren,

In order to narrow down the issue, can you try the following:

  • Connect another USB 3 device to your custom board and check if it connects as USB 3.
  • Connect the camera you are using to a Toradex Carrier Board (Dahlia, Mallow or Development board) and check if it connects as USB 3.
    • For this test, please use the default device tree and image provided by Toradex.

Depending on the results of the above, we need to look at different things to investigate the problem.

Best Regards,
Bruno

Hello bruno.tx,

Our PCB provides 3 USB-C ports and one USB-A port. We’ve followed your hint of connecting another USB 3 Device to all of these ports and discovered that the devices is registered as USB 3 device on the A port but not on the C ports. As all ports are connected to the same USB Hub we expect the bug to be located in between the Hub and the USB C ports and not related to the SoM. Furthermore we’ve discovered that the direction pin of the CC-Controler doesn’t change even if the voltages of the CC Pins are as expected. Therefore we are in close contact to the USB-Hub manufacturer.

Thank you for your help and support

Hello @KDehren,

Noted, thanks for the update.

The following may be useful:
We have a couple of blogs about USB-C from our Senior Hardware Developer which may be of help:

These were based on a webinar he hosted: https://www.youtube.com/watch?v=cKjI08CTv54

Best Regards,
Bruno