Ubuntu下使用xrandr为DVI显示器添加自定义分辨率时遇BadMatch错误求助
Ubuntu下使用xrandr为DVI显示器添加自定义分辨率时遇BadMatch错误求助
刚接触Ubuntu就折腾自定义分辨率确实容易踩坑,我来帮你捋捋这个BadMatch错误的解决思路——这个报错通常是因为你创建的分辨率模式参数(比如像素时钟、同步信号规则)和显示器/显卡输出端口的硬件不兼容,系统拒绝把不匹配的模式绑定到输出上。
下面是一步步的排查和解决步骤:
1. 用系统工具生成合规的分辨率参数
很多新手手动写--newmode参数容易出错,建议用系统自带的cvt工具自动生成符合标准的模式参数,尤其DVI接口要注意带宽限制,推荐用**reduced blanking(缩减消隐)**模式来降低像素时钟,避免超出DVI的带宽上限:
- 比如要生成1920x1080@60Hz的缩减消隐模式,运行:
cvt -r 1920 1080 60 - 你会得到类似这样的输出:
1920x1080 59.93 Hz (CVT 2.07M9-R) hsync: 66.59 kHz; pclk: 138.50 MHz
Modeline "1920x1080R" 138.50 1920 1968 2000 2080 1080 1083 1088 1111 +hsync -vsync
- 把
Modeline后面的内容完整复制下来,用来创建newmode。
2. 正确执行xrandr命令
首先用xrandr命令查看你的DVI输出端口名称(比如DVI-0、DVI-1,不同机器可能不一样),然后按顺序执行:
- 创建新模式(把下面的参数替换成你刚才cvt输出的内容):
xrandr --newmode "1920x1080R" 138.50 1920 1968 2000 2080 1080 1083 1088 1111 +hsync -vsync - 绑定到DVI输出(替换成你的端口名):
xrandr --addmode DVI-0 1920x1080R - 最后应用这个模式:
xrandr --output DVI-0 --mode 1920x1080R
3. 手动创建Xorg配置片段(如果命令行方式无效)
既然你没有/etc/X11/xorg.conf,可以在/etc/X11/xorg.conf.d/目录下新建一个配置文件(比如10-dvi-custom-res.conf),把自定义模式硬编码进去,这样系统启动时会自动加载:
Section "Monitor" Identifier "DVI-0" # 这里要和你xrandr里看到的端口名一致 Modeline "1920x1080R" 138.50 1920 1968 2000 2080 1080 1083 1088 1111 +hsync -vsync EndSection Section "Screen" Identifier "Screen0" Device "Card0" Monitor "DVI-0" SubSection "Display" Modes "1920x1080R" EndSubSection EndSection
保存文件后重启电脑,系统会自动加载这个配置,不需要再手动跑xrandr命令。
4. 排查硬件限制
如果上面的方法都不行,可能是你的老DVI显示器本身不支持这个分辨率/刷新率,建议查一下显示器的官方说明书,确认它的最大支持参数,不要强行设置超出硬件能力的模式。
备注:内容来源于stack exchange,提问作者Ded J
相关产品推荐
相关产品推荐

