Page 1 of 1

How to lower VRR frequency range lower limit on GNU/Linux (Wayland/Wlroots)?

Posted: 24 Mar 2025, 14:24
by vanfanel
Hi there,

This is my first post on Blurbusters. I have heard very good things about this forum for sharp-eyed people like me 8-)

I have a Viewsonic XG2401 monitor which has a default refresh rate range of 48-146 according to edid-decode:

Code: Select all

Display Range Limits:
      Monitor ranges (Bare Limits): 48-146 Hz V, 180-180 kHz H, max dotclock 340 MHz
    Display Product Name: 'XG2401 SERIES'
However, this monitor has a weird refresh rate behaviour at low framerates like ~60Hz games.

This is already known on this forum:
viewtopic.php?t=13250
The solution is also known: tweak the LFC lower range to 30 or 36 hz, according to @yamaci1775 in the mentioned thread.
However, he does that using a tool called CRU which is a Windows thing.

So, what does CRU do under the hood? Apparently, it simply hacks around the EDID values on the Windows registry:
"CRU creates software EDID overrides in the registry and does not modify the hardware."

...so I would have to override the EDID of the Viewsonic XG2401 monitor to lower lower limit in the VRR range, I guess.

I've got the monior EDID, which on GNU/Linux lives in /sys/class/drm/card0-DP-1/edid, and I tried to edit it using "AW EDID Editor", which is a Windows program but works perfectly using WINE.

According to Archlinux instructions to change VRR range limits, in order to change the VRR range of the monitor I have to change the values in:
EDID Base > Detailed Descriptor > Block Descriptor > Block 2
and there I have to change:
Block Descriptor Type > Display > Range Limits

The problem is that the values in Range Limits are empty:
2025-03-24-201932_1920x1080_scrot.png
2025-03-24-201932_1920x1080_scrot.png (132.59 KiB) Viewed 8984 times
Any idea on how to proceed? I'm almost there apparently, but not quite there...
If this part of the EDID is empty, how does drm/wayland/wlroots know about the range that edid-decode is showing me? :roll:

Re: How to lower VRR frequency range lower limit on GNU/Linux (Wayland/Wlroots)?

Posted: 25 Mar 2025, 09:30
by RealNC
You can try using CRU in Wine if it at least runs, you can import the EDID file you have, edit it, and export it to a format that you might be able to provide as an EDID override to the GPU driver. The Nvidia Linux driver has an option to supply a custom EDID file. I don't know about AMD.

Re: How to lower VRR frequency range lower limit on GNU/Linux (Wayland/Wlroots)?

Posted: 25 Mar 2025, 10:58
by vanfanel
RealNC wrote:
25 Mar 2025, 09:30
You can try using CRU in Wine if it at least runs, you can import the EDID file you have, edit it, and export it to a format that you might be able to provide as an EDID override to the GPU driver. The Nvidia Linux driver has an option to supply a custom EDID file. I don't know about AMD.
Hey!! Look who's here, the author of the best dosbox core for RetroArch! This is indeed a very small world! I am glad to see you here, sir :)

I don't have anything NVidia, nor will I ever buy anything from that company (I am very happy with having MESA covering all my OpenGL/Vulkan needs), so I don't quite understand your suggestion: are you saying CRU can export the EDID to a binary format that is usable on GNU/Linux?

Re: How to lower VRR frequency range lower limit on GNU/Linux (Wayland/Wlroots)?

Posted: 26 Mar 2025, 10:27
by RealNC
vanfanel wrote:
25 Mar 2025, 10:58
Hey!! Look who's here, the author of the best dosbox core for RetroArch! This is indeed a very small world! I am glad to see you here, sir :)
Hi :mrgreen:
I don't have anything NVidia, nor will I ever buy anything from that company (I am very happy with having MESA covering all my OpenGL/Vulkan needs), so I don't quite understand your suggestion: are you saying CRU can export the EDID to a binary format that is usable on GNU/Linux?
Yes. It has import and export functions. You can import a file, edit it, and then export it again to various file formats. I was just saying that the Nvidia Linux driver can be configured to use such an EDID file and that maybe something equivalent is possible on AMD.

Re: How to lower VRR frequency range lower limit on GNU/Linux (Wayland/Wlroots)?

Posted: 02 Apr 2025, 21:08
by Chief Blur Buster
Tip: If also lowering the MaxHz, try to keep scanrate the same as the monitor's max specs. This creates a larger vertical total version of VRR as a method of lowering the MaxHz of a VRR range, without increasing the latency (caused by slower scanouts of a lower horizontal scanrate). It's harder to create custom timings for this, but this is useful if latency is important (even for lower frame rates and lower Hz).

Re: How to lower VRR frequency range lower limit on GNU/Linux (Wayland/Wlroots)?

Posted: 18 May 2025, 21:20
by GammaLyrae
Dumb question, but have you tried checking the other blocks? Maybe not all of the useful data exists in the same block. The advice to check Block 2 specifically was likely written by someone who's monitor EDID happened to store it there.