On 31/8/24 12:25 am, Alan Stern wrote:
On Fri, Aug 30, 2024 at 10:14:20PM +1000, Eyal Lebedinsky wrote:
I assume that the generated list is a tree, so each leaf (Device/If) is on only one point.
I note this output:
$ lsusb -tv
/: Bus 001.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/16p, 480M
ID 1d6b:0002 Linux Foundation 2.0 root hub
[trimmed]
|__ Port 004: Dev 004, If 0, Class=Hub, Driver=hub/4p, 480M
[trimmed]
|__ Port 005: Dev 006, If 0, Class=Hub, Driver=hub/4p, 480M
[trimmed]
|__ Port 006: Dev 019, If 0, Class=Hub, Driver=hub/4p, 480M
ID 2109:2817 VIA Labs, Inc.
/: Bus 002.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/10p, 10000M
[trimmed]
|__ Port 006: Dev 006, If 0, Class=Hub, Driver=hub/4p, 5000M
ID 2109:0817 VIA Labs, Inc.
I removed some content that is not relevant to my question.
Note the Bus 001.Port 006 and Bus 002.Port 006 entries.
I verified that both are for the same (one) device. They do not show when I disconnect it.
The device is an external 4-port USB3.0 hub. It is listed once as 480M and once as 5000M.
Nothing is plugged into any of the four ports.
Is this correct? Why does this device show twice in the list?
USB 3 actually uses _two_ physical buses. Each cable has two twisted
pairs of wires carrying the SuperSpeed (5000 Mb/s or more) USB-3 data in
and out, and also has two wires carrying the legacy USB-2 data (480 Mb/s
or less) in and out.
These physical buses are represented separately in the kernel. In your
example, Bus 001 and Bus 002 use the same cable and the same xHCI host
controller; Bus 001 is the legacy USB-2 bus (you can tell by the speed)
and Bus 002 is the SuperSpeed bus.
Most devices use one or the other of those signal paths, depending on
the speed they connect at. But hubs have to handle both paths, because
the devices plugged into them may want to use either one. Therefore
your VIA Labs hub connects to both of these buses. That's why it
appears twice in the output from lsusb.
So this is expected, good.
BTW, the reason I looked at this is that I started, lst night, to be flooded with these messages:
kernel: usb usb2-port6: Cannot enable. Maybe the USB cable is bad?
and I thought it was from a USB-C PCIe card I have.
Rebooting the machine and cold shutdown/boot did not help, not even removing the PCIe card.
Now I looked at all the other devices. and just plug/unplug this USB3 hub stopped the errors.
I still do not know why this started at 5am today, when a lsusb runs from cron. Hope it works tonight.
I learn something every day.
Thanks,
Eyal
Alan Stern
--
Eyal at Home (eyal@xxxxxxxxxxxxxx)