# lsmod |grep xhc

nothing here but in dmesg:

# dmesg |grep xhc
[    0.650446] xhci_hcd 0000:00:14.0: xHCI Host Controller
[    0.650450] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 1
[    0.651518] xhci_hcd 0000:00:14.0: hcc params 0x200077c1 hci version 0x100 quirks 0x00109810
[    0.651523] xhci_hcd 0000:00:14.0: cache line size of 64 is not supported
[    0.651580] usb usb1: Manufacturer: Linux 4.2.0-25-generic xhci-hcd
[    0.659081] xhci_hcd 0000:00:14.0: xHCI Host Controller
[    0.659083] xhci_hcd 0000:00:14.0: new USB bus registered, assigned  bus number 2
[    0.659105] usb usb2: Manufacturer: Linux 4.2.0-25-generic xhci-hcd
[    0.969678] usb 1-5: new full-speed USB device number 2 using xhci_hcd
[    1.269906] usb 1-6: new low-speed USB device number 3 using xhci_hcd
[    1.722308] usb 1-11: new high-speed USB device number 4 using xhci_hcd
[ 3487.664191] usb 1-1: new high-speed USB device number 5 using xhci_hcd
[ 3555.543441] usb 1-1: reset high-speed USB device number 5 using xhci_hcd

is it already working but built-in in the kernel?

#locate xhci

You can check your USB devices with, e.g., lsusb -t. There should also be listed which driver is in use and at which speed the devices are connected.

It seems like the driver is built into the kernel. But you can check that with the following command. When the setting is y, it is built in the kernel.

grep -i xhci /boot/config-$(uname -r)

The _PLATFORM is normally not needed and is set to m, which is a loadable module.


it's very simple, i struggled with this issue using Ubuntu and Ubuntu flavored distros for years (Mint, Elementary OS, etc). Go back into bios, have usb 3.0 turned on, an any other options turned on, but turn off legacy usb option.

The description of legacy usb is that if you have it off, that will disable it for any os that's not "usb aware". But I thought flip the switch, because it's 2018 and most os's are usb aware now. It wasn't supposed to work, but it fixed the issue that has baffled me for years.

My usb 3.0 works perfectly now. My theory is that usb legacy conflicts with the os's understanding of 3.0, so now there's no conflict. If it works for you, you're welcome.

I googled this much, and no one else seemed to have tried or had the same conclusion. I hope this helps others who struggled with it.

  • I know I'm not supposed to say thanks in this comment section, but this time I gotta! I mean it's just ridiculous, I bought a laptop and it says so on the sticker below the keyboard: "USB 3.0 10x faster" and then it comes with a BIOS with USB 3.0 disabled by default. Who would've thought. Shame on ASUS! In here the option is called "USB XHCI Mode" and you have to change it to "Enabled". – soger Mar 13 '18 at 22:11
  • I know this is replying to an old answer but I'm having a little trouble with this. After disabling legacy support, USB3 indeed works but users who are not in the sudoers file cannot seem to properly access the drive. It mounts on their desktop but says it's unavailable. Any idea why that would happen? I'm pulling my hair out trying to get this to work! – twistedpixel Sep 24 '18 at 12:22
  • BEWARE: After legacy USB disabling you will lost ability to enter your BIOS, if you have USB keyboard, because your keyboard will not work at the moment when you need to press DEL or F2 or whatever. I had to reset my BIOS to enter it. – Dzenly Feb 10 '19 at 16:22
  • This is false. No option disabling will lead to bios being inaccessible. I was still able to enter the bios, I just wasn’t able to enter any commands after the post. – Jedi Nomad Feb 17 '19 at 18:23

Provided the USB 3.0 ports are enabled in the BIOS the kernel should automatically pick them up and support them. To confirm they are active you can issue the command lspci -v | grep xhci If your output is similar to:

Kernel driver in use: xhci_hcd

the driver is active and supplied by the kernel.

Tested under 14.04 (Trusty) and 16.04 (Xenial)

Not the answer you're looking for? Browse other questions tagged or ask your own question.