配置多台显示器以使用自定义 EDID

配置多台显示器以使用自定义 EDID

几个月前,我购买了一台韩国 1440p 显示器 - X-Star DP2710 LED。开箱后,它无法与 Ubuntu 正确配合使用,Ubuntu 检测到 DVI 电缆上的 EDID 损坏,并拒绝输出正确的 1440p 分辨率。由于此显示器没有内置缩放器,这导致显示器完全忽略 Ubuntu 的输出 - 而是显示多色测试图案。我通过将以下内容放入我的 xorg.conf 中来解决此问题:

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "CustomEDID" "DFP-0:/etc/X11/edid-shimian.bin"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

然后当然,在给定的路径上,我放置了一个名为 edid-shimian.bin 的文件,其中包含允许显示器显示 1440p 的 EDID。

使用这款显示器的体验非常棒(您真的需要尝试一下),所以我决定再买两台显示器与这台机器一起使用,由 Nvidia GTX 760 驱动。但是,该显示器需要双链路 DVI 连接,并且该卡只提供两个,因此第三台显示器是 DP2710 MULTI 版本,它允许使用 HDMI 连接。

它们今天都到了,我的解决方法似乎对它们不起作用。主显示器仍然工作,但第二个 DVI 显示器执行测试模式,HDMI 显示器的上限为 1080p。(我与 Windows 进行了双启动,并能够让所有三个显示器都显示 1440p。)

我的计划是以某种方式将相同的 xorg.conf 选项应用于其他两个监视器,但我不确定如何操作 xorg.conf 来实现这一点。有什么建议吗?

答案1

搞清楚了。因此,要实现这个目标,有两个问题需要解决:

1) 第二台 DVI-Dual-Link 显示器需要 EDID 文件,因为该显示器的 EDID 已损坏。(我使用的 EDID 文件,从文件名就可以看出,最初来自 Shimian 品牌的显示器,我不知道它是如何制作的,但我知道它有效。如果您正在阅读此内容,并且需要该文件,请告诉我,我可以上传它。)

2) HDMI 显示器具有有效的 EDID,但由于某种原因,它的最大分辨率列为 1080p。

这些问题可以通过 xorg.conf 中的以下条目解决:

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24

    Option         "ModeValidation" "AllowNon60hzmodesDFPModes, NoEDIDDFPMaxSizeCheck, NoVertRefreshCheck, NoHorizSyncCheck, NoDFPNativeResolutionCheck, NoMaxSizeCheck, NoMaxPClkCheck, AllowNonEdidModes, NoEdidMaxPClkCheck"

    Option         "CustomEDID" "DFP-0: /etc/X11/edid-shimian.bin; DFP-3: /etc/X11/edid-shimian.bin"

    Option         "metamodes" "DFP-0: 2560x1440 +2560 +0, DFP-1: 2560x1440 +0+0, DFP-3: 2560x1440 

    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Option 行之间的空格是为了清晰起见,但不是必需的。以下是每个选项的作用:

元模式行指定每个显示器的屏幕分辨率。在本例中,DFP-0 是第一个 DVI 显示器,DFP-3 是第二个,DFP-1 是 HDMI。此元模式行将它们全部设置为 1440p,并将 HDMI 显示器放在左侧,第二个 DVI 显示器放在右侧。仅此一行是不够的 - 另外两条行是必需的。

CustomEDID 行将 DVI 显示器指向上述二进制 EDID 文件。此行的存在使 Nvidia 驱动程序确信它们能够支持 1440p。

ModeValidation 行实际上禁用了大量旨在防止您在屏幕上设置错误分辨率的安全机制。因此,使用这些选项时务必小心谨慎!不过在这种情况下,我确信所有显示器都能够达到我要求的分辨率。此行对于 HDMI 显示器的工作必不可少。

希望这可以为其他人带来帮助!

答案2

我于 2012 年 7 月 27 日星期五上午 9:47(美国东部时间)在 ebay 上以每台 659.80 美元的价格购买了以下两台显示器:

ACHIEVA Shimian QH270-Lite 四核高清 2560x1440 DVI

我使用在某篇在线文章中找到的 EDID 文件在 Ubuntu 上设置了它们,并使用了上述的 CustomEDID 选项。我一直运行它们,直到 2021 年我终于重建了那台机器。我遇到了同样的问题,所以不得不找到 EDID 文件。以下是 edid-shimian.bin 文件的内容,采用 base64 格式(您必须使用“base64 -d”对其进行解码才能在 xorg.conf 中使用它):

AP///////wAEYpsEAAAAACgVAQOlPCJ4Im+xp1VMniUMUFQAAAABAQEBAQEBAQEBAQEBAQEBVl4A
oKCgKVAwIDUAVVAhAAAaAAAA/ABRSEQyNzAKICAgICAgAAAA/AAKICAgICAgICAgICAgAAAA/AAK
ICAgICAgICAgICAgAH4K

仅供参考,当我使用 parse-edid 解析该文件时,我得到:

jeremy@latitude ~ $ parse-edid  < /etc/X11/edid-shimian.bin 
Checksum Correct

Section "Monitor"
        Identifier ""
        ModelName ""
        VendorName "ACB"
        # Monitor Manufactured week 40 of 2011
        # EDID version 1.3
        # Digital Display
        DisplaySize 600 340
        Gamma 2.20
        Option "DPMS" "true"
        Modeline        "Mode 0" 241.50 2560 2608 2640 2720 1440 1443 1448 1481 +hsync -vsync
EndSection

相关内容