xrandr: error BadMatch (invalid parameter attributes) 无法设置自定义分辨率刷新率解决办法

我的环境

Manjaro KDE
Nvidia 显卡

前言

前几天在创建虚拟显示屏让 iPad 成为副屏时,我打算使用 xrandr 给虚拟显示屏自定义分辨率以及 144hz 的刷新率(为了与主屏幕同步)

但是当进行了如下操作后发生了RT报错:

❯ cvt 1920 1080 144
# 1920x1080 143.88 Hz (CVT) hsync: 169.35 kHz; pclk: 452.50 MHz
Modeline "1920x1080_144.00"  452.50  1920 2088 2296 2672  1080 1083 1088 1177 -hsync +vsync

❯ xrandr --addmode DP-0 "1920x1080_144.00"
X Error of failed request:  BadMatch (invalid parameter attributes)
Major opcode of failed request:  153 (RANDR).
Minor opcode of failed request:  18 (RRAddOutputMode).
Serial number of failed request:  29.
Current serial number in output stream:  30

解决办法

解除限制

Manjaro系统下修改/etc/X11/mhwd.d/nvidia.conf

其他linux发行版本系统可修改/etc/X11/xorg.conf(如果不存在该文件可以执行sudo nvidia-xconfig进行创建)

中的Screen Section部分,添加Option "ModeValidation" "NoDFPNativeResolutionCheck,NoVirtualSizeCheck,NoMaxPClkCheck,NoHorizSyncCheck,NoVertRefreshCheck,NoWidthAlignmentCheck"

该配置项的目的是关闭刷新率、分辨率等的检查。

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option "ModeValidation" "NoDFPNativeResolutionCheck,NoVirtualSizeCheck,NoMaxPClkCheck,NoHorizSyncCheck,NoVertRefreshCheck,NoWidthAlignmentCheck"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

保存文件后,注销(logout)或重启桌面会话,然后再登录即可生效。

此时就不会发生 BadMatch 错误了,问题解决。

如果问题还是无法解决,可以尝试用DP-0接口

注意: 当该配置项生效后,任意刷新率和分辨率都可以被配置。如果不当配置两者可能会损坏屏幕!

posted @ 2024-01-24 22:02  littleblackLB  阅读(1592)  评论(0编辑  收藏  举报