Linux - 12th gen - External display over USB-C not working

Context

I’ve just received my framework laptop 12th gen and I’m very happy with it. I installed Fedora first, everything was fine, then I tried Manjaro, it was ok.

Problem

For both of those distros I could not plug my external monitor with a proper thunderbolt cable through the USB-C port of my laptop to the thunderbolt 3 port of my monitor. If I plug it, I can hear a connecting sound, then a disconnecting sound, over and over and over.

Logs

When I run dmesg -w just to observe what’s happening here, I can see this:

connecting sound

[ 1078.254281] usb 3-2: New USB device strings: Mfr=0, Product=0, SerialNumber=1
[ 1078.254287] usb 3-2: SerialNumber: E80000816081
[ 1078.255563] hub 3-2:1.0: USB hub found
[ 1078.255644] hub 3-2:1.0: 4 ports detected
[ 1078.367668] usb 3-2: USB disconnect, device number 12

disconnecting sound

[ 1079.186824] usb 3-2: new high-speed USB device number 13 using xhci_hcd

connecting sound

[ 1080.220770] usb 3-2: New USB device found, idVendor=0451, idProduct=8142, bcdDevice= 1.00
[ 1080.220788] usb 3-2: New USB device strings: Mfr=0, Product=0, SerialNumber=1
[ 1080.220794] usb 3-2: SerialNumber: E80000816081
[ 1080.221932] hub 3-2:1.0: USB hub found
[ 1080.221991] hub 3-2:1.0: 4 ports detected
[ 1080.336357] usb 3-2: USB disconnect, device number 13

disconnecting sound

[ 1081.700203] usb 3-2: new high-speed USB device number 14 using xhci_hcd

connecting sound

[ 1082.734011] usb 3-2: New USB device found, idVendor=0451, idProduct=8142, bcdDevice= 1.00
[ 1082.734022] usb 3-2: New USB device strings: Mfr=0, Product=0, SerialNumber=1
[ 1082.734026] usb 3-2: SerialNumber: E80000816081
[ 1082.734995] hub 3-2:1.0: USB hub found
[ 1082.735019] hub 3-2:1.0: 4 ports detected
[ 1082.859733] usb 3-2: USB disconnect, device number 14

disconnecting sound

[ 1083.550258] usb 3-2: new high-speed USB device number 15 using xhci_hcd

etc, etc…

Question

Do you guys have any idea of what’s happening here ? I think it may be a firmware issue. Video output through HDMI is working fine, but I need to use my computer closed and connected to an external display with thunderbolt

Material

The screen I’m currently using: LG 38WN95C-W 38 Inch UltraWide QHD+ IPS Curved Monitor with Thunderbolt™ 3 Connectivity (38WN95C-W) | LG USA

Both of the distros where up-to-date

Hope you could help me ! :slight_smile:

What kernel are you on?

I’m currently on fedora with kernel version 5.18.16-200.fc36.x86_64

Are you powering it from the display? If so, try plugging in your power adapter along with the display.

1 Like

Forgive my ignorance, but what does using the Thunderbolt connection provide in terms of benefit for your use-case that the standard HDMI connection lacks?

Also, what about your monitor’s standard DisplayPort input? If you aren’t aware, video over USB-C is actually natively a DisplayPort signal, meaning it’s compatible without conversion using bog-standard passive bidirectional USB-C DisplayPort cables.

@John_Jacobs Yes my monitor serves as a power supply and usb hub. As you suggested, I tried plugging in the framework powersupply AND the thunderbolt cable and I finally got a signal. But If I dare plug in an usb device (like a mouse) on the screen’s hub, everything goes crazy. I thought it would work flawlessly with the laptop screen closed…

@NM64 I need to use my laptop closed, connected to an external display through TB3 that power the laptop and serves as a USB hub

In that case it sounds like there’s a problem in the connection; not so much in the firmware or hardware support. It seems that thunderbolt/USB-C cables for very high data transfer rates can be finicky, and that this gets worse when power supply is thrown in the mix as well. Perhaps try different cables and/or different ports to see if there’s variability in how the connection holds up?

I’m using a USB-C monitor, but just a plain 1920x1080@60Hz and it’s perfectly fine with a webcam, keyboard, mouse, ethernet plugged into it, while serving as power source as well.

For trouble-shooting, perhaps first try at way lower resolutions and see if things are stable there; then crank up until problems start?

So um, forgive my ignorance on your situation, but is there some reason that you can’t use the laptop closed with bog-standard DisplayPort or HDMI and use the USB ports on the laptop itself? It’s admittedly not a pretty single-cable solution, but it should at least work unless you planned on using the USB ports on the laptop itself as 3 additional ports in-conjunction with the 2 on your monitor for a total of 5 USB ports.

Basically I’m wondering that, outside of not being a pretty single-cable solution, what’s the difference between using Thunderbolt vs allocating the laptop’s 4 USB ports as the following:

#1 - power
#2 - video
#3 - first misc
#4 - second misc

