Return to Level1Techs.com

USB-C Hub Not Working Pop OS

So I have been dual booting Windows 10 and Pop OS for a while. Everything has been awesome. I got a USB type C hub for my work laptop and decided that I can probably use it (minus the HDMI) for my desktop as well so that I don’t have to swap a bunch of cables to change my desk setup from my laptop to my desktop. In Windows it works perfectly, but Pop OS doesn’t recognize anything on that hub at all. In fact my keyboard and mouse don’t even receive power to turn on the lights on them. I did a bunch of research and found that at some point USB 3.1 Gen 2 support may or may not have been merged into the newer releases of the Linux kernel but I read conflicting reports. At this point I’m at a loss and not sure what to do. I created a live USB of Manjaro and it didn’t recognize my KB+M when they were connected to the hub either. Help please!!

USB 3.1 support was added in Linux Kernel 4.6 which has been out for quite a while. Does it show up at all when you run lsusb? Are there any errors in dmesg?

1 Like

I don’t believe it shows up at all when I lsusb. I will check dmesg and post anything I find.

It’s almost certainly a power issue. Linux’s XHCI power management is extremely subpar.

1 Like

Ok so when I boot the computer with the USB hub plugged in it does show up in lsusb.

Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 003: ID 093a:2532 Pixart Imaging, Inc.
Bus 003 Device 002: ID 046d:c33a Logitech, Inc. G413 Gaming Keyboard
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 004: ID 0bda:8153 Realtek Semiconductor Corp. RTL8153 > Gigabit Ethernet Adapter
Bus 002 Device 003: ID 2109:0817 VIA Labs, Inc.
Bus 002 Device 002: ID 2109:0817 VIA Labs, Inc.
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 0c76:1607 JMTek, LLC. audio controller
Bus 001 Device 004: ID 2109:2817 VIA Labs, Inc.
Bus 001 Device 003: ID 046d:082d Logitech, Inc. HD Pro Webcam C920
Bus 001 Device 002: ID 2109:2817 VIA Labs, Inc.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

The hub in question is the VIA Labs device. dmesg shows some information about it:

[ 1.958522] usb 2-8: new SuperSpeed Gen 1 USB device number 2 using xhci_hcd
[ 2.367975] usb 2-8: New USB device found, idVendor=2109, idProduct=0817, bcdDevice= 3.b4
[ 2.367977] usb 2-8: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 2.367977] usb 2-8: Product: USB3.0 Hub
[ 2.367978] usb 2-8: Manufacturer: VIA Labs, Inc.
[ 3.217025] usb 2-8.3: new SuperSpeed Gen 1 USB device number 3 using xhci_hcd
[ 3.241330] usb 2-8.3: New USB device found, idVendor=2109, idProduct=0817, bcdDevice= 3.b4
[ 3.241331] usb 2-8.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 3.241331] usb 2-8.3: Product: USB3.0 Hub
[ 3.241332] usb 2-8.3: Manufacturer: VIA Labs, Inc.
[ 3.801574] usb 2-8.3.1: new SuperSpeed Gen 1 USB device number 4 using xhci_hcd
[ 3.830161] usb 2-8.3.1: New USB device found, idVendor=0bda, idProduct=8153, bcdDevice=30.00
[ 3.830163] usb 2-8.3.1: New USB device strings: Mfr=1, Product=2, SerialNumber=6
[ 3.830163] usb 2-8.3.1: Product: USB 10/100/1000 LAN
[ 3.830165] usb 2-8.3.1: Manufacturer: Realtek
[ 3.830165] usb 2-8.3.1: SerialNumber: 000001
[ 6.314664] usb 2-8.3.1: reset SuperSpeed Gen 1 USB device number 4 using xhci_hcd
[ 379.324858] usb 2-8: USB disconnect, device number 2
[ 379.324861] usb 2-8.3: USB disconnect, device number 3
[ 379.324863] usb 2-8.3.1: USB disconnect, device number 4
[ 391.764547] usb 2-8: device not accepting address 5, error -108

What’s really interesting is that the ethernet controller on it caused network manager to hang and my whole system locked up until I unplugged the device.

Here are some of the errors from dmesg that I think are related

[ 9.960726] xhci_hcd 0000:02:00.0: Event logged [IO_PAGE_FAULT domain=0x0000 address=0xffdf8000 flags=0x0000]
[ 29.385090] usb 1-8.3.4: cannot submit urb 0, error -2: endpoint not enabled
[ 29.385123] usb 1-8.3.4: cannot submit urb 0, error -2: endpoint not enabled
[ 29.385154] usb 1-8.3.4: cannot submit urb 0, error -2: endpoint not enabled
[ 29.385290] usb 1-8.3.4: cannot submit urb 0, error -2: endpoint not enabled
[ 29.385384] usb 1-8.3.4: cannot submit urb 0, error -2: endpoint not enabled
[ 29.888015] r8152 2-8.3.1:1.0 enx34298f75b477: Tx timeout
[ 35.008010] r8152 2-8.3.1:1.0 enx34298f75b477: Tx timeout
[ 38.818450] r8152 2-8.3.1:1.0 enx34298f75b477: Tx status -2
[ 38.818610] r8152 2-8.3.1:1.0 enx34298f75b477: Tx status -2
[ 38.818746] r8152 2-8.3.1:1.0 enx34298f75b477: Tx status -2
[ 38.819006] r8152 2-8.3.1:1.0 enx34298f75b477: Tx status -2

I can post the entire dmesg if it will be helpful. Thank you guys for taking a look!

So I used tail to follow /var/log/syslog while I plugged the device in and I got this

device descriptor read/64, error -110

As far as I can tell error 110 is something to do with a device trying to pull more power than is allowed by the USB port. Not at a solution yet, but one step closer maybe

It’s because the current power management thinks all devices on those ports are still limited to standard 500mA or 1A. This can’t be solved because the source code for Linux XHCI’s power management is inherently flawed.

A powered hub that needs a AC adapter to work will do a lot better than a hub which is self-powered, however if a bad command is sent down to the hub, the WHOLE hub stops working, regardless of power source.

1 Like

Well that is frustrating. Thanks for looking into it with me.