1 |
On 2020.09.24 15:35, Sid Spry wrote: |
2 |
> On Tue, Sep 22, 2020, at 7:11 PM, Jack wrote: |
3 |
> > I've got a Ryzen 5 2600 in an MSI B350 Tomahawk motherboard. The |
4 |
> specs |
5 |
> > imply that the CPU produces four USB 3.0 ports and the chipset |
6 |
> produces |
7 |
> > 6 USB 2.0 and four USB 3.1 (although the last four are not available |
8 |
> > with this motherboard. |
9 |
> |
10 |
> Even high end motherboards tend to only bring out 1 or 2 root hubs. |
11 |
> That the |
12 |
> chip supports 4 root hubs does not mean all of them were used. |
13 |
> Typically there |
14 |
> are two groups of USB3 and one or two groups of USB2. |
15 |
The mobo specs say I should have 6 USB2 ports (two on the rear plus two |
16 |
headers), 4 USB3 ports on the rear (three Type-A and one Type-C,) plus |
17 |
two USB3 headers. I know there is another USB3 hub in the chipset |
18 |
which is not available through the mobo. dmesg and lsusb show two USB2 |
19 |
hubs and two USB3 hubs (one of which is clearly the unavailable one.) |
20 |
Where is the extra USB2 hub coming from and where is the missing USB3 |
21 |
hub? |
22 |
> |
23 |
> Sometimes it's just one USB3 root hub and they attach all of the USB2 |
24 |
> ports to |
25 |
> it, making everything run at USB2 speeds. |
26 |
But connecting a USB2 device to a USB3 hub will slow things down, but |
27 |
they should not cause a USB3 hub to be identifed as USB2, just to work |
28 |
at the lower speed. Am I wrong about this? |
29 |
> |
30 |
> With USB2, hubs are required to have a translation unit that speeds |
31 |
> USB1 |
32 |
> packets up to USB2 speeds. Even with these translators you can incur |
33 |
> delays |
34 |
> waiting for slower USB1 devices to respond as they will take ~4x |
35 |
> longer, and |
36 |
> then the buffered data is sped up when it is put on the bus. |
37 |
> |
38 |
> With USB3 there is no such requirement. This would be fine as the |
39 |
> USB2 is |
40 |
> on separate wires but most USB3 silicon seems to be implemented in |
41 |
> such a |
42 |
> way that USB2 transactions slow down the USB3 transactions. In some |
43 |
> cases |
44 |
> this is visible with `lsusb -t`: putting a USB2 device on a USB3 bus |
45 |
> will |
46 |
> downgrade all devices to USB2 speeds (showing USB3 devices that were |
47 |
> 5000M as 480M), and even if it is not visible, you may see transfers |
48 |
> take ~10x |
49 |
> as long. |
50 |
> |
51 |
> I found all of this out when benchmarking flash drives. My |
52 |
> motherboard was |
53 |
> wired such that every important USB3 port shared the keyboard and |
54 |
> mouse |
55 |
> ports. If you plug a USB1.1/USB2 keyboard and mouse in, everything |
56 |
> else |
57 |
> slows down. |
58 |
Again, I'm not yet worried about speeds. I'm worried that every |
59 |
external port show up connected to a USB2 hub. To me, that means that |
60 |
xHCI is calling one USB3 hub USB2 or something is not being identified |
61 |
correctly. |
62 |
> |
63 |
> USB3.1 I think explicitly addresses this issue saying that USB3 |
64 |
> should always |
65 |
> run at USB3 speeds, but vendors still seem to be churning out broken |
66 |
> motherboards. |
67 |
> |
68 |
> > lsusb shows |
69 |
> > Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub |
70 |
> > Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub |
71 |
> > Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub |
72 |
> > Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub |
73 |
> > |
74 |
> > lsusb -t shows |
75 |
> > /: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M |
76 |
> > /: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 480M |
77 |
> > /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 10000M |
78 |
> > /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/10p, 480M |
79 |
> > |
80 |
What I didn't post is the bits from dmesg that show that bus1 and bus2 |
81 |
are from PCI 00:03.0 Host bridge: Advanced Micro Devices, Inc. [AMD] |
82 |
Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge, and bus3 and bus4 |
83 |
are from PCI 1d:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] |
84 |
Zeppelin USB 3.0 Host controller. Bus2 is clearly from the B350 |
85 |
chipset, and not actually available. Bus1 (10 ports even with the |
86 |
external hub not connected) seems like the 2 rear USB2 ports plus the |
87 |
two headers, plus four more ports apparently not actually available. |
88 |
If bus3 and bus4 are from the CPU, I don't think there should be any |
89 |
USB2. If they are from the Chipset, then were are the USB3 ports from |
90 |
the CPU? |
91 |
> |
92 |
> I am pretty sure the pairs of ports are linked. This seems to be a new |
93 |
> development, and I'm not really sure what it means yet. |
94 |
Pairs of ports, or pairs of busses? |
95 |
> |
96 |
> > Bus 01 shows 10p because there is a 4 port external hub connected, |
97 |
> so |
98 |
> > that should be the 6 USB 2.0 ports - two rear ports, and two two |
99 |
> port |
100 |
> > headers (JUSB1 and JUSB2) |
101 |
> > Bus 02 is (I assume) advertised by the B350 chipset, but I don't |
102 |
> expect |
103 |
> > it to show up on any physical ports or headers |
104 |
> > Bus 03 is a mystery, as I have no idea where the extra USB 2.0 ports |
105 |
> > are coming from |
106 |
> > Bus 04 should be the USB 3.0 generated by the CPU, and I assume |
107 |
> should |
108 |
> > be what feeds the JUSB3 and JUSB4 USB3 headers |
109 |
> > |
110 |
> > The rear IO panel has 2 USB 2.0 ports, and if I plug anything into |
111 |
> > them, they show up as ports 8 and 9 on bus 1. |
112 |
> > The front of the case has two USB3 ports, which show up on the bus |
113 |
> 1, |
114 |
> > ports 1 and 2 if the connector is in JUSB4 on the mobo, or ports 3 |
115 |
> and |
116 |
> > 4 if using JUSB3. |
117 |
> > The three Type-A USB3 connectors on the back show up on bus 3, |
118 |
> ports 1, |
119 |
> > 2, and 4, with port 3 presumably being the Type-C connector. I |
120 |
> don't |
121 |
> > have anything to test in the Type-C port. |
122 |
> > |
123 |
> > I'd be really surprised if the back IO panel on the mobo is |
124 |
> miswired, |
125 |
> > but why are the supposed USB3 ports all showing up as USB2? I have |
126 |
> one |
127 |
> > webcam capable of USB3, but it's only connecting at 480M (per lsusb |
128 |
> -v) |
129 |
> > but it's plug shows the standard USB logo, not the superspeed |
130 |
> version. |
131 |
> > |
132 |
> Your motherboard technically isn't miswired per the USB spec. But it |
133 |
> is |
134 |
> miswired in the sense de facto none of your ports may support USB3. |
135 |
The specs for the motherboard explicitly say there should be four USB3 |
136 |
ports on the IO backplane. dmesg and lsusb show anything plugged in |
137 |
there as connected to bus3. I've interpreted the 480M speed as being |
138 |
USB2, but I suppose it could just be a slow USB3 bus also. I'll need |
139 |
better info on interpreting the additional bits of info dmesg shows |
140 |
when accessing that bus/device to be certain. |
141 |
> |
142 |
> You'd have to do more testing yourself to ensure your system is broken |
143 |
> in the same way mine is, but it is definitely possible. If you get a |
144 |
> response |
145 |
> from the manufacturers please let me know what it was. |
146 |
MSI says only that they don't support Linux. They basicall won't do |
147 |
s**t for me unless I install Windows. I'm currently exploring whether |
148 |
I can reasonably do that without messing up my entire system. I just |
149 |
don't trust Windows, so I may end up removing my HDDs and installing a |
150 |
spare HDD to install Windows just to see what it shows for USB, and to |
151 |
possibly get some answers out of MSI. It doesn't make me happy. |
152 |
> |
153 |
> I have a cheap Intel embedded system with this same problem, and a |
154 |
> B350 system from ASRock with suspicious USB3 behavior that I haven't |
155 |
> been able to investigate well. |
156 |
> |
157 |
> Cheers. |
158 |
> |
159 |
> P.S.: Another funny one I have is a B350 motherboard having enough |
160 |
> VFIO groups to do GPU passthrough, but arranged explicitly so you |
161 |
> can't compartmentalize devices. Everything except the NVMe port is |
162 |
> in one giant group. |
163 |
I've got 19 iommu groups, and I think all have at least one device, so |
164 |
that seems good, even if it currently seems irrelevant to me. |
165 |
> |
166 |
> Sounds like false advertising to me. |
167 |
That's what I'm trying to figure out, but I can't imagine ALL users of |
168 |
this motherboard would accept a total lack of usable USB3 ports. |