Xorg

特定物理監視器的自定義 EDID,而不是輸出

  • March 23, 2021

我有一個設置,可以根據我所在的位置連接到兩個不同的顯示器。我想使用其中一台顯示器不允許的模式,但在連接任何其他顯示器時不會載入該模式。

更具體地說,我想將家裡的外接顯示器超頻到 120hz,但不超頻工作時連接到同一個 HDMI 埠的不同顯示器。這可能使用nvidia嗎?我似乎無法用 xrandr 覆蓋 EDID,同時預設使用 EDID 設置。

好的,所以如果使用 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

驅動程序的 EDID 覆蓋功能nvidia似乎需要指定應由輸出 ID 覆蓋其 EDID 的監視器。

在啟動 X 伺服器之前,您可能必須以某種方式檢測“您在哪裡”,然後將您的xorg.conf文件切換到兩個準備好的替代方案之一,或者xorg.conf.d相應地添加/刪除一個片段。

有關想法,請參閱此網頁:https ://kodi.wiki/view/Creating_and_using_edid.bin_via_xorg.conf

您可以使用read-edidedid-decode包在 X 伺服器啟動之前讀取實際的 EDID,對其進行解碼以辨識顯示,然後相應地切換 X 配置文件,然後繼續 X 伺服器啟動。或者您可以使用網路參數或在 X 啟動之前可以輕鬆檢測到的其他東西來確定應該使用哪個配置。

由於您沒有指定您使用的是哪個 Linux 發行版,我無法建議將您的自定義腳本插入到系統啟動順序中的適當位置的確切過程,但絕對可以這樣做。

引用自:https://unix.stackexchange.com/questions/552059