1

motherboard:
I have 6xUSB2.0 ports and 2xUSB3.0 ports on the motherboards back panel.
I have 3xUSB2.0 connectors and 1xUSB3.0 connectors onboard.

In front of my hightower:
i have an USB interface with 2xUSB2.0 ports which are connected to one of the motherboards USB2.0 connectors and i have 2xUSB3.0 ports which are connected to the motherboards USB3.0 connector.

output of:
lspci -v | awk 'BEGIN {nextCount=3} /USB controller/ {print $0; nextCount=0; next;} //{nextCount++; if (nextCount==2) {print $0;}}'

00:12.0 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI0 Controller (prog-if 10 [OHCI])
    Flags: bus master, 66MHz, medium devsel, latency 32, IRQ 18, NUMA node 0, IOMMU group 5
00:12.2 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB EHCI Controller (prog-if 20 [EHCI])
    Flags: bus master, 66MHz, medium devsel, latency 32, IRQ 17, NUMA node 0, IOMMU group 5
00:13.0 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI0 Controller (prog-if 10 [OHCI])
    Flags: bus master, 66MHz, medium devsel, latency 32, IRQ 18, NUMA node 0, IOMMU group 6
00:13.2 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB EHCI Controller (prog-if 20 [EHCI])
    Flags: bus master, 66MHz, medium devsel, latency 32, IRQ 17, NUMA node 0, IOMMU group 6
00:14.5 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI2 Controller (prog-if 10 [OHCI])
    Flags: bus master, 66MHz, medium devsel, latency 32, IRQ 18, NUMA node 0, IOMMU group 11
00:16.0 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI0 Controller (prog-if 10 [OHCI])
    Flags: bus master, 66MHz, medium devsel, latency 32, IRQ 18, NUMA node 0, IOMMU group 13
00:16.2 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB EHCI Controller (prog-if 20 [EHCI])
    Flags: bus master, 66MHz, medium devsel, latency 32, IRQ 17, NUMA node 0, IOMMU group 13
02:00.0 USB controller: Renesas Technology Corp. uPD720202 USB 3.0 Host Controller (rev 02) (prog-if 30 [XHCI])
    Flags: bus master, fast devsel, latency 0, IRQ 33, NUMA node 0, IOMMU group 15
03:00.0 USB controller: Renesas Technology Corp. uPD720202 USB 3.0 Host Controller (rev 02) (prog-if 30 [XHCI])
    Flags: bus master, fast devsel, latency 0, IRQ 43, NUMA node 0, IOMMU group 16

I have,
2xUSB3.0 controllers listed serials 02:00.0, 03:00.0
3xUSB2.0 EHCI controllers serials 00:12:2, 00:13.2, 00:16.2
4xUSB2.0 OHCI controllers 00:12.0, 00:13:0, 00:14.5, 00:16.0

because i have two USB3.0 controllers, and 4 USB 3.0 ports,
i think one controller is managing 2 USB 3.0 ports But why do i have so many USB2.0 controllers?
All OHCI controllers share the same IRQ and all EHCI Controllers schare the same IRQ.
Are there only two controllers for USB2.0 and listed multiple times?

when i look at path /sys/bus/usb/devices i see folders for usb1 to usb11
So every USB port reachable outside has an own bus number. But i have 12 USB ports outside???

it gets event more weird for me, when i dive into bus number 3, where my usb stick is located.
/sys/bus/usb/devices/usb3
serial file shows "0000:00:13.2" and product "EHCI Host Controller" thats information lspci shows, thats the controller.

but if i look up /sys/bus/usb/devices/usb3/3-0:1.0
it shows folders usb3-port1....5 and on port 5 a device folder is listed to my USB Stick.

What does that mean?
The USB port outside, where my usb stick is connected has Bus Number 3 and then has 5 ports -??????????
and on the fifth port my usb stick is connected, where are the other ports?
I really dont understand this. Can somebody help me?

1 Answer 1

1

What i've found. The folders for usb1 to usb11 in /sys/bus/usb/devices are the USB root hubs and represented by the USB bus number.
Each USB controller must implement an USB root hub, and the USB root hub is part of the USB controller and represent it (its a PSEUDO DEVICE at Device Number 1).

My USB3.0 controller at PCI Address 02:00.0 controls the two USB3.0 ports in front of my Hightower,
and it implemented two USB root hubs, at Bus Numbers 8 and 9.
When i read the serial file in folder /sys/bus/usb/devices/usb8 and /sys/bus/usb/devices/usb9 it shows the same PCI address of my controller.
When i read the speed file it shows Bus Number 8 has 480 speed and BUS Number 9 has speed of 5000.

So this different USB root hubs are for different speed. If i connect a slow USB device on my front USB3.0 port it connects to BUS number 8, a fast device connects to BUS Number 9.

The ports in /sys/bus/usb/devices/usb8/8-0:1.0 usb8-port1, usb8-port2 and the ports /sys/bus/usb/devices/usb9/9-0:1.0 usb9-port1, usb9-port2 are the same physical ports in front of my hightower. only attached to two different speed USB root hubs and managed by the same USB Controller.

I also read that USB2.0 has different controllers for different speeds, so thats why i have so many controllers, but the ports listed there can be same physical ports.

1
  • 1
    The oldest USB controller types were UHCI and OHCI (an Intel design and an open design, respectively), which were USB 1.x only. EHCI provides the USB 2.0 speeds, and was paired with UHCI/OHCI controllers for compatibility: older operating system that supported USB 1.x only could still use the UHCI/OHCI controllers, and if the OS had a USB 2.0 driver available, it could use the EHCI controller and its higher speeds. Once USB 2 become ubiquitous, a system might omit the UHCI/OHCI controllers and have just a built-in Rate-Matching Hub in front of the EHCI controller, for simplicity.
    – telcoM
    Commented May 14 at 20:27

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .