Telling what causes 30Hz refresh for 4K external monitor: monitor, graphics card, or Ubuntu 20?

I have a modern laptop (Lenovo X1 Carbon 7th Gen, Intel® Core™ i7-8665U CPU @ 1.90GHz × 8, Mesa Intel® UHD Graphics 620 (WHL GT2), 16 GB RAM) running Ubuntu 20.04 with GNOME 3.36.2, in a dual-monitor setup. The laptop's internal screen is 2560x1440.

So far, I've been using an older external DELL U3417W monitor, which was running at 3440x1440 @ 50Hz via HDMI without problems, in a Joint Displays configuration (total pixels 2560x1440 + 3440x1440 = 8.6M @ 60Hz and 50Hz respectively).

Yesterday, I replaced the DELL monitor with a 4K monitor, the ViewSonic VP3268-4K. Using the supplied HDMI cable, I can only get 30Hz out of it at 3840x2160, and everything is slow. Not just scrolling text pages, but even typing "aaaaaaaaaaaaaa" in a single-line input field in Chromium lags. That was not the case with the 50Hz display.

The resolution of the new monitor is nothing crazy, only 67% more than the previous one. I don't see any extra CPU consumption. I disabled the laptop's internal screen, to keep only the monitor in a Single Display configuration. Still 30Hz, and the total pixelage is 3840x2160, so 8.3M, less than the internal screen + DELL combo.

Is there a way to enable/force at least 50Hz? I tried forcing the rate to 60, but that just led Ubuntu to considering the display as new (scaling 200%, primary was the laptop) and the refresh rate ended up 30 again.

How can I tell if this is a limitation of,

  • the monitor (its specs are vague, "25 - 75Hz"), so that I can return/exchange it. I've been through all its OSD menus, set "Response Time" and "Low Input Lag" to every combination, incl. "Ultra fast", and ran xrandr after each. Disabled HDR10, Film mode. Tried View Mode -> Game -> FPS1, FPS2; etc. 30 Hz was the max for 3840x2160.
  • the HDMI cable that came with it (I tried another one, same result, and both cables are driving the DELL monitor @ 50Hz). Both cables are marked "High Speed HDMI" (with or without Ethernet).
  • Ubuntu (I don't have Windows to try but I could flash another distro that's supposed to have better 4K monitor support?)
  • drivers or whatever else

xrandr output:

Screen 0: minimum 320 x 200, current 6400 x 2616, maximum 16384 x 16384
eDP-1 connected 2560x1440+0+1176 (normal left inverted right x axis y axis) 309mm x 174mm
   2560x1440     60.00*+  59.99    59.99    59.96    59.95  
   1920x1440     60.00  
   1856x1392     60.01  
   1792x1344     60.01  
   2048x1152     59.99    59.98    59.90    59.91  
   1920x1200     59.88    59.95  
   ...
   320x240       60.05  
   360x202       59.51    59.13  
   320x180       59.84    59.32  
DP-1 disconnected (normal left inverted right x axis y axis)
HDMI-1 connected primary 3840x2160+2560+0 (normal left inverted right x axis y axis) 697mm x 392mm
   3840x2160     30.00*   25.00    24.00    29.97    23.98    29.98  
   1920x2160     59.99  
   3840x1080     59.97  
   1920x1200     59.95  
   1920x1080     60.00    60.00    50.00    59.94    30.00    25.00    24.00    29.97    23.98  
   1920x1080i    60.00    50.00    59.94  
   1600x1200     60.00  
   1680x1050     59.88  
   1280x1024     75.02    60.02  
   1440x900      59.90  
   1280x800      59.91  
   1152x864      75.00  
   1280x720      60.00    50.00    59.94  
   1440x576      50.00  
   1024x768      75.03    70.07    60.00  
   832x624       74.55  
   800x600       72.19    75.00    60.32    56.25  
   720x576       50.00  
   720x576i      50.00  
   720x480       60.00    59.94  
   720x480i      60.00    59.94  
   640x480       75.00    72.81    66.67    60.00    59.94  
   720x400       70.08  
   720x240       60.12    60.05  
DP-2 disconnected (normal left inverted right x axis y axis)

From ~/.config/monitors.xml:

  <configuration>
    <logicalmonitor>
      <x>2560</x>
      <y>0</y>
      <scale>1</scale>
      <primary>yes</primary>
      <monitor>
        <monitorspec>
          <connector>HDMI-1</connector>
          <vendor>VSC</vendor>
          <product>VP3268-4K</product>
        </monitorspec>
        <mode>
          <width>3840</width>
          <height>2160</height>
          <rate>30</rate>
        </mode>
      </monitor>
    </logicalmonitor>
    <logicalmonitor>
      <x>0</x>
      <y>1176</y>
      <scale>1</scale>
      <monitor>
        <monitorspec>
          <connector>eDP-1</connector>
          <vendor>LGD</vendor>
          <product>0x05ee</product>
        </monitorspec>
        <mode>
          <width>2560</width>
          <height>1440</height>
          <rate>59.997714996337891</rate>
        </mode>
      </monitor>
    </logicalmonitor>
  </configuration>

The entry for the DELL was

      <monitor>
        <monitorspec>
          <connector>HDMI-1</connector>
          <vendor>DEL</vendor>
          <product>DELL U3417W</product>
        </monitorspec>
        <mode>
          <width>3440</width>
          <height>1440</height>
          <rate>49.986808776855469</rate>
        </mode>
      </monitor>

Solution 1:

I successfully used a Thunderbolt to HDMI cable connecting my Lenovo Laptop running Ubuntu with my 4k monitor at 60hz (which has only HDMI and DP ports).

Therefore I don't think that replacing the Monitor is necessary. Just make sure the cable supports 4k60hz.

Solution 2:

This seems like a limitation of HDMI for the laptop, rather than for the monitor. The laptop specs mention

Max resolution: 5K@60Hz (Thunderbolt); 4K@24Hz (HDMI)

Since I was obtaining 4K@30Hz (more than 24Hz) over HDMI, it seems the specs are a bit conservative, which is good news.

A user on the Lenovo forums confirmed they used the same laptop running Windows 10 to drive a 34" LG 5120x2160 monitor @ 60Hz over Thunderbolt. I was also later able to run an MSI 5k2k monitor at 50Hz over Thunderbolt.

The ViewSonic doesn't support Thunderbolt so it seems I'll have to replace it with another 4K monitor that does.

The curved Dell S3221QS specs list 4K @ 60Hz but it also doesn't have USB-C, so I could only get 30Hz over HDMI, but by using an old USB-C to HDMI adapter I am getting 4K @ 50Hz (despite the Amazon page listing 30Hz for the adapter).