And making sure to configure your OS so that it doesn’t automatically go to standby when you close the lid? I mean, the monitor itself only has 2 USB ports anyway so, again, unless you were planning on using a total 5 USB ports (2 on monitor+3 on laptop), I don’t understand what functionality would actually be missing from my suggested less-elegant rig-up.

Or does it really all boil down to wanting a single-cable solution?

@NM64 It’s really about the single cable solution since the USB hub on the screen is shared between my computers :slight_smile: But yes, your solution would work right away otherwise

@Nils You mean changing the resolution from the screen settings or the OS settings ? I tried different TB3 cables, but I think you’re onto something since when I plug the monitor in, I can see a popup on the monitor asking if I want to switch to thunderbolt, then it disappears and I can see the orange charging indicator on the side of the laptop, then this one stops and I have the pop up again…

I meant changing the resolution (and perhaps frequency) setting in your OS. For the lower settings, it should be able to negotiate lower transfer speeds, which would probably be more robust against less-than-optimal connections/cables. Also for my monitor, on rare occasions I’ll plug it in and it ends up negotiating only 30Hz, which is noticeably wobbly. Replugging or manually forcing 60Hz usually does the trick.

In your case, you’ll probably need full-on thunderbolt/USB-4 speed; I think my monitor only does USB-3. But USB-4 asks quite a bit of the cables and connectors … That said, there are people who use thunderbolt eGPUs on Framework laptops with reasonable results, so it’s worth a try to troubleshoot (and perhaps it is firmware or a driver somewhere …)

Presumably they mean from the OS settings. As an example, I recently dealt with a failing DisplayPort to HDMI adapter whereby, above a certain video resolution that was below even 1080p60, it would just give me no video and/or the OS would just straight-up fail to actually change video mode.

That being said, it’s worth noting that Wayland vs X11 can make a difference in this regard - from my experience, changing your desktop resolution on X11 always changes the actual video mode being output to your monitor since Intel graphics on Linux specifically do not support upscaling the desktop resolution via the GPU on external displays unlike AMD and Nvidia graphics (something I found out the hard way).

But on Wayland, especially on GNOME, it can sometimes be ambiguous if reducing your desktop resolution is actually reducing the resolution being output to your monitor or if your GPU is then upscaling that lower resolution to your monitor’s native resolution, negating the bandwidth savings from running that lower resolution.

Regardless, if you can get it working with a lower resolution, then the next thing to try are various tricks to reduce bandwidth without reducing resolution, e.g. a custom resolution that’s simply the same as your panel’s native but with reduced blanking, and/or even just straight-up reducing the refresh rate since it is a 144Hz monitor.

One thing to note is that the cvt command only understands reduced blanking for refresh rates that are multiples of 60, so either just use 120Hz or create a custom modeline yourself, perhaps using the Windows program CRU to figure out the necessary timings (you can’t apply CRU’s settings via WINE, but it works fine for calculating the necessary timing information - just note that this monitor might use DisplayID and I have no idea how that’ll impact things).

…that being said, because this monitor also supports AdaptiveSync, it’s very possible that making a custom resolution on Linux will break that since I have no idea of xrandr even has a way to work with VRR (assuming AdaptiveSync even works at all?)

@Nils The thing is, the OS doesn’t let me change the resolution, the screen is not even shown in display settings :frowning:

@NM64 Shall I try using X11 instead of wayland then ?

I’d say just try it in a live session of a distro that definitely uses X11, such as Linux Mint (protip: Ventoy is your friend for booting ISOs).

One fun thing about Linux Mint is, even in a live session, you can still log out and log back in without actually rebooting which should in theory allow the use of an xorg.conf file if that’s something you want to fiddle with.

@NM64 Oh ok nice ! I’ll give it a try and let you know

@NM64 I did not know Ventoy, I use etcher most of the time.

edit: Ventoy is really cool :slight_smile:

@NM64 omg… it works with X11 on linux mint. bye bye wayland

nevermind, it was working only with the live version… How weird

Kinda sounds to me like it’s the monitor not the laptop or cable. I have a LG that I connect DP (USB-C), different model than yours, that can be really finicky.

Time to narrow this down. Connect to the monitor with no other power supply and no devices attached to the monitors usb hub. If that works, start adding usb devices to the monitor and see what happens. Do the same with your framework power supply also connected to your laptop.

Also, if you have a friendly computer shop nearby maybe you could try your desired setup with a different monitor. Definitely a pain to drag your stuff to a shop but it would answer certain questions. Especially given that’s an expensive monitor.

Weird about wayland/X11, different kernel in the live image?

Edited to add: Don’t think will have any effect but remove the usb module and connect directly to the laptop carefully and gently. The module is just a couple of connectors and a wire, but it sounds like this is driving you crazy so try everything…

@John_Jacobs I tried all of that sadly… And I also tried on other monitors on which it works great. I really think the monitor is the problem, it already had some weird behavior with my mac previously.

It’s kinda working with linux mint and xorg, but as I plug or unplug an other usb device, it’s suddenly christmas and everything starts to blink.

I’ve rolled back to good ol HDMI but without my shared keyboard and mouse

thanks to all of you for the help either way :slight_smile:

1 Like