How to use high (4K) resolutions with older hardware


Very long time ago, when all monitors were fat and heavy, computers used fixed resolutions and timings to output something on the screen. It was standardized as Display Monitor Timings (DMT) and there wasn’t any universal way to calculate timings for custom resolutions. Monitors used to send supported resolutions from DMT using special protocol called Extended display identification data (EDID) which stored DMT table with supported modes. As the times go on, monitors felt the limit of DMT. In 1999 VESA announced Generalized Timing Formula (GTF), universal timing calculation (with a fixed precision). Just in 3 years, in 2002 it was replaced by Coordinated Video Timings (CVT) standard which was a bit more precise.

The story

Finally, after so many years we’re able to buy high density display for PC. All these years we’ve seen absurdist theatre where mobile devices have 1920×1080 5" displays, shops were full of 4K TVs (although we watch it from 2–4 meters away) but monitors were with the fist-sized pixels. Overwhelming majority say Full HD is “good enough” for a 27" monitor, completely forgetting last “good enough” to go with iPad Retina release. In my opinion, this happens mostly because older Windows versions don’t really support different pixel density and it become fine only in Windows 8.1.

Standard and non-standard standards

Modern monitors and videocards don’t give a damn about fixed resolutions and timings from DMT times. They can work in a broad range of resolutions and refresh rates. Let’s take a look at my monitor’s tech details:

Horizontal scan range: 31 kHz to 140 kHz (automatic)
Vertical scan range: 29 Hz to 76 Hz (automatic)
Display Mode:                        VESA, 3840 x 2160
Horizontal Frequency (kHz): 133.3
Vertical Frequency (Hz): 60.0
Pixel Clock (MHz): 533.25
Sync Polarity (Horizontal/Vertical): +/-
Intel HD 3000 (Sandy Bridge): 389 kHz
Haswell ULT (-U): 450 kHz
Haswell ULX (-Y): 337 kHz

What should be done and what should we do?

The answer is obvious — we should lower the pixel clock! Lowering pixel clock get us lower refresh rates. How to do this? We need to generate so-called modeline, a timing information line. There is a bunch of generators available online, but most of it are far beyond its’ sell-by date and don’t know anything about CVT-R which we should use. I recommend you to use umc in Linux, PowerStrip in Windows and SwitchResX in Mac OS. By the way, SwitchResX is the only software can make modelines using CVT-R2 but my monitor doesn’t support it.

Modeline "modeline_name" dot_clock hdisp hsyncstart hsyncend htotal vdisp vsyncstart vsyncend vtotal flags
% umc 3840 2160 30 --rbt                  # 3840x2160x29.98 @ 65.688kHz
Modeline "3840x2160x29.98" 262.750000 3840 3888 3920 4000 2160 2163 2167 2191 +HSync -VSync
% xrandr --newmode "3840x2160x29.98"  262.750000  3840 3888 3920 4000  2160 2163 2167 2191  +HSync -VSync
% xrandr --addmode DP1 "3840x2160x29.98"
% xrandr --output DP1 --mode "3840x2160x29.98"
 # 3840x2160x44.10 @ 97.250kHz
Modeline “3840x2160x44.10” 389.000000 3840 3888 3920 4000 2160 2163 2167 2205 +HSync -VSync
% umc 3200 1800 60 --rbt       # 3200x1800x59.98 @ 111.086kHz
Modeline "3200x1800x59.98" 373.250000 3200 3248 3280 3360 1800 1803 1807 1852 +HSync -VSync
  • Edit EDID information and point driver to it
  • Add modeline to Xorg settings
% cat /etc/X11/xorg.conf.d/30-dp1.conf
Section "Monitor"
Identifier "DP1"
ModelName "DELL P2415Q"
Modeline "3200x1800" 373.250000 3200 3248 3280 3360 1800 1803 1807 1852 +HSync -VSync
Modeline "3840x2160" 370.000000 3840 3888 3920 4000 2160 2163 2167 2203 +HSync -VSync
Option "PreferredMode" "3200x1800"

It doesn’t work!

Make sure you connect your monitor with DisplayPort 1.2. HDMI 1.4 is limited to 340 MHz pixel clock while DisplayPort (HBR2) allows up to 540 MHz. Also make sure your monitor supports more than 30 Hz with highest resolution because earliest models can’t do that.

The end

Don’t blindly trust your monitors’ technical papers. It seems that the vertical frequency limit is 86 Hz rather than 76 Hz in documentation. I can enjoy smooth picture although not in a very high resolution.



Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store