This. And I think there's also the software that's involved in all this.
At work, I have an HP laptop with Thunderbolt 4, DP alt-mode, etc.
I use an external screen and kb/mouse, so I have an HP USB-C G5 dock. It has a USB-C connector, only supports up to USB 3, but that's fine. It supports DP 1.4 and HDMI 2.0.
Its cable is fixed, so I'd expect it to be "up to standard". Also, HP Dock, HP laptop, Windows 11 as recommended by HP, you'd expect all this to just work, right?
Wrong! If I want 4k@60Hz on the monitor, I have to do a stupid dance of plugging the monitor on HDMI in addition to DP (doesn't work if DP isn't plugged in), unplug de DP, replug the DP, unplug the HDMI. It then works as expected. Colors are weird on HDMI (doesn't do 4:4:4 coding for some reason) so I insist on a DP connection.
Once this setup gets going, it will usually survive a sleep / wake cycle (if the PC wakes up, but that's a different story). However, there's a pretty good chance the image will be partially messed up: most often crazy colors and moving lines, sometimes the image will be OK, only somewhat misaligned (think old LCDs with VGA connectors before "auto-adjusting" them) and the monitor will complain of frequency mismatch or something. If I switch inputs on the monitor, it will come back OK. It will not survive a reboot (have to do the dance again). The BIOS has a special "use high definition" entry, that warns against reducing the USB bandwidth. Didn't make a difference.
At home, I have an HP desktop with Thunderbolt 3, DP out, etc. I have a USB-C monitor which works fine up until the Windows login screen when it goes blank (no signal). Windows install worked fine. It works if I force the resolution to less than 4k@60Hz. I only got to see the Windows desktop once with this. Didn't survive a reboot and never worked again.
None of this happens with Linux/X11, everything works as expected on the same hardware.
I fancy myself fairly technical, but I have to admit I have no idea what's going on. Not even where to start looking for issues. I've tried updating the BIOS/firmware across all devices, no luck.
See my comment elsewhere but usb-c to hdmi or thunderbolt to hdmi is always an active conversion, and those converter chips are (in my experience) pretty shitty around edge cases like sleeping. Those problems I’m referencing only show up when the laptop comes back from sleep.
Wouldn’t be surprising at all to me if it was just down to the active converter not handling it right, even on a fancy expensive dock. There are only so many active converter chips on the market after all and they’re oriented towards cost not correctness.
And I mean, mine sorta works after sleep… like 3/4 or 7/8 times. And if it were an active cable that you were plugging and unplugging every time, that works 100%. You only notice the flaw because it’s a dock, and that’s not really what the converter was designed for.
>This is DP pass-through, there's no DisplayLink or similar involved.
How do you know that it is DisplayPort pass-through?
From what I've seen, if it's going through a USB-C hub, there is almost zero chance that it is DisplayPort pass-through, although such a thing is possible to implement, in theory.
Because it shows up on Linux as an output of the integrated graphics card (DP-X-Y in xrandr), and it also works in the BIOS or during Windows installation.
Before this, I had a DisplayLink dock that would not work on Linux without specific drivers.
The HP specs [0] say the number of displays depends on the computer's graphics card.
Don't know if there's anything in between DisplayLink and pass-through, though, so I can't be certain it's not that.
I am pretty sure DP cannot be encaspulate in USB 3.1/3.2. (USB4 can carry DP over Thunderbolt), so alternative mode MUST be used (1 highspeed TX/RX pair for USB-C 5/10Gbps, and another pair for DP Alt Mode).
> This is DP pass-through, there's no DisplayLink or similar involved.
is it, or is there a re-driver? also, there are 4 high-speed lines in USB-C; 2 are used for USB3 so the other 2 are for DP-HDMI convertor and DP connector. seems like only 1 of HDMI or DP should work at 1 time.
anyways, this is not an issue with USB but an issue with the dock behavior.
How would I go about verifying that? I've never installed any driver for the dock, and the DP-connected screen works during early boot. Linux recognizes it as DP-X-Y. I've never had the curiosity of plugging in the HDMI port under Linux.
On Windows, it recognizes 3 screens when both DP and HDMI are connected (the third being the internal laptop display).
I know there's a similar HP dock, the G2, that does say it has DisplayLink, whereas this one doesn't.
> the other 2 are for DP-HDMI convertor and DP connector. seems like only 1 of HDMI or DP should work at 1 time.
If it's a USB 3.2 2x2, shouldn't that be able to handle one 4k@60Hz stream per lane, thus supporting two 4k@60 displays at the same time?
That's interesting, I've always seen Linux recognizing DP ports as only DP-X in xrandr. So my first guess would be that what you have within the dock is a something like a DP MST hub, to split the single DP port into two, and then one of these two ports goes into the active converter to HDMI (perhaps in the same chip), while the other is exposed as the DP socket.
You may be on to something, especially since I seem to remember people having MST displays complaining about wonky support.
Another fun fact: the laptop I'm typing this on shows 4 DP connections (DisplayPort-0 through 3), one HDMI-A-0, one eDP. There's no dock connected to it right now. When I was using the Chinese dock with a DP monitor, one of the four was showing up as connected.
The PC only has two USB-C connectors and one HDMI. So, I guess it expects to be able to drive two displays per USB-C port.
ya, fair, I just wouldn't rule out the HDMI chipset doing something stupid (negotiating down on colors etc) and that causing havoc elsewhere... like (as a sibling comment mentions) windows deciding to use that across all the panels etc.
Possibly, that's why I suspect the OS is somehow involved, too, especially since by default there's nothing connected to the HDMI port. Or, at least, some kind of interaction between the dock firmware and the OS.
The other commenter mentioning that Linux "doesn't care and plows through" could be on to something, too.
But I should note that I haven't "forced" anything. The display is detected as 4K@60Hz with no intervention on my part.
Whereas on Windows, before I do the dance, it only says 4k@30, I can't manually change it to 60 Hz; not with the standard Windows settings app, anyway.
This also happens on a separate dock. But on that one, it never works under Windows, DP or HDMI, dance or no dance. Works perfectly on Linux, though. However, that's some random Chinese dock off Amazon, so I chalked it up to shady implementation on its side.
However, this just goes to show that things aren't so "simple" as OP stated, things can fail in weird ways which aren't straightforward to diagnose. And the hardware isn't obviously broken, either, since I'm typing this on Linux attached to the Chinese dock in 4K@60Hz without having done anything special to get it going. So, something, somewhere, may be somehow out of spec, but how can I diagnose that? On the face of it, all my components are what I'm supposed to use.
I guess there are just too many moving parts, whereas a DP cable connected to the graphics card is pretty straightforward.
USB-C docks (as in USB and DP-Alt mode over USB-C) and dongles are a world of hurt. We had a bunch of them (including from reputable vendors like Lenovo and Anker) and we always had issues, needing to replug the cable because charging wouldn't work, crappy network adapters, suspend-wake issues, BlueTooth/WiFi interference, etc. The only adapter that worked well were the Apple Digital Multiport AV adapter, but it is overpriced and only has a measly 2 ports (plus power passthrough).
My wife and I both switched to Thunderbolt 3 docks both at home and at the office and the problems are gone. Everything always comes up, including after sleep-wake cycles. If often have my private MBP stationary and hooked up for days.
I really love Thunderbolt docks, just plug one cable and you have everything hooked up.
Well, I daily drive a Linux box, and I've been using a USB-C monitor with integrated hub for years without any issue. Both the HP and the cheap Chinese dock work perfectly with Linux. No sleep/interference/missing devices issues. I only noticed this because I was recently trying a few things on Windows at work. Hence, my suspicion that the OS is somehow involved.
Another issue is that thunderbolt only recently has become more common on PCs. My late 2021 AMD laptop doesn't have TB, for example. Only the higher-end HP laptops at work had it, but they had other issues which made them unusable for me (soldered RAM, under-powered CPUs and shiny screens), so I chose lower-end models.
I only noticed this because I was recently trying a few things on Windows at work. Hence, my suspicion that the OS is somehow involved.
I used a Lenovo USB-C Gen 2 Dock with a Linux-certified Lenovo laptop. 4k@60Hz didn't work (the lanes got misconfigured, worked fine on Windows), charging wouldn't work 25% of the times, the network interface would often not come up. Sleep/resume was hit and miss.
I didn't have a lemon, since we had two of these docks.
It’s always the cable. Except when it’s not, then it’s another cable.
What happens is Windows tries to help - and so switched out of the mode you wanted because something in the cable or negotiation indicated it wouldn’t work.
Linux often doesn’t do that and just blindly runs ahead - and so if the monitor becomes working a moment later - it works.
Utilities for Mac and windows can sometimes force what mode it uses.
This could possibly explain the issue with the USB-C monitor, but then why would this work after the HDMI circus? The hardware and OS clearly are capable of doing this, and no cable is replaced in the process. I also don't move them around during the reboot.
Things are just insanely complicated now but I don't blame the connector. I had the un-fun experience of trying to get 4k 60hz working on my Mac recently. Turns out I had to toggle a setting on my monitor to reserve more bandwidth for display resolution instead of for USB devices. This supposedly isn't a problem if the Mac supported display stream compression, and it's supposed to, but apparently that broke as part of some Big Sur update.
USB has always had software bugs but the explosion of optional features and unexpected hardware combinations has made it feel like Bluetooth; connecting is the easy part, but have fun negotiating all the different profiles and making sure both ends of the connection support the same things.
It's the exact same situation like having to debug a broken HDMI or DP cable. You don't get any more info, you just have less flexibility and more crap to lug around.