Hi Cameron, I didn't go upstream yet. I suppose upstream bugs should be filed to the Intel Open Source Technology Center (https://01.org/), but I'm not sure. Or maybe to the Linux kernel since it's an in-tree module after all...
From what I understand, the Intel module fails to switch to anything else than the refreshing rate that's on the preferred (i.e. first mentioned on EDID) DTD. However, it seems to me the first DTD usually has the highest refresh rate, which makes your problem strange. Could that mean the 60 Hz DTD is the preferred one on your laptop's panel, despite it being able to go up to 135 Hz ? Also, are you sure you're using true Xorg, not Xorg on Wayland ? Bcos on any readings on the latter would be mostly irrelevant as they don't necessary reflect the reality (Xorg on Wayland being only a compatibility layer). From what I've seen, when asking for a reduced refresh rate, even if it fails, Wayland seems to try to near the target refresh rate by syncing frames to a factor of the effective refresh rate. That's why on a previous post, when trying to get 60Hz on my 144Hz-capable monitor, I was getting 72 fps with glxgears... But in your case of trying to get 135 from an effective 60, Wayland surely can't do this trick. Anyway, you can get the EDID from sysfs easily. On my current config, mine is in /sys/class/drm/card0-eDP-1/edid. You should have something similar. To quicky decode the EDID, you can use edid-decode (from the edid-decode package), most basically like this : edid-decode /sys/class/drm/card0-eDP-1/edid Then you can create a modified, hex-edited EDID file, with the two DTDs swapped, put it somewhere under the /lib/firmware directory and add the following in a file inside /etc/modprobe.d : options drm edid_firmware=eDP-1:mydir/myedid.bin eDP-1 is your connector name, for me it's eDP-1 but for you it can be something else. You can also omit "eDP-1:", in which case the EDID will apply to all connectors. While I didn't check myself, I suppose it will be a problem if you plug your laptop on an external monitor. Also, if the module is loaded while the system is still on the initramfs, it won't work since your modified EDID won't be there, hence you will have to add it with an initramfs hook in /etc/initramfs-tools/hooks. The file should look like this : --- File starts after this line ----- #!/bin/sh PREREQ="" prereqs () { echo "$PREREQ" } case "$1" in prereqs) prereqs exit 0 ;; esac . /usr/share/initramfs-tools/hook-functions copy_file edid /lib/firmware/mydir/myedid.bin ----- File ends before this line ----- Make the file belong to root:root and mode 555 (readable/executable by all). You should then update your initramfs with update-initramfs -u (to update the initramfs for the current running kernel) or update-initramfs -u -k all (to update for all installed kernels, or you can specify a kernel). And reboot... Hope this helps ! -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1848746 Title: Refresh rate change requests to 40Hz are "adjusted" back to 60Hz To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1848746/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs