我的显示器有点挑剔。有时我运行一个循环切换分辨率的程序,显示器会在几天内拒绝提供其 EDID 信息:
(/var/log/Xorg.0.log)
[ 239.653] (II) fglrx(0): Restoring Recent Mode via PCS is not supported in RANDR 1.2 capable environments
[ 260.113] (II) fglrx(0): Cannot get EDID information for CRT1
[ 271.166] (II) fglrx(0): Cannot get EDID information for CRT1
(^ ran xrandr, this happens)
这会导致视频卡认为它支持的最大分辨率是 1600x1200,而我以显示器手册上说支持的最佳分辨率 1680x1050 运行它。xrandr
甚至没有列出受支持的模式。
现在,我又遇到了同样的问题,因为我正在尝试葡萄酒这导致 Xorg 崩溃并迫使我重新启动。
有时我会弄清楚如何恢复它(我已经忘记了如何恢复),有时它会自行纠正。
第一次发生这种情况时,我认为我最好使用以下方法备份二进制 EDID 信息read-edid
,我已将其保存在硬盘上的一个 128 字节文件中。这引出了我的问题:
如何告诉 fglrx 从文件中读取 EDID 信息而不是尝试从显示器中获取它?
附加信息:
我过去认为这是显卡的故障,但新的显卡(仍然是 fglrx 驱动程序)和新的 VGA 电缆也出现了同样的问题。
显示器是 Westinghouse LCM-22w3,插入显卡 ATI Radeon HD 3200 的 VGA 端口。
我对此进行了一些研究,显然这是 LCM-22w3 的一个常见投诉,但似乎没人知道如何解决这个问题。
fglrx 8.92、xorg-server 1.9.5、内核 2.6.38.7 x86_64 架构。
答案1
当我使用 EDID 阻止 VGA KVM 切换器时,我使用一个小脚本来修复登录后的分辨率:
xrandr --newmode "1600x1200_60.00" 162.00 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync
xrandr --addmode VGA-1 1600x1200_60.00
xrandr --output VGA-1 --mode 1600x1200_60.00
我认为我以某种方式从 xrandr 获得了模式行(直接插入显示器)。我尝试将其放入 X 配置文件中,但愚蠢的 X 服务器一直以各种莫名其妙的原因忽略它。
答案2
你可以尝试
Option "IgnoreEDID" "TRUE"
然后手动指定显示器的信息。如果 IgnoreEDID 对你不起作用,请尝试
Option "UseEDIDFreqs" "FALSE"
Option "UseEDIDDpi" "FALSE"
答案3
一个不免费(好吧,相当昂贵)的选项是使用Gefen 的 DVI 侦探。它是一种会缓存来自设备的 EDID 信息,然后不断将其提供给 PC 的设备。
我以前曾将它们用于连接到 DVI KVM 的 PC,这些 PC 在切换 KVM 端口后不会重新初始化其显示器。它们在这方面表现很好,应该也适合您使用。