我有一个设置,根据我所在的位置连接到两个不同的显示器。我想使用其中一个显示器不允许的模式,但当连接任何其他显示器时不会加载该模式。
更具体地说,我想将家里的外部显示器超频到 120hz,但不想在工作时超频连接到同一 HDMI 端口的不同显示器。使用 nvidia 可以吗?我似乎无法使用 xrandr 覆盖 EDID,同时默认使用 EDID 设置。
答案1
驱动程序的 EDID 覆盖功能nvidia
似乎需要指定其 EDID 应被输出 ID 覆盖的显示器。
在启动 X 服务器之前,您可能必须以某种方式检测“您所在的位置”,然后将您的xorg.conf
文件切换到两个准备好的替代方案之一,或者xorg.conf.d
相应地添加/删除片段。
请参阅此网页以获取想法:https://kodi.wiki/view/Creating_and_using_edid.bin_via_xorg.conf
您也许可以在 X 服务器启动之前使用read-edid
和edid-decode
软件包读取实际的 EDID,对其进行解码以识别显示器,然后相应地切换 X 配置文件,然后继续启动 X 服务器。或者,您可以使用网络参数或其他在 X 启动之前可以轻松检测到的参数来确定应使用哪种配置。
由于您尚未指定您使用的是哪个 Linux 发行版,因此我无法建议将自定义脚本插入到系统启动序列中正确位置的确切过程,但绝对可以做到。
答案2
好的,如果使用 nvidia,您可以通过显示器的 EDID 来引用显示器,这是我的 99-nvidia.conf 中的示例(我在这里使用的参考)
Section "Module"
Load "modesetting"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
#this is the important part!!!
Option "CustomEDID" "DPY-EDID-d2ee947f-cde6-694c-4099-2f7aa520eb75: /home/myName/Documents/monitors/edid-120.bin"
SubSection "Display"
Depth 24
EndSubSection
EndSection
Section "Device"
Identifier "nvidia"
Driver "nvidia"
BusID "PCI:1:0:0"
#Option "DPI" "96 x 96" #adjust this value as needed to fix scaling
Option "AllowEmptyInitialConfiguration"
EndSection
Section "Extensions"
Option "Composite" "Enable"
EndSection