Does the FW16 really support USB 40Gbps?

Hi,

I did a “lsusb -t” and none of the devices show any speeds above 10000M
I was expecting to see some lines with something like this:
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 20000M/x2
or
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 40000M

But I only saw:

lsusb -t

/: Bus 001.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/5p, 480M
|__ Port 002: Dev 002, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 001: Dev 004, If 0, Class=Billboard, Driver=[none], 12M
|__ Port 001: Dev 004, If 1, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 003: Dev 003, If 0, Class=Hub, Driver=hub/3p, 480M
|__ Port 004: Dev 005, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 001: Dev 007, If 0, Class=Vendor Specific Class, Driver=[none], 12M
|__ Port 003: Dev 008, If 0, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 003: Dev 008, If 1, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 003: Dev 008, If 2, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 003: Dev 008, If 3, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 005: Dev 006, If 0, Class=Wireless, Driver=btusb, 480M
|__ Port 005: Dev 006, If 1, Class=Wireless, Driver=btusb, 480M
|__ Port 005: Dev 006, If 2, Class=Wireless, Driver=[none], 480M
/: Bus 002.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/2p, 10000M
|__ Port 002: Dev 002, If 0, Class=Hub, Driver=hub/3p, 10000M
/: Bus 003.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/1p, 480M
/: Bus 004.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/1p, 10000M
/: Bus 005.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/1p, 480M
/: Bus 006.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/1p, 10000M
/: Bus 007.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/1p, 480M
/: Bus 008.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/1p, 10000M
|__ Port 001: Dev 003, If 0, Class=Vendor Specific Class, Driver=r8152, 5000M

When I set mine up yesterday, I used a thunderbolt 3 dock with Ethernet for internet during the Windows setup, and it worked flawlessly.

@GigaChadSquirrel
With your setup, what speed are the USB / Thunderbolt working at? more 10Gbps ?

The 40gbit are usb4/tb3 which aren’t traditional usb protocols. You can use most of those 40gbit for pcie tunneling or displayport.

I get close to 4gb/s with an usb4 ssd enclosure but that’s pcie tunneled not traditional usb and won’t show up in lsusb.

@Adrian_Joachim
For clarity. “4gb/s” - lower case b normally means bits, and uppercase B normally means bytes. Did you mean “4G Bytes/s” here?

If the 40Gbps does not show up in lsusb when your usb4 device is doing pcie tunneling. Does it instead appear in “lspci”? If it does, can you show me what it appears as with “lspci -vv” looking for the line like “LnkSta: Speed 16GT/s, Width x16”
I don’t have a usb4 device yet so cannot test myself.
If it does not show up in “lspci -vv”, is there anywhere one can find the Link speed, and number of channels it uses?

Yes I mean bytes. Usually b is bytes in bit is bits for speeds (especially since the g is lowercase too, if the g was upper case it would be a different discussion) but I can see how it isn’t quite clear.

Yes it shows up in lspci, though the link speeds in lspci are a little confused though currently.

Boltctl does show you you current tb/usb4 link speed if that’s what you are asking.

@Adrian_Joachim
For the bits vs Bytes b vs B, I think this page explains it quite well:

Thank you for your answer.
What I understand now is:
FW16 does USB at up to 10Gbits/s using USB protocols and lsusb to view it.
FW16 does PCIe over USB at up to 40Gbits/s and also Display Port Alt mode (not DP+)
PCIe over USB is essentially thunderbolt and the Linux kernel uses the “thunderbolt” kernel module as the driver for it.
So, if I wish more that 10Gbits/s on the FW16, I need to look for “thunderbolt” capable devices and not 20/40 Gbps USB devices.

Its a lot clearer to me now, so thank you.

Arguing about that isn’t gonna be a productive conversation.

Yes

There may be quite a bit more overhead on those 40Gbits than you may be used to from usb (especially with tb3)but essentially yes.

It does seem that way.

Very few devices support 20gbit usb3, and none of the frameworks are among them.

For the best speed you’ll want usb4 since that seems to do pcie tunneling with less overhead but tb3 isn’t a lot slower (and tb4 is just* usb4 with a cert).

*You could theoretically leave out all the fun bits of usb4 since everything is optional but no one seems to have done that jet.

I completely agree with the comments here but I want to give one clarification. The reason that it’s thunderbolt.ko is historical. When the Linux kernel first got support for thunderbolt devices they started in that module.

This module manipulated the Intel firmware CM on most devices but used a “software” CM on Apple devices.

Later on Intel opened up the thunderbolt 3 specifications for any vendor to implement. When this happened Thunderbolt 3 became an optional feature for USB4 and a lot of concepts ended up being used for usb4.

When using USB4 all of the tunneling is configured by the thunderbolt kernel module.

Not all vendors support TBT3, but they may support USB4 PCIe tunneling.

Both can be used for passing through PCIe devices over USB4 fabric.

In the case of framework they do support both. So you can get a usb4 hub or thunderbolt3 device to use.

3 Likes