Can't set 2560x1440 resolution on Ubuntu 20.04 with Intel Graphics Card
So I have an HP monitor attached to my laptop as an external monitor. The documentation for the monitor says that the optimum resolution using their supplied HDMI cable is 2560x1440 @ 60 Hz. When I boot into Windows, I can get that resolution. But no matter what I try, I can't get that resolution in Ubuntu 20.04.
I do not have a DisplayPort connection on my laptop, so I am using the supplied HDMI cable.
I've tried to set the resolution using xrandr --admode
, but the new mode fails:
$ cvt 2560 1440 60
# 2560x1440 59.96 Hz (CVT 3.69M9) hsync: 89.52 kHz; pclk: 312.25 MHz
Modeline "2560x1440_60.00" 312.25 2560 2752 3024 3488 1440 1443 1448 1493 -hsync +vsync
$ xrandr --newmode "2560x1440" 312.25 2560 2752 3024 3488 1440 1443 1448 1493 -hsync +vsync
$ xrandr --addmode XWAYLAND1 2560x1440
$ xrandr --output XWAYLAND1 --mode 2560x1440
xrandr: Configure crtc 1 failed
Here's the output of xrandr --verbose
:
Screen 0: minimum 16 x 16, current 3840 x 1441, maximum 32767 x 32767
XWAYLAND0 connected 1920x1080+1920+361 (0x24) normal (normal left inverted right x axis y axis) 290mm x 170mm
Identifier: 0x21
Timestamp: 20221
Subpixel: unknown
Gamma: 1.0:1.0:1.0
Brightness: 0.0
Clones:
CRTC: 0
CRTCs: 0
Transform: 1.000000 0.000000 0.000000
0.000000 1.000000 0.000000
0.000000 0.000000 1.000000
filter:
non-desktop: 0
supported: 0, 1
1920x1080 (0x24) 173.000MHz -HSync +VSync *current +preferred
h: width 1920 start 2048 end 2248 total 2576 skew 0 clock 67.16KHz
v: height 1080 start 1083 end 1088 total 1120 clock 59.96Hz
XWAYLAND1 connected 1920x1200+0+0 (0x25) normal (normal left inverted right x axis y axis) 600mm x 340mm
Identifier: 0x23
Timestamp: 20221
Subpixel: unknown
Gamma: 1.0:1.0:1.0
Brightness: 0.0
Clones:
CRTC: 1
CRTCs: 1
Transform: 1.000000 0.000000 0.000000
0.000000 1.000000 0.000000
0.000000 0.000000 1.000000
filter:
non-desktop: 0
supported: 0, 1
1920x1200 (0x25) 193.250MHz -HSync +VSync *current +preferred
h: width 1920 start 2056 end 2256 total 2592 skew 0 clock 74.56KHz
v: height 1200 start 1203 end 1209 total 1245 clock 59.88Hz
Here's the output of lspci -k | grep -EA3 'VGA|3D|Display'
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 620 (rev 02)
DeviceName: Onboard IGD
Subsystem: Dell HD Graphics 620
Kernel driver in use: i915
--
00:13.0 Non-VGA unclassified device: Intel Corporation Sunrise Point-LP Integrated Sensor Hub (rev 21)
Subsystem: Dell Sunrise Point-LP Integrated Sensor Hub
Kernel driver in use: intel_ish_ipc
Kernel modules: intel_ish_ipc
And glxinfo | grep -i vendor
:
server glx vendor string: SGI
client glx vendor string: Mesa Project and SGI
Vendor: Intel (0x8086)
OpenGL vendor string: Intel
I'm running Ubuntu 20.04.1 LTS with a Mesa Intel® HD Graphics 620 (KBL GT2) card. The Gnome Version is 3.35.3 with Wayland as the windowing system.
Any advice on how to get the monitor to display the optimum resolution?
Edit 1
I've tried switched to Xorg, instead of Wayland. I still get the same problem. If I boot into Xorg, here's the relevant lines from xrandr --verbose
:
HDMI-1 connected 1920x1200+1920+0 (0xa1) normal (normal left inverted right x axis y axis) 597mm x 336mm
Identifier: 0x43
Timestamp: 76498
Subpixel: unknown
Gamma: 1.0:1.0:1.0
Brightness: 1.0
Clones:
CRTC: 1
CRTCs: 0 1 2
Transform: 1.000000 0.000000 0.000000
0.000000 1.000000 0.000000
0.000000 0.000000 1.000000
filter:
EDID:
00ffffffffffff00220e753401010101
091e0103803c22782a9325a9544d9e25
0c5054a10800d1c081c081809500a9c0
a940b300d100565e00a0a0a029503020
350055502100001a000000fd00323c1e
5a19000a202020202020000000fc0048
502045323733710a20202020000000ff
0036434d303039303939430a202001cc
020319b149101f041303120211016703
0c0010000032e2002b023a801871382d
40582c450055502100001e023a80d072
382d40102c458055502100001e565e00
a0a0a029503020350055502100001a00
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000023
_MUTTER_PRESENTATION_OUTPUT: 0
HDCP Content Type: HDCP Type0
supported: HDCP Type0, HDCP Type1
Content Protection: Undesired
supported: Undesired, Desired, Enabled
max bpc: 12
range: (8, 12)
content type: No Data
supported: No Data, Graphics, Photo, Cinema, Game
Colorspace: Default
supported: Default, SMPTE_170M_YCC, BT709_YCC, XVYCC_601, XVYCC_709, SYCC_601, opYCC_601, opRGB, BT2020_CYCC, BT2020_RGB, BT2020_YCC, DCI-P3_RGB_D65, DCI-P3_RGB_Theater
aspect ratio: Automatic
supported: Automatic, 4:3, 16:9
Broadcast RGB: Automatic
supported: Automatic, Full, Limited 16:235
audio: auto
supported: force-dvi, off, auto, on
link-status: Good
supported: Good, Bad
CONNECTOR_ID: 92
supported: 92
non-desktop: 0
range: (0, 1)
1920x1200 (0xa1) 154.000MHz +HSync -VSync *current
h: width 1920 start 1968 end 2000 total 2080 skew 0 clock 74.04KHz
v: height 1200 start 1203 end 1209 total 1235 clock 59.95Hz
1920x1080 (0xa2) 148.500MHz +HSync +VSync
h: width 1920 start 2008 end 2052 total 2200 skew 0 clock 67.50KHz
v: height 1080 start 1084 end 1089 total 1125 clock 60.00Hz
1920x1080 (0xa3) 148.500MHz +HSync +VSync
h: width 1920 start 2448 end 2492 total 2640 skew 0 clock 56.25KHz
v: height 1080 start 1084 end 1089 total 1125 clock 50.00Hz
1920x1080 (0xa4) 148.352MHz +HSync +VSync
h: width 1920 start 2008 end 2052 total 2200 skew 0 clock 67.43KHz
v: height 1080 start 1084 end 1089 total 1125 clock 59.94Hz
1600x1200 (0xa5) 162.000MHz +HSync +VSync
h: width 1600 start 1664 end 1856 total 2160 skew 0 clock 75.00KHz
v: height 1200 start 1201 end 1204 total 1250 clock 60.00Hz
1680x1050 (0x4b) 119.000MHz +HSync -VSync
h: width 1680 start 1728 end 1760 total 1840 skew 0 clock 64.67KHz
v: height 1050 start 1053 end 1059 total 1080 clock 59.88Hz
1600x900 (0xa6) 108.000MHz +HSync +VSync
h: width 1600 start 1624 end 1704 total 1800 skew 0 clock 60.00KHz
v: height 900 start 901 end 904 total 1000 clock 60.00Hz
1280x1024 (0x52) 108.000MHz +HSync +VSync
h: width 1280 start 1328 end 1440 total 1688 skew 0 clock 63.98KHz
v: height 1024 start 1025 end 1028 total 1066 clock 60.02Hz
1440x900 (0xa7) 88.750MHz +HSync -VSync
h: width 1440 start 1488 end 1520 total 1600 skew 0 clock 55.47KHz
v: height 900 start 903 end 909 total 926 clock 59.90Hz
1280x720 (0xa8) 74.250MHz +HSync +VSync
h: width 1280 start 1390 end 1430 total 1650 skew 0 clock 45.00KHz
v: height 720 start 725 end 730 total 750 clock 60.00Hz
1280x720 (0xa9) 74.250MHz +HSync +VSync
h: width 1280 start 1720 end 1760 total 1980 skew 0 clock 37.50KHz
v: height 720 start 725 end 730 total 750 clock 50.00Hz
1280x720 (0xaa) 74.176MHz +HSync +VSync
h: width 1280 start 1390 end 1430 total 1650 skew 0 clock 44.96KHz
v: height 720 start 725 end 730 total 750 clock 59.94Hz
1024x768 (0x67) 65.000MHz -HSync -VSync
h: width 1024 start 1048 end 1184 total 1344 skew 0 clock 48.36KHz
v: height 768 start 771 end 777 total 806 clock 60.00Hz
800x600 (0x76) 40.000MHz +HSync +VSync
h: width 800 start 840 end 968 total 1056 skew 0 clock 37.88KHz
v: height 600 start 601 end 605 total 628 clock 60.32Hz
720x576 (0xab) 27.000MHz -HSync -VSync
h: width 720 start 732 end 796 total 864 skew 0 clock 31.25KHz
v: height 576 start 581 end 586 total 625 clock 50.00Hz
720x480 (0xac) 27.027MHz -HSync -VSync
h: width 720 start 736 end 798 total 858 skew 0 clock 31.50KHz
v: height 480 start 489 end 495 total 525 clock 60.00Hz
720x480 (0xad) 27.000MHz -HSync -VSync
h: width 720 start 736 end 798 total 858 skew 0 clock 31.47KHz
v: height 480 start 489 end 495 total 525 clock 59.94Hz
640x480 (0xae) 25.200MHz -HSync -VSync
h: width 640 start 656 end 752 total 800 skew 0 clock 31.50KHz
v: height 480 start 490 end 492 total 525 clock 60.00Hz
640x480 (0x85) 25.175MHz -HSync -VSync
h: width 640 start 656 end 752 total 800 skew 0 clock 31.47KHz
v: height 480 start 490 end 492 total 525 clock 59.94Hz
720x400 (0xaf) 28.320MHz -HSync +VSync
h: width 720 start 738 end 846 total 900 skew 0 clock 31.47KHz
v: height 400 start 412 end 414 total 449 clock 70.08Hz
Edit 2:
After a grep 2560
in the logs, I took a look into /var/log/syslog
and found the following lines:
Nov 25 13:57:04 laptop systemd[1606]: Starting GNOME Shell on X11...
Nov 25 13:57:04 laptop /usr/lib/gdm3/gdm-x-session[1696]: (II) modeset(0): EDID vendor "BOE"
Nov 25 13:57:04 laptop /usr/lib/gdm3/gdm-x-session[1696]: (II) modeset(0): Printing DDC gath
Nov 25 13:57:04 laptop /usr/lib/gdm3/gdm-x-session[1696]: (II) modeset(0): Modeline "1920x10
Nov 25 13:57:04 laptop /usr/lib/gdm3/gdm-x-session[1696]: (II) modeset(0): Modeline "1920x10
Nov 25 13:57:04 laptop /usr/lib/gdm3/gdm-x-session[1696]: (--) modeset(0): HDMI max TMDS fre
Nov 25 13:57:04 laptop gnome-shell[1853]: Failed to use stored monitor configuration: Invalid mode 2560x1440 (59.864616) for monitor 'HPN HP E273q'
That's what happens at boot. If I try to change the resolution via xrandr
, I get:
Nov 25 13:09:47 laptop gnome-shell[1853]: Failed to use stored monitor configuration: Invalid mode 2560x1440 (59.864616) for monitor 'HPN HP E273q'
Nov 25 13:09:53 laptop /usr/lib/gdm3/gdm-x-session[1696]: (II) modeset(0): Allocate new frame buffer 4480x1440 stride
Nov 25 13:09:53 laptop /usr/lib/gdm3/gdm-x-session[1696]: (EE) modeset(0): failed to set mode: Invalid argument
Nov 25 13:09:53 laptop /usr/lib/gdm3/gdm-x-session[1696]: (II) modeset(0): Allocate new frame buffer 3840x1200 stride
Nov 25 13:09:54 laptop /usr/lib/gdm3/gdm-x-session[1696]: (II) modeset(0): EDID vendor "BOE", prod id 1703
Nov 25 13:09:54 laptop /usr/lib/gdm3/gdm-x-session[1696]: (II) modeset(0): Printing DDC gathered Modelines:
Nov 25 13:09:54 laptop /usr/lib/gdm3/gdm-x-session[1696]: (II) modeset(0): Modeline "1920x1080"x0.0 138.78 1920 1968 2000 2080 1080 1083 1088 1112 +hsync -vsync (66.7 kHz eP)
Nov 25 13:09:54 laptop /usr/lib/gdm3/gdm-x-session[1696]: (II) modeset(0): Modeline "1920x1080"x0.0 111.02 1920 1968 2000 2080 1080 1083 1088 1112 +hsync -vsync (53.4 kHz e)
Nov 25 13:09:54 laptop /usr/lib/gdm3/gdm-x-session[1696]: (--) modeset(0): HDMI max TMDS frequency 250000KHz
Edit 3:
I can get 2560x1440 at 30 Hz to work using xrandr
. It's just 60.00 (or 55, or 59.9, etc.) that don't work.
According to the log you posted, your HDMI output is limited to a 250 MHz pixel clock:
(--) modeset(0): HDMI max TMDS frequency 250000KHz
This may be a limitation of your screen, your cable and/or video chip. Anyway, you have to work within this limit.
The cvt
tool, used without specific option, produces standard VESA CVT modelines with "comfortable" blanking times, suitable for most displays at the time the standard was created.
Running it with your desired resolution and refresh rate (like you did) gives the following modeline:
# 2560x1440 59.96 Hz (CVT 3.69M9) hsync: 89.52 kHz; pclk: 312.25 MHz
Modeline "2560x1440_60.00" 312.25 2560 2752 3024 3488 1440 1443 1448 1493 -hsync +vsync
This modeline requires a 312.25 MHz pixel clock, which is more than what your HDMI output can provide.
Having "comfortable" blanking times is not necessary nor relevant to an HDMI output, so "reduced" blanking times can be used. cvt
has a --reduced
option for that purpose. Running cvt --reduced 2560 1440 60
gives the following modeline:
# 2560x1440 59.95 Hz (CVT 3.69M9-R) hsync: 88.79 kHz; pclk: 241.50 MHz
Modeline "2560x1440R" 241.50 2560 2608 2640 2720 1440 1443 1448 1481 +hsync -vsync
This one has a 241.50 MHz pixel clock, which should work with your HDMI output.
Actually, decoding your EDID output at http://www.edidreader.com/ gives exactly the timing given by the cvt --reduced
command. Since the information in the EDID is what your screen believes you should use, the generated modeline above has all the chances to work on your system.
One mystery remains: why it did not work straight out of the box. I am using a 2560x1440 display and had no such issue.
Do you have a second HDMI cable you could try? I know it sounds silly, but I ran into a very similar problem in the past (monitor would only do 1920x1080 instead of 2560x1080) and the solution was to simply replace the cable.
I had the same issue, in Windows it works with 2k resolution but not in PopOs.
You can also run at 60 Hz which you can do as follows:
In Windows get the EDID using "monitor asset manager" software. From this copy the modeline for 2560x1440 resolution (preferred resolution in Windows), from realtime EDID or from the Windows registry option choice (both will be mostly the same).
Then you can you use these modeline values in xrandr --newmode
and then xrandr --addmode <interface> <resolution>
(check names by xrandr
).
This approach worked for me. I tried using cvt
tool to generate modeline but that didn't work. Here since Windows can use those modelines then it is possible that Linux will also works, since monitor is same.