1

usb works on the two 5 Gb/s usb-a ports

However, usb-c does not recognize devices set for a speed above 480 Mb/s

When such devices are plugged in dmesg --human --follow outputs nothing

The usb hardware is vanilla Intel:

lspci -knns14.0
00:14.0 USB controller [0c03]: Intel Corporation Cannon Lake PCH USB 3.1 xHCI Host Controller [8086:a36d] (rev 10)
    Subsystem: Intel Corporation Cannon Lake PCH USB 3.1 xHCI Host Controller [8086:7270]
    Kernel driver in use: xhci_hcd
    Kernel modules: xhci_pci

Linux is Ubuntu linux-generic-hwe-20.04 5.8.0-36

2/5/2021:

The usb ports that are capped at 480 Mb/s are off the Thunderbolt controllers:

lspci -knns7e:0
7e:00.0 USB controller [0c03]: Intel Corporation JHL7540 Thunderbolt 3 USB Controller [Titan Ridge 4C 2018] [8086:15ec] (rev 06)
    Subsystem: Intel Corporation JHL7540 Thunderbolt 3 USB Controller [Titan Ridge 4C 2018] [8086:0000]
    Kernel driver in use: xhci_hcd
    Kernel modules: xhci_pci
lspci -knns8:0
08:00.0 USB controller [0c03]: Intel Corporation JHL7540 Thunderbolt 3 USB Controller [Titan Ridge 4C 2018] [8086:15ec] (rev 06)
    Subsystem: Intel Corporation JHL7540 Thunderbolt 3 USB Controller [Titan Ridge 4C 2018] [8086:0000]
    Kernel driver in use: xhci_hcd
    Kernel modules: xhci_pci    ​ 

2/6/2021:

Here are the usb bus speeds and their pci controllers:

for A in /sys/bus/usb/devices/usb*; do echo "$(basename $A):$(cat $A/speed)"; done
usb1:480
usb2:10000
usb3:480
usb4:10000
usb5:480
usb6:10000

There are 6 usb buses:

ls -ld /sys/bus/usb/devices/usb*
lrwxrwxrwx 1 root root 0 Nov 26 19:18 /sys/bus/usb/devices/usb1 -> ../../../devices/pci0000:00/0000:00:14.0/usb1
lrwxrwxrwx 1 root root 0 Nov 26 19:18 /sys/bus/usb/devices/usb2 -> ../../../devices/pci0000:00/0000:00:14.0/usb2
lrwxrwxrwx 1 root root 0 Nov 26 19:18 /sys/bus/usb/devices/usb3 -> ../../../devices/pci0000:00/0000:00:01.1/0000:05:00.0/0000:06:02.0/0000:08:00.0/usb3
lrwxrwxrwx 1 root root 0 Nov 26 19:18 /sys/bus/usb/devices/usb4 -> ../../../devices/pci0000:00/0000:00:01.1/0000:05:00.0/0000:06:02.0/0000:08:00.0/usb4
lrwxrwxrwx 1 root root 0 Nov 26 19:18 /sys/bus/usb/devices/usb5 -> ../../../devices/pci0000:00/0000:00:01.2/0000:7b:00.0/0000:7c:02.0/0000:7e:00.0/usb5
lrwxrwxrwx 1 root root 0 Nov 26 19:18 /sys/bus/usb/devices/usb6 -> ../../../devices/pci0000:00/0000:00:01.2/0000:7b:00.0/0000:7c:02.0/0000:7e:00.0/usb6

Fanciest buses usb4 and usb6 are inoperative

Anybody working on Intel open source drivers care to comment?

Maybe there is a kernel module option or other way to get 10 Gb/s usb?

2 Answers 2

0

I think we need to rule out the obvious, what kind of cable are you using? There is such a thing as a USB 2.0 only USB-C cable, if that's what you are using then you will not get better than USB 2.0 speeds. A cable that is following the USB spec will indicate the bandwidth, and protocols, it can handle on the connectors.

A USB-C cable that supports USB will have the USB "trident" icon, those that support more than 480 Mbps will also have the stylized "SS" along with the trident. There's often a small, 5, 10, or 20 to indicate the certified bandwidth of "superspeed" cables in Gbps. Newer USB-C cables that support "superspeed" will use a 20 or 40 in place of the "SS" to indicate certified speed but I haven't seen any in the wild yet. Thunderbolt 3 cables that meet the spec will have the Thunderbolt icon on the cable connectors.

One indiction of cable bandwidth will be its length. USB 2.0 USB-C cables are often over a meter long, as it's getting a longer cable for cheap is why they are made and people buy them. These are most often used for their ability to transfer power more than their ability to transfer data, such as connecting a laptop to a power brick. Superspeed capable cables will be passive and no more than a meter long, or active and longer which also makes them more expensive.

Another possibility is that you are using the correct cable but it has been damaged. Check that you are using the correct cable, and it has not been damaged.

2
  • 1
    5 and 10 Gb/s devices work in the usb-a ports. In the usb-c ports they are not even detected by Linux while 480 Mb/s or slower devices work perfectly. This is a software problem. Linux uses twin-ports by device speed. The 5+ Gb/s usb bus and port is inoperative for Titan Ridge
    – Keith
    Feb 7, 2021 at 2:31
  • @Keith I understand that you believe this to be a software problem. I would like to know what steps you took to rule out cable issues. How did you identify that the cable is capable of 5+ Gbps? How did you verify that the cable was not damaged? You cannot use the same cable to plug into a USB-A port and a USB-C port, you must be using a different cable or an adapter from USB-C to USB-A. It would be very helpful to know how you are connecting devices to the USB-C ports. Is there a dock or hub involved? Have you tested the cables and devices on another computer?
    – MacGuffin
    Feb 7, 2021 at 14:21
0

What is not working is hotplug of any device 5+ Gb/s on Apple computers with Intel cpu, 2016+

At boot time, devices are recognized by efi firmware. After that, any unplugged device is gone until again plugged in during boot

https://bugzilla.kernel.org/show_bug.cgi?id=211681

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1914845

https://apple.stackexchange.com/questions/411321/mac-mini-2018-macmini8-1-linux-usb-c-will-not-recognize-certain-usb-device-typ

https://www.reddit.com/r/Gentoo/comments/mlkc57/usb_drive_only_detected_when_attached_at_boot/

1

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .