USB3.0 or 3.1 not recognised or recognised slow. Here how to Fix-it

I think i am not the only one to notice this issue.
On some system my USB flash work, on other none. Buying two identical external HDD enclosure… one work one not.
So it start to ■■■■ me as observing that different peripherals work on some system and some on other system so start to investigate.

  1. Pump up Windows to see if Linux is the issue, and found that it is, let me explain. In Windows if it does not work on USB 3.0 it start to communicate over USB 2.0 and give a “stupid” message to insert the device in a high speed USB 3.0 port. So USB 3.0 in Windows will switch to USB2.0 if the communication does not succed but this does not happen in Linux, so it just does not work.
  2. Chose another USB 3.0 port, as it might connect to a different internal USB hub.
  3. To make the communication try to insert a USB 3.0 hub between, it might work, if not chose another USB 3.0 Hub, it can be same model.
  4. If no success, or you don’t have USB 3.0 hub, just put an USB 2.0 hub between.

Explanation:
I try to understand why this issue happens. So the explanation is this. USB have no clock signal sent to its peripherals so each peripheral has it’s own generated clock. They sync this clocks from time to time, but if the clocks are so different (outside tolerance) the communication might not work, and in Linux it does not try on lower USB2.0 speed.
Even on USB 2.0 this might happen but on USB 3.0 this is more critical as working speed (frequency) is higher, and clock tolerances are tighter.

Hope this might help someones as it put me to spent some time to understand why some devices does not work on some systems, I should consider them defective, or incompatible, and if incompatible what is not compatible?

All your writing may be concluded with one simple command - lsusb -t. It will report speeds.
For my laptop I know that all external USB port are blue (5 Gbps, USB 3.0, SuperSpeed), but some internal are USB 2.0 (480 Mbps):

$ lsusb -t
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 480M
    |__ Port 2: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 2: Dev 2, If 1, Class=Human Interface Device, Driver=usbhid, 12M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
        |__ Port 5: Dev 9, If 0, Class=Video, Driver=, 480M
        |__ Port 5: Dev 9, If 1, Class=Video, Driver=, 480M
        |__ Port 6: Dev 5, If 0, Class=Wireless, Driver=btusb, 12M
        |__ Port 6: Dev 5, If 1, Class=Wireless, Driver=btusb, 12M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
        |__ Port 4: Dev 3, If 0, Class=Vendor Specific Class, Driver=rtsx_usb, 480M

No mystery, but only technical details about hardware.

Norbert_X … I am talking about device that does not work at all, device that are not defective, because for system try to load them but no succeed, so they don’t exist, because they don’t work, so are not listed with LSUSB, because communication does not succeed, because … so all my writing is concluded in what I am writhing, so your conclusion is for yourself, or for something else, but not for what I am writing…

:bulb: It's also worth watching /var/log/kern.log while plugging in problematic devices.

tail -f /var/log/kern.log

I've got a strange case where my wireless dongle doesn't always talk properly when it's plugged in its USB 3 extension cable.... but only when plugged in a certain way. :confused:

1 Like