multi head output via usb-c adapter (display port / MST)
Hello,
there are a couple of low cost usb-c / thunderbolt port replicators with multiple graphic outputs available on the big online platforms. For example 2× HDMI, 1×VGA plus additional USB ports etc.
Internally the display outputs are connected via DisplayPort. If you connect a monitor to one of the ports, it's detected as display port connection in xrandr. Always the same dpX in xrandr, independently of which physical port in use. This suggests that all physical outputs are connected to the same DisplayPort output.
On Microsoft's Windows these docks support multi headed output, like a different image on each display (called expand mode in Windows). However the vendor advertises, that on MacOS the adapter can only display the same image on all ports of the adapter. This might be a hint, that the adapter internally uses DisplayPort's Multi-Stream Transport (MST) technology for the second and third display output (2nd HDMI, VGA), as Apple does not support MST while Microsoft does. Linux behaves just like MacOS here and only mirrors the image.
Linux is supposed to support MST since like around 2014. There are parameters to enable it for i915, e. g. i915.enable_dp_mst={0,1}.
However unfortunately those USB-C docks do not support multi-headed output on Linux. The second monitor is not detected, there is just a mirrored image of the first monitor on monitor two and three.
Does Linux support MST over Thunderbolt 3/4? Is there maybe a hidden command that the Windows driver uses to switch MST on in the dock's chipset?
Any hints on how to debug this would be highly appreciated! Those adapters become more and more popular, they are affordable and it would be awesome to make them fully work with Linux.
According to your ”how to file a bugreport“, I'm attaching a couple of log files. They were created on Ubuntu 21.10 with the latest mainline kernel available 5.17 rc6. The hardware tested supports up to four display with the exact same adapter on Windows (laptop interal, 2× HDMI, 1× VGA on the adapter).
Any ideas where to start debugging? There are a couple of error messages in the dmesg log. Unfortunately I don't understand them.
Best, Matthias