USB C → DisplayPort Adapter support

displayportkernelusb

I already posted this over at reddit, but got no response until now.

I bought this cable just to find out my system doesn't do anything. Both lsusb and tail -f /var(log/kern.log don't show any difference when plugging the cable in and out. Is it worth trying to get this to work or should I just send it back directly? What is the status of DP via USB–C in Linux? (Found a lot of rather confusing questions and answers out there)

$ lspci -d ::0c03 -k
00:14.0 USB controller: Intel Corporation Sunrise Point-LP USB 3.0 xHCI Controller (rev 21)
    Subsystem: CLEVO/KAPOK Computer Sunrise Point-LP USB 3.0 xHCI Controller
    Kernel driver in use: xhci_hcd
01:00.0 USB controller: ASMedia Technology Inc. ASM1142 USB 3.1 Host Controller
    Subsystem: CLEVO/KAPOK Computer ASM1142 USB 3.1 Host Controller
    Kernel driver in use: xhci_hcd

OS: elementary OS 0.4.1 Loki
Kernel: 4.9.18-040918-generic
Hardware: Dual-Core Intel® Core™ i5-7200U CPU @ 2.50GHz
Intel Corporation Device 5916 (rev 02)

Best Answer

[EDIT: I append at the end of this answer a very brief update, one year after i gave the answer here. If this update should be a second, separate answer, please lmk. Apart from this update at the end, the answer is unchanged]

Your questions are very timely, even though you asked them 7 months ago. And you asked two questions, so you get two answers:

  1. Is it worth trying to get this to work or should I just send it back directly?

A set of kernel patches to support DisplayPort over USB-C have just been published to the Linux-kernel archive here. So for the moment, you need to apply patches and roll your own kernel for it to be possibly worthwhile. (This is less scary than it might seem at first, so I hope you'll consider this encouragement and not the opposite).

A second constraint is that according to the that post in the Linux-Kernel archive, the patches are good for hardware platforms that use FUSB controllers. He will soon also publish support for UCSI controllers -- and I think (but am not positive) that both Intel and ASMedia controllers are of this type. To quote him:

I've tested these with a platform that has fusb302, and also with UCSI platforms. The UCSI driver will need separate support for alternate modes >that I'm not including to this series. I'm still working on it.

In other words, "soon."

  1. What is the status of DP via USB–C in Linux?

I learned about the above in an article in Phoronix, and the article states that the hope is to merge these patches into the 4.19 kernel.

Finally, it's worth noting that for the particular case of DisplayPort over USB-C, the cable is entirely passive and there is a rather mature standard, so you can be close to certain that your cable WILL work once there is OS support for it. This is also true of Thunderbolt over USB-C, but not true of HMDI, for example: A USB-C to HDMI cable is likely to be a DP-to-HDMI adapter on the inside, with the DP side simply using the standard USB-C connector.

If you are not going to deal with kernel patches, I would guess that your cable will 'just work' sometime between 3 months to one year from now.

EDIT/UPDATE: My day-to-day machine is a Dell 7577 Inspiron laptop, running stock Arch Linux. It has a USB-C port and an HDMI port, and I run X/openbox on it with THREE side-by-side monitors: one of them is connected with a stock/standard HDMI cable, and the other with a stock/standard USB-C-to-DisplayPort cable. "Three Monitors with Arch Linux and this particular Dell laptop: It just works". It seems that the prediction I made in the last sentence of the original answer has proved to be accurate.

That being said, there are two important little caveats/nits that I would certainly consider if I were buying a machine today, and wanted this configuration of monitors:

  1. I find the whole "hybrid/mixed/dual discrete and integrated GPU" architecture to be a pain to understand and manage. It's a pain, but it is possible (barely). On Dell systems this architecture is called "Optimus", and how you set things up will have an enormous impact on the kind of video function and performance you get. I realize that I'm being very generic, but there isn't any one thing that's true for all set ups. Basically: if you are looking a machine that has BOTH an integrated GPU AND a discrete GPU, do some research to make sure that OS you intend to install can support the configuration you wish to use.

  2. In particular, it seems that many (most? all?) modern laptops seem to hard-wire each monitor output port to exactly ONE of the two GPUs. So, for example, if the laptop built-in LCD display is hard-wired to the integrated GPU, then any time you use the discrete NVIDIA or Radeon GPU with an application, each frame will be copied at the end over to the integrated GPU in order to actually get displayed on the screen. It may well be that the performance gain from the discrete GPU is so enormous that this extra copy is a negligible price to pay. But it might not be; and even if it is, intensive users of discrete GPU-power often are the type of person who don't like to pay even the most negligible of prices.

I am no true expert, but i think that that's where linux support for three monitors is today. (If by "three monitors" one means "using simultaneously the built-in LCD screen and the two external monitor ports on the laptop."

Related Question