All USB ports on motherboard running through the same bus

0

I have a Gigabyte H87-HD3 motherboard. According to the specification it supports up to 8 USB 2.0/1.1 ports. Now I try to connect a device that is non-compatible with USB 3.0. It does not work on any of the USB ports, neither directly on the board nor on the case, neither blue USB 3.0 ports or others.

While trying to get my device to work, it appeared to me that all of the ports are routed to the same controller and I am wondering if this is correct. I am on Ubuntu, this is the output of lsusb -t:

/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 5000M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/14p, 480M
    |__ Port 5: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 5: Dev 2, If 1, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 5: Dev 2, If 2, 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/8p, 480M
/:  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

As you can see, Bus 03 has an xHCI driver, the speed is USB 2.0-like. No matter where I connect my devices, they always appear under Bus 03. I tried this with both Ubuntu and Windows 10, so I do not think that this is a software issue.

Could someone clarify this to me? Does the board route everything to the same Bus? Is there no proper USB 2.0 support despite the specification?

Till B

Posted 2017-07-11T20:03:49.203

Reputation: 103

It's common for a USB hub to be integrated with a USB host controller so that the USB host controller can service more than one USB port. IOW the existence of multiple USB ports (on a motherboard or even an SoC) does not indicate the exact number of USB host controllers. – sawdust – 2017-07-11T20:37:50.587

Answers

2

You very clearly have 4 different busses. The USB 3.0 (XHCI) controller shows up on two busses (busses 3 and 4). That's for compatibility reasons, the USB 2.0/1.0 part of the controller gets a different bus.

On bus 1 and 2 are two USB 2.0 (EHCI) controllers, each with two ports, one of which is probably a debug port which is not connected (see dmesg), and one is directly connected to an integrated hub each (one with 6 ports on bus 1, and one with 8 ports on bus 2).

So if you look at lspci, you should see 3 USB controllers, one XHCI and two EHCI. Very likely the EHCI controllers are in the Southbridge (check the address).

The datasheet for the Gigabyte H87-HD3 says

Up to 6 USB 3.0/2.0 ports (4 ports on the back panel, 2 ports available through the internal USB header)
Up to 8 USB 2.0/1.1 ports (2 ports on the back panel, 6 ports available through the internal USB headers)

So the 6 USB 3.0 ports are where they belong, and 6 of those ports are also on bus 3 in USB 2.0 compatibility mode.

Now it's possible that the XHCI controller has 8 extra USB 2.0 ports (google the data sheet and check), and the board designers only used those ports, and ignored the additional 14 ports that are likely on the Southbridge. In that case, indeed all ports would be routed through a single controller, and if you have a USB device that for some reason doesn't like this particular controller, you may be out of luck.

But it's impossible to say that definitely, though if you plugged a working USB 2.0 device in turn into each of the 14 ports, and it showed up on bus 3 in every case, with a different port number, it starts to sound very likely.

Have you tried to connect an external hub to one port, and connect the "difficult" device to that hub? That may help.

dirkt

Posted 2017-07-11T20:03:49.203

Reputation: 11 627

I tried a USB 2.0 wifi dongle in all available ports of my computer. It always showed up on bus 3. – Till B – 2017-07-13T10:49:59.647

Do you think that an external 2.0 hub would accept 2.0-only devices in my configuration? Or should I rather be looking for a dedicated USB 2.0 pci extension card? – Till B – 2017-07-13T10:50:28.167

1The idea to use a USB 2.0 hub was for testing, because most people have a hub somewhere or can borrow one. An USB 3.0 hub is also worth a try, because AFAIK it has to translate from USB 3.0 to USB 2.0 if a USB 2.0 device connects. In both cases, the idea is to let the "difficult" device talk to the hub instead of the controller (whatever goes wrong with that pairing). The most foolproof solution, if you have to buy something anyway, is an USB 2.0 card, if you happen to have free PCI slots. – dirkt – 2017-07-13T11:29:15.703