5

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>
2
  • The lag/slowness leads me to believe there might be some post-processing setting enabled on the display, like motion interpolation. Another problem could arise if you are using multiple displays as you might exceed the throughput of the Intel UHD 620. And you're right, the listed specs of the display are indeed vague :/
    – Nmath
    Jun 11, 2020 at 5:59
  • @Nmath: Thanks for the hints. I've edited my question (using only one external display, went through all its settings, disabled anything I could see; set it to "Text mode" -> still 30Hz). Jun 11, 2020 at 15:31

4 Answers 4

3

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.

2

TL;DR: Delete ~/.config/monitors.xml and try different a different port on your monitor.

I was having the same issue, the i7-10750H has HDMI 2.0a support, which means it should support the refresh rate of 60Hz.

My setup is:

  • HP Envy 15.6-inch i7-10750H (15-EP0048TX)
  • Ubuntu 20.04.03 LTS
  • NVIDIA GeForce GTX 1660 Ti with Max-Q Design
  • Samsung U28E850 (4K - 2x HDMI, 1x DP)

My USB-C to DP adaptor is pumping out 4K@60hz just fine.

But connecting a HDMI cable (I tried about 5 different cables I had laying around, all various ages) to HDMI port 1 on the monitor always gave me 4K@30Hz.

I didn't think changing the port would make any difference, but it did for some reason - makes no sense to me. I even reset the monitor to factory defaults.

I deleted ~/.config/monitors.xml so I didn't have any previous mis-configurations. Then restart your OS.

As a side note, I have a newer Samsung 4K at work with 2xDP and 1xHDMI ports, and I found one of the DP slots also had the same issue, so I only use the one that works.

1

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).

0

Sometimes you do have to eliminate Ubuntu from the equation. For example, I have a DELL laptop with the Intel Iris XE video chipset. Its dual boot ubuntu/windows and windows sees my 4k monitor as 4k / 60hz. Ubuntu use to see it as 4k / 60hz until a recent update and now it thinks its 4k / 30hz (HDMI 2.1 cable).

So the easy way is to tell Ubuntu to add that mode back. Lets get the parameters we need... run xrandr and find your display and the 4k @ 30 hz mode...

xrandr -q --verbose

HDMI-1 connected 3840x2160+0+0 (0x7cb) normal (normal left inverted right x axis y axis) 800mm x 450mm
    Identifier: 0x43
.
.
.
  3840x2160 (0x70) 297.000MHz +HSync +VSync +preferred
        h: width  3840 start 4016 end 4104 total 4400 skew    0 clock  67.50KHz
        v: height 2160 start 2168 end 2178 total 2250           clock  30.00Hz

So those are my parameters, I just need to 'double' the clock rates to get my 60hz back.

I made a bash script to add my new 60hz mode for my HDMI-1 display...

  • note the name is HORIZONTALPIXELSxVERTICALPIXELS_REFRESHRATE in quotes
  • note the 594.00 is the 297.00 from above times 2
  • the 8 numbers are the 4 horizontal values and 4 vertical values at 30 hz from above. Your numbers will vary
  • the +hsync and +vsync are also from the 30 hz above. Your values will vary

See picture here

xrandr --newmode "3840x2160_60.00" 594.00 3840 4016 4104 4400 2160 2168 2178 2250 +hsync +vsync
xrandr --addmode HDMI-1 3840x2160_60.00

Next step is to add the new mode to my HDMI-1 display (HDMI-1 is the name from above)

xrandr --addmode HDMI-1 3840x2160_60.00

And then make that the current mode (or you could just select it from your display settings panel)

xrandr --output HDMI-1 --mode 3840x2160_60.00

Complete script looks like this:

#!/bin/bash
xrandr --newmode "3840x2160_60.00" 594.00 3840 4016 4104 4400 2160 2168 2178 2250 +hsync +vsync
xrandr --addmode HDMI-1 3840x2160_60.00
xrandr --output HDMI-1 --mode 3840x2160_60.00

Of course, your 4 horizontal and 4 vertical values will vary based on what xrandr said, and same goes for the +hsync and +vsync... but the idea is the the same... add the missing mode, get the rest of the values from xrandr, multiply the clock rate, and if your video card can really do it, it should switch modes when you run the script.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .