Linux 5.6 Will Likely Have USB 4 Support
Greg Kroah-Hartman, Linus Torvalds second in command, has merged code from Intel with USB 4 support into the Linux kernels linux-next.git tree. It is therefore highly likely that Linux 5.6 will support USB 4 devices with features like DisplayPort tunnelling, PCIe tunnelling and P2P networking. Only Intel and Apple host devices are supported by the current patches.
Greg Kroah-Hartman pulled support for USB 4 into linux-next.git in a commit on December 17th with documentation and additional fixes pulled December 20th, 2019. Code from linux-next is pulled into the mainline kernel as a matter of routine so it is very likely that Linux 5.6 will have USB 4 support.
The commit message on the patch initially adding USB 4 support to linux-next.git explains USB 4 as:
"USB4 is the public specification based on Thunderbolt 3 protocol. There are some differences in register layouts and flows. In addition to PCIe and DP tunneling, USB4 supports tunneling of USB 3.x. USB4 is also backward compatible with Thunderbolt 3 (and older generations but the spec only talks about 3rd generation). USB4 compliant devices can be identified by checking USB4 version field in router configuration space.
This patch adds initial support for USB4 compliant hosts and devices which enables following features provided by the existing functionality in the driver:
- PCIe tunneling
- Display Port tunneling
- Host and device NVM firmware upgrade
- P2P networking
This brings the USB4 support to the same level that we already have for Thunderbolt 1, 2 and 3 devices."
The new documentation for USB4 and Thunderbolt adds some additional details:
"USB4 is the public specification based on Thunderbolt 3 protocol with some differences at the register level among other things. Connection manager is an entity running on the host router (host controller) responsible for enumerating routers and establishing tunnels. A connection manager can be implemented either in firmware or software. Typically PCs come with a firmware connection manager for Thunderbolt 3 and early USB4 capable systems. Apple systems on the other hand use software connection manager and the later USB4 compliant devices follow the suit."
Thunderbolt 3 Rebranded
USB 1, 2 and 3 were created by a joint industry effort. USB 4 is nothing more than Intel's Thunderbolt 3 standard re-named. The following change to
drivers/Makefile makes that very apparent:
-obj-$(CONFIG_THUNDERBOLT) += thunderbolt/ +obj-$(CONFIG_USB4) += thunderbolt/
so does this change to
-config THUNDERBOLT_NET - tristate "Networking over Thunderbolt cable" - depends on THUNDERBOLT && INET +config USB4_NET + tristate "Networking over USB4 and Thunderbolt cables" + depends on USB4 && INET help - Select this if you want to create network between two - computers over a Thunderbolt cable. The driver supports Apple + Select this if you want to create network between two computers + over a USB4 and Thunderbolt cables. The driver supports Apple ThunderboltIP protocol and allows communication with any host
Get Ready To Replace Your Cables
USB 4 will require using a USB type C to USB type C cable, or, as
drivers/net/Kconfig currently says, "a USB4 and Thunderbolt cables'". Every single cable you have which is not a "Thunderbolt" USB type C to Type C cable is deprecated. The USB 4 specification mandates that hosts (computer controllers, hubs) support USB 2, 3 and 4. USB 4 devices have to support USB 2 but they do not have to support USB 3. That does not mean that computers made in the future will have the good old Type A connector - which means that there will probably be a thriving market for things like USB Type C to Micro B and USB Type C to Type B SuperSpeed cables. It is interesting that a "standard" has, over time, ended up with 10 different connectors.
New And Exciting Use-Cases
USB 4 aka Thunderbolt 3 supports transfer speeds up to 40 Gbit/s (5 GB/s). This allows USB 4 to be used for things like external GPUs since 4 lanes of PCIe 3.0 can be sent over a single USB 4 connection. It also makes it possible to tunnel DisplayPort signals over a USB cable in order to drive displays.
Only Intel and Apple Uses Need Apply
drivers/thunderbolt/Kconfig mentions that the merged USB 4 support is for "Apple hardware or on PCs with Intel Falcon Ridge or newer". "Intel Falcon Ridge" is actually a Thunderbolt 2 (capable of 20 Gbit/s) Thunderbolt controller from 2013.
There is no support for devices from AMD, Huawei or other competing technology companies in any of the USB 4-related linux-next.git commits.
Linux 5.6 is far away from a stable release. Linux 5.5 is currently on its third release-candidate. Best guesstimate based on the kernel's typical release-cycle places a Linux 5.6 release in March 2020. It will likely have the USB 4 patches - unless Linus Torvalds decides to put his foot down for some currently not apparent reason.