1

Using Ubuntu 18.04, with my desktop motherboard I obtain:

$ 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 13: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 14: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 14: Dev 3, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
    /:  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

Motherboard has exactly 14 USB physical connectors, like the number of ports of Bus 03.Port 1: Dev 1. Any new USB device (for example, a USB 2.0 storage key) shows up as a child device in Bus 03.

The ones shown by lsusb -t should be all the USB devices in this system. Then:

1) If Bus 003 alone is able to cover all the physical USB connectors in the motherboard, what are Bus 001, Bus 002 and Bus 004?

In this answer, dealing with USB buses, it is stated that:

Some or all of these might have external ports for plugging in various USB external devices.

implying that some USB buses may have no external ports. But then:

2) What could such phony buses be useful for, if no internal (for example, soldered) devices are connected to them, and no external device can be connected to them as well?


Edit: this (very useful) answer deals with bus numbering. My post deals instead with the possibility that some USB buses are listed by the Linux kernel, but they do not correspond to any real bus. Why these buses appear, and what they are used for? This is different than simply dealing with the bus numbering convention. I am also convinced that this is a software question, because it is about how the Linux kernel represents hardware.

2

The USB3 standard brought the SuperSpeed mode, with new cables and connectors. Your bus 4 covers the SuperSpeed mode, which uses an entirely different set of wires in the USB cables. So as the higher-speed mode is physically separate from the old USB wiring, it makes sense for it to appear as a separate bus altogether.

That leaves buses 1 and 2. They are there basically to allow the easy installation of Windows 7 using USB keyboard, mouse and/or installation media :-)

Remember that Windows 7 (and any pre-USB3 operating systems) did not have XHCI USB controller drivers built-in. So, as a backwards compatibility feature, your system also has EHCI USB2 controllers too. The system firmware has the option of initially starting just the EHCI controllers and connecting them to the USB 2 lines instead of the XHCI controller. This allows operating system installation programs to get up and running using plain old EHCI USB drivers for keyboard, mouse and USB storage.

When the appropriate driver is installed and powers up the XHCI controller, there is a hand-over protocol that allows it to take over the control of USB2 side of the ports too. At that point, the EHCI controller can be completely disabled. So, your USB buses 1 and 2 are two cheap backward-compatibility EHCI controllers that have now handed over their respective USB ports to the shiny new XHCI controller.

Note that the two EHCI controllers only support 2 ports each, and they are connected with separate root hub objects, that support 8 and 6 ports respectively, giving a total of 14 USB2 ports - exactly the same number as handled by the single root hub of bus 3, which is the "slow" side of the XHCI controller.

(Back when USB 2 was introduced, there was a sort of similar solution to the backwards compatibility problem: the old USB 1.1 UHCI/OHCI controllers existed as "companion controllers" along with the USB 2.0 EHCI controller for a long time. But that solution did not include a hand-over protocol, so the two generations of USB controllers lived on side-by-side for quite a long time. With USB 3, the specification makers included the hand-over protocol to hopefully get rid of the legacy EHCI controllers a bit faster.)

  • Thank you for the very detailed information. It is all exactly as you described it. I hope this is useful for all the owners of motherboards with these features. – BowPark Apr 4 at 7:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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