忘怀
deepin
2025-08-09 01:33 很好的文章
我有另外一种办法
就是通过
cvt 2880 1800 120生成一个modeline
sudo xrandr --newmode "amodename"(编个名称) 后面填入上面输出的结果(比如 421.20 3120 3128 3160 3250 2080 2114 2122 2160 -hsync -vsync)
sudo xrandr --addmode eDP-1(对应内屏,其他接口看实际情况) "amodename"(和上面编的名称一样)
sudo xrandr --output eDP-1(对应内屏) -mode "amodename"(和上面编的名称一样)
生效
Reply Like 1 View the author
小新pro14 2023锐龙版之前用各种发行部都无法开启120hz也包括deepin各个版本直到25,期间我在
Ubuntu论坛发现个方法在Ubuntu24和25上成功开启120hz,接下来说下我的根据https://forum.ubuntu.com.cn/viewtopic.php?t=494268这个帖子的方法在deepin25成功开启120hz的方法
首先
需要安装edid-decode这个软件包,但是deepin源里没有,需要手动去https://packages.debian.org/sid/edid-decode页面底下下amd64的deb然后安装,我是直接deepin双击安装的,没用命令行并且安装期间没有报错正常成功安装。
接下来检查显示器的edid数据
edid-decode < /sys/class/drm/card0-eDP-1/edid 而card0-eDP-1这个根据自己机型,我在Ubuntu上是card1-eDP-1,但是到了deepin就变成card0-eDP-1了(也可以用ls /sys/class/drm/ 这个命令去看)一个个试能出数据就行。
看最后的部分有没有这么一段代码:
看DTD开头那行,表示这段是针对2880x1800分辨率下120hz刷新率的设置,但后面的checksum校验码错了,所以linux认为这段是无效数据,忽略了这段,导致没有120hz的选项。
当确认是edid数据的问题后,就可以手动修复了。先确认edid原始数据是不是这样,一个字符都不能错。这个原始数据会显示在上面edid-decode命令执行后的最开处
(小新pro14 同款LCD ips屏的可以参考这个edid数据,应该好几代用的这个屏幕)如果有任何不一致,不要继续再执行下面的命令,完全一致的话,就可以动手修正checksum,生成新的edid数据了。card0-eDP-1根据自己的情况写
xxd -p /sys/class/drm/card0-eDP-1/edid | sed -E 's/f098$/f890/g' | xxd -p -r > edid_new.bin
为防万一,再用edid-decode检查一下生成的edid_new.bin文件,确认一下是不是修正了checksum的错误代码:
如果没问题,把生成的edid_new.bin文件复制到/lib/firmware目录下面代码(因为deepin25引入了磐石系统的“只读保护”导致cp命令会报错无法写入,需要执行sudo deepin-immutable-writable enable -d /usr来解除保护,并且reboot重启系统接着执行cp命令,重新启用保护就sudo deepin-immutable-writable disable)
然后让内核启动时使用这个edid数据。
编辑/etc/default/grub文件,在GRUB_CMDLINE_LINUX那行后面加上drm.edid_firmware=eDP-1:edid_new.bin,改成这个样子代码:
如果不是card0-eDP-1,这里也别写eDP-1(前面的cardX的X可以不同),写实际的情况
也可以写在GRUB_CMDLINE_LINUX_DEFAULT里,但只会对每个内核的默认启动项有效
更新grub配置代码:
创建个可执行的/etc/initramfs-tools/hooks/edid脚本程序(可以用touch XXX创建,然后再编辑文件内容)内容如下代码:
确保可执行权限代码:
然后更新initrd,如果只更新当前内核的,把后面的-k all去掉代码:
该做的就做完了,可以重启看效果了 reboot,
重启后可以去显示设置里查看会多一个120hz的选项选上就行,之前的deepin23也可以用这个方法
主要内容参考摘自这个文章https://forum.ubuntu.com.cn/viewtopic.php?t=494268