USB. Protocol which replaced random keyboard connectors, PS/2, ADB, gameport, serial and parallel ports (and many more). Sometimes expanded to “USB Sucks Badly“.
Five years ago buying USB 3.0 hub was a task as it was not so popular thing. Nowadays I have three SuperSpeed ones. One in LG monitor (webcam, phone, Bluetooth dongle), one on desk (watch charging/adb, Yubikey, card reader, pendrives etc) and that 7 port one from five years ago with random dongles in it.
Yesterday I replaced Gigabyte P67X-UD3-B3 mainboard with AsRock Z68 Extreme4 one. This gave me extra PCIe x4 slot where I can plug NVME storage. Built system, booted into Fedora and started using.
At some moment I had to login into one of systems with two factor authorization. I use Yubikey for it. Pressed the button and nothing was outputed…
Then I realized why previous configuration had that extra USB 3 controller:
usb 3-2.2: new full-speed USB device number 12 using xhci_hcd
usb 3-2.2: New USB device found, idVendor=1050, idProduct=0110, bcdDevice= 3.33
usb 3-2.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 3-2.2: Product: Yubikey NEO OTP
usb 3-2.2: Manufacturer: Yubico
usb 3-2.2: Not enough bandwidth for new device state.
usb 3-2.2: can't set config #1, error -28
Yay, USB!
Plugged Renesas uPD720201 PCIe USB 3.0 host controller, moved all hubs to it and it works just fine:
usb 7-3.2: new full-speed USB device number 11 using xhci_hcd
usb 7-3.2: New USB device found, idVendor=1050, idProduct=0110, bcdDevice= 3.33
usb 7-3.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 7-3.2: Product: Yubikey NEO OTP
usb 7-3.2: Manufacturer: Yubico
input: Yubico Yubikey NEO OTP as /devices/pci0000:00/0000:00:1c.7/0000:05:00.0/0000:06:01.0/0000:07:00.0/usb7/7-3/7-3.2/7-3.2:1.0/0003:1050:0110.0008/input/input30
hid-generic 0003:1050:0110.0008: input,hidraw6: USB HID v1.10 Keyboard [Yubico Yubikey NEO OTP] on usb-0000:07:00.0-3.2/input0
Then checked which USB 3.0 host controller is on mainboard:
11:29 (0s) hrw@puchatek:~$ lspci |grep -i usb
00:1a.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 (rev 05)
00:1d.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 (rev 05)
03:00.0 USB controller: Etron Technology, Inc. EJ168 USB 3.0 Host Controller (rev 01)
04:00.0 USB controller: Etron Technology, Inc. EJ168 USB 3.0 Host Controller (rev 01)
07:00.0 USB controller: Renesas Technology Corp. uPD720201 USB 3.0 Host Controller (rev 03)
Argh, Etron EJ168 again…
So if your mainboard has Etron EJ168 then consider adding Renesas card. Works just fine. Nevermind how slow/fast your USB devices are.