You are not logged in.

#1 2021-11-27 12:23:37

ruuda
Member
Registered: 2021-11-27
Posts: 2

Refresh rate of external display on dock not recognized

Summary

I have two 4K displays connected to my Dell WD19TB Thunderbolt dock. With two different laptops, I am able to drive both displays at 3840x2160 at 60 Hz. However, with a newer laptop, I can only drive one of the displays at 60 Hz, and the other one at at most 30 Hz.

Details

I am using the Dell WD19TB Thunderbolt dock. It is capable of driving two displays at 3840x2160 at 60 Hz, but not for all combinations of ports: one of the displays has to connect to the Type-C/Thunderbolt 3 port on the dock, the other to one of the DisplayPorts. This is how I connect my displays, and it works fine on the following two laptops:

  • 2015 Dell XPS 9550 (Intel Core i7-6700HQ)

  • 2020 Dell XPS 9500 (Intel Core i7-10750H)

It doesn’t work with this laptop:

  • 2021 Dell XPS 9510 (Intel Core i7-11800H)

With the 9510, it will drive one display at 60 Hz (the one connected through DisplayPort), and one at at most 30 Hz at 3840x2160 (the one connected through Type-C, with a Type-C-to-DisplayPort cable).

On all three I am running the latest kernel (5.15.5.arch1-1 at the time of writing). In all cases, I connect the dock to the Thunderbolt port on the laptop. (You can tell because if you connect it to the non-Thunderbolt Type-C port, the firmware will show a warning that the dock is not connected to a Thunderbolt port.) I don’t have any nvidia or nouveau packages installed, I should be using only the integrated Intel GPUs.

DisplayPort/Thunderbolt/Type-C is fairly subtle, see e.g. https://www.bigmessowires.com/2019/05/1 … usb-c-hub/, and I suspect it is related to this. Two lanes of DisplayPort can provide at most 30 Hz at 3840x2160; so I suspect I’m somehow using this, and not the 4-lane mode? But clearly, the hardware supports it (at least the dock does, and I would expect the newer processor to not have regressed in this regard), so I think this is a software issue. How can I debug this further?

Things tried

Xrandr says the following (now on Xorg, on Wayland the names of the displays change, but I observe no difference between Xorg or Wayland), omitting the internal display:

DP1 disconnected (normal left inverted right x axis y axis)
DP2 disconnected (normal left inverted right x axis y axis)
DP2-1 connected primary 3840x2160+0+0 (normal left inverted right x axis y axis) 610mm x 350mm
   3840x2160     60.00*+  60.00    29.98  
   2560x1440     59.95  
   1920x1200     59.88  
   2048x1080     24.00  
   1920x1080     60.00    60.00    50.00    59.94    24.00    23.98  
   1600x1200     60.00  
   1600x900      60.00  
   1280x1024     75.02    60.02  
   1152x864      75.00  
   1280x720      60.00    50.00    59.94  
   1024x768      75.03    60.00  
   800x600       75.00    60.32  
   720x576       50.00  
   720x480       60.00    59.94  
   640x480       75.00    60.00    59.94  
   720x400       70.08  
DP2-2 disconnected (normal left inverted right x axis y axis)
DP2-3 disconnected (normal left inverted right x axis y axis)
DP3 connected 3840x2160+3840+0 (normal left inverted right x axis y axis) 610mm x 350mm
   3840x2160     29.98* 
   2560x1440     59.95  
   1920x1200     59.88  
   2048x1080     24.00  
   1920x1080     60.00    60.00    50.00    59.94    24.00    23.98  
   1920x1080i    60.00    50.00    59.94  
   1600x1200     60.00  
   1600x900      60.00  
   1280x1024     75.02    60.02  
   1152x864      75.00  
   1280x720      60.00    50.00    59.94  
   1024x768      75.03    60.00  
   800x600       75.00    60.32  
   720x576       50.00  
   720x480       60.00    59.94  
   640x480       75.00    60.00    59.94  
   720x400       70.08  

In /sys/class/drm, we have:

