Score:0

4K External Display USB-C Doesn't Work - Defaults to 2K

de flag

I've been troubleshooting this problem for some time and can't seem to find a solution for this. I'm also having a hard time exactly pinning down where the problem may be. So, any help just troubleshooting would be appreciated.

Hardware and Environment

  • Surface Book 3
  • Kubuntu 22.04
  • X11 - I haven't tested anything in Wayland yet, there are reasons why I still use X11 and would like to get 4K working in X11 if possible.
  • Custom Latest Surface Kernel 6.1.6-surface - no issues reported or resolved in the linux-surface github issue tracker about running 4K on the Surface Book 3, besides my own report. I'm not ruling out that it's the custom kernel that doesn't support it for some reason, but with no response there, I'm trying other places in search for help.
  • Proprietary Nvidia Driver (version 525.60.11) - I'm using this one currently, but I have also tried the latest nvidia-driver-525 and it seems to have the same behavior.
  • Testing with two different 4K monitors through USB-C to USB-C and DP to USB-C

Current Behavior

First, I need to note that both monitors work fine in Windows with both cable types. I know that the USB-C port on the Surface Book 3 supports 4k@60hz, and both monitors that I'm using have no issues in Windows.

Another note. This is not a 30hz versus 60hz issue that seems to be a common issue on these forums. I have confirmed in Windows that both monitors support 4k@60hz without issue. This means that the monitors, cables, and usb-c port all support 4k@60hz with a single external monitor connected.

When the monitor is connected before the computer boots, 4K works both when there is terminal output during boot, and when the SDDM login screen appears. As soon as I log into an account, it drops down to 2K. This seems to be inconsistent between my two 4k monitors though as one of them seems to switch between lower resolutions for the terminal and SDDM login at random.

When a 4K monitor is plugged in after boot, and when the user has logged in, it detects the monitor and sets the resolution to 2K by default. If I go to configure display settings, there is a 3840x2160 resolution option. When I select the 4K option, it attempts to change to 4k, but then drops back down to 2K, and also removes the 4K option from the display manager, and when I run xrandr from a command line. (4K does show up with xrandr up until I try to switch it to 4K, afterwards the 4K display mode is removed).

What I've Tried So Far

  • Like I stated before, I have tried both the latest Nvidia driver in the repositories, and Nvidia's proprietary driver from their site. Both to seem to behave the same as described in Current Behavior.
  • I have tried, using prime-select, all available hybrid modes Intel/On demand/Nvidia - Same results as the Current Behavior.
  • I have also tried purging the Nvidia drivers, and just using the Intel chipset - Same results as the Current Behavior.
  • I have gotten the exact modeline from windows for one of my monitors in Windows, for creating a custom display mode with xrandr in Linux. When I try to force the display with this new display mode, it doesn't work. Setting it with an xrandr command makes the screen go blank for a moment, and then it kicks back to the previous usable resolution. Setting it in Kubuntu's display configuration settings dialog causes the system to lock up, requiring a hard reboot.
  • With this working Windows modeline I seem to be able to trick Linux to use it. I start by setting the external display to this custom 4K resolution in the current session. The 4K screen will go blank and will usually lock up the system completely (except for the mouse cursor on the laptops monitor). I then hard restart the computer, while keeping the monitor plugged in, and I'm able to login to my account and it maintains 4K@60hz. This seems to be inconsistent though, and I have only been able to get it to occur twice after trying many more times. In other words, I can't consistently make this happen.

Please let me know if you want to see any logs, I can get those uploaded.

Here is a dump of dmesg with the Nvidia proprietary driver, 'nvidia' selected with nvidia-prime, and with the external 4k monitor connected during boot. https://mega.nz/file/IZIFmKiZ#5AIhEVRnUsYAJWHQXs-uieqiRkutojR8ALTolFzl2dA

EDIT

Just loaded up a live version of Ubuntu 22.04, and 4K seems to be working out of the box with that. Ubuntu 22.04 seems to use Wayland as it's default display manager. Perhaps this could be an issue with KDE or maybe X11?

EDIT

Decided to boot up a live version of Kubuntu 22.04 as well. It uses X11 by default, and 4k@60hz is working out of the box as well there. So, I don't think this is a X11 vs. Wayland issue.

I reinstalled Kubuntu 22.04 a few days ago to see if that might resolve the issue, but I didn't have the external 4k monitor plugged in during OS install, so I didn't notice that it was working there before. But after the OS installed, I'm fairly certain that 4K wasn't working, even before using the custom surface kernel. I'm going to to do a full OS reinstall here soon to confirm this though.

Score:0
de flag

Looks like there is an issue with the current surface kernel (6.1.6-surface) and the nvidia driver version I'm using (525.78.01 from the Ubuntu Repository). My guess is the driver downloaded from Nvidia directly will work now as well, though I haven't tested that yet.

Not sure exactly what the issue between the kernel and nvidia driver is at the moment, but I do have workaround.

I downgraded my custom Surface kernel to the closest matching default Ubuntu kernel, and external monitors started working again, and the Nvidia driver (525) seems to be functioning as well.

In my case, the current Ubuntu kernel is 5.15.0-58, and so I chose version 5.15.3-surface from the linux-surface github releases page here:

https://github.com/linux-surface/linux-surface/releases/tag/debian-5.15.3-1

I sit in a Tesla and translated this thread with Ai:

mangohost

Post an answer

Most people don’t grasp that asking a lot of questions unlocks learning and improves interpersonal bonding. In Alison’s studies, for example, though people could accurately recall how many questions had been asked in their conversations, they didn’t intuit the link between questions and liking. Across four studies, in which participants were engaged in conversations themselves or read transcripts of others’ conversations, people tended not to realize that question asking would influence—or had influenced—the level of amity between the conversationalists.