$ ls /sys/class/drm/*         
/sys/class/drm/version

/sys/class/drm/card0:
card0-DP-1  card0-DP-3  card0-DP-5  card0-eDP-1  engine   power      dev    gt_act_freq_mhz    gt_cur_freq_mhz  gt_min_freq_mhz  gt_RP1_freq_mhz  uevent
card0-DP-2  card0-DP-4  card0-DP-6  device       metrics  subsystem  error  gt_boost_freq_mhz  gt_max_freq_mhz  gt_RP0_freq_mhz  gt_RPn_freq_mhz

/sys/class/drm/card0-DP-1:
device  drm_dp_aux1  i2c-30  power  subsystem  dpms  edid  enabled  modes  status  uevent

/sys/class/drm/card0-DP-2:
device  drm_dp_aux2  i2c-31  power  subsystem  dpms  edid  enabled  modes  status  uevent

/sys/class/drm/card0-DP-3:
device  drm_dp_aux3  i2c-32  power  subsystem  dpms  edid  enabled  modes  status  uevent

/sys/class/drm/card0-DP-4:
device  drm_dp_aux4  power  subsystem  dpms  edid  enabled  modes  status  uevent

/sys/class/drm/card0-DP-5:
device  drm_dp_aux5  power  subsystem  dpms  edid  enabled  modes  status  uevent

/sys/class/drm/card0-DP-6:
device  drm_dp_aux6  power  subsystem  dpms  edid  enabled  modes  status  uevent

/sys/class/drm/card0-eDP-1:
device  drm_dp_aux0  i2c-29  intel_backlight  power  subsystem  dpms  edid  enabled  modes  status  uevent

/sys/class/drm/card1:
device  power  subsystem  dev  uevent

/sys/class/drm/renderD128:
device  power  subsystem  dev  uevent

/sys/class/drm/renderD129:
device  power  subsystem  dev  uevent

$ cat /sys/class/drm/*/enabled
disabled
disabled
enabled
enabled
disabled
disabled
disabled

So it is card0-DP-3 and card0-DP-4 that are enabled. card0-DP-3 is the display that I can’t drive at 60 Hz, card0-DP-4 is the one that I can. These names are stable across reboots and plugging cables in and out. What stands out is that the 30 Hz one has this i2c-32 file but the 60 Hz one doesn’t. The edids are identical except for the manufacturing date (it’s the same model display):

$ /usr/bin/diff -u <(parse-edid < /sys/class/drm/card0-DP-3/edid) <(parse-edid < /sys/class/drm/card0-DP-4/edid)
Checksum Correct

Checksum Correct

--- /proc/self/fd/11	2021-11-27 12:54:11.784328631 +0100
+++ /proc/self/fd/12	2021-11-27 12:54:11.784328631 +0100
@@ -2,7 +2,7 @@
 	Identifier "DELL U2718Q"
 	ModelName "DELL U2718Q"
 	VendorName "DEL"
-	# Monitor Manufactured week 48 of 2017
+	# Monitor Manufactured week 30 of 2019
 	# EDID version 1.4
 	# Digital Display
 	DisplaySize 610 350

I did find https://bugs.launchpad.net/ubuntu/+sour … ug/1922372 which looks related. From there, it looks like the fix was this patch: https://lore.kernel.org/all/20210201150 … intel.com/. However, that patch is already part of 5.15, so I don’t think this is the issue:

$ git log --grep 'update DP max link rate table' v5.15
commit b60e320bf35971e67b6afabd5614c6196b3be95d
Author: Lee Shawn C
Date:   Thu Feb 18 13:23:33 2021 +0800

    drm/i915/vbt: update DP max link rate table

What I tried so far:

  • Append video=card0-DP-3:3840x2160@60 video=card0-DP-4:3840x2160@60 to my kernel cmdline. This did not make a difference.

  • Follow the steps at https://wiki.archlinux.org/title/Xrandr … esolutions. This did not fix the issue.

  • Allow Thunderbolt devices during boot in the firmware settings. It did not make a difference, and it would be weird if it did, because the dock works fine if you plug it in after boot.

What can I do to further diagnose this?

Offline

#2 2022-03-26 16:56:26

ruuda
Member
Registered: 2021-11-27
Posts: 2

Re: Refresh rate of external display on dock not recognized

After some further investigation, in some very rare cases, the second display does get a 60 Hz refresh rate as well after boot. Sometimes, plugging the USB-C to DisplayPort cable into the other USB-C port of the dock allows the second display to be 60 Hz, but it doesn’t happen consistently. So far I haven’t been able to get it to work consistently. I suppose it’s a regression in the kernel, but maybe the dock is bad, or maybe it’s a combination of both ...

Offline

Board footer

Powered by FluxBB