Fedora 25 中忽略 Xorg.conf 设置

Fedora 25 中忽略 Xorg.conf 设置

我有一台 NVidia GT8600,连接了两台显示器(一台通过 VGA 端口,一台通过分量端口)。使用默认的 xorg.conf 时,不会检测到第二个监视器(组件),并且第一个监视器以强制关闭监视器的分辨率运行。所以我尝试手动配置它们。我的两台显示器都已打开,但分辨率错误。我尝试过创建模型行等,但它们只是被忽略,并且两个显示器上都运行了错误的分辨率。

我希望显示器 0 (LCD) 为 800x480 60Hz,显示器 1 (投影仪) 1920x1080 60Hz,扩展桌面,显示器 1 位于显示器 0 的右侧。我的两个 xorg 配置是:

50-lcd.conf:

# LCD display in SilverStoneTek case
Section "Monitor"
    Identifier     "LCD"
    VendorName     "SilverstoneTek"
    ModelName      "Chassis"
    HorizSync       28.0 - 33.0
    VertRefresh     43.0 - 72.0
    Modeline       "800x480_60.00"  29.58  800 816 896 992  480 481 484 497  -HSync +Vsync
EndSection

Section "Device"
    Identifier     "VGAport"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce 8600 GT"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "VGAport"
    Monitor        "LCD"
    DefaultDepth    24
    Option         "TwinViewXineramaInfoOrder" "CRT-0"
    Option         "metamodes" "CRT-0: 800x480_60.00 +0+0, TV-0: 1920x1080_60.00 +0+0"
    Option         "ConnectedMonitor" "CRT-0, TV-0"
    SubSection     "Display"
        Depth       24
        Modes      "800x480_60.00" "800x480"
    EndSubSection
EndSection

60-投影仪.conf:

Section "Monitor"
    Identifier     "Projector"
    VendorName     "Sony"
    ModelName      "VPL-HW20"
    HorizSync      15.0 - 600.0
    VertRefresh    15.0 - 600.0
    Modeline "1920x1080_60.00"  172.80  1920 2040 2248 2576  1080 1081 1084 1118  -HSync +Vsync
    Option         "dpms"
EndSection

Section "Device"
    # do not use the frequencies provided by the monitor edid 
    Identifier     "ComponentPort"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce 8600 GT"
EndSection


Section "Screen"
    Identifier     "Screen1"
    Device         "ComponentPort"
    Monitor        "Projector"
    DefaultDepth    24
    Option         "metamodes" "CRT-0: 800x480_60.00 +0+0, TV-0: 1920x1080_60.00 +0+0"
    SubSection     "Display"
        Depth       24
        Modes      "1920x1080_60.00" "1920x1080"
    EndSubSection
EndSection

但 xrandr 显示正在使用错误的分辨率,并且我的自定义模型甚至没有显示:

Screen 0: minimum 8 x 8, current 1824 x 768, maximum 8192 x 8192
DVI-I-0 connected primary 800x600+0+168 (normal left inverted right x axis y axis) 0mm x 0mm
   1024x768      60.00 +
   800x600       72.19    60.32*   56.25  
   800x480       60.00  
   640x480       59.94  
   512x384       60.00  
   400x300       72.19  
   320x240       60.05  
DVI-I-1 disconnected (normal left inverted right x axis y axis)
TV-0 connected 1024x768+800+0 (normal left inverted right x axis y axis) 0mm x 0mm
   1024x768      60.00*+
   800x600       60.01  
   720x480       60.00  
   640x480       60.01  
   640x400       60.00  
   512x384       60.00  
DVI-I-2 disconnected (normal left inverted right x axis y axis)
DVI-I-3 disconnected (normal left inverted right x axis y axis)

如果重要的话,Xorg.0.log 引用了 CRT-0 和 TV-0,而 xranrd 则将它们称为 DVI-I-0 和 TV-0。 Xorg.0.log 中没有错误,由于它很长,我不会重新发布整个内容,但这里有一些奇怪的行:

[  3545.187] (II) NVIDIA(0): Setting mode "CRT-0:800x480_60.00+0+0,TV-0:1920x1080_60.00+0+0"
[  3546.255] (II) NVIDIA(0): Setting mode "DVI-I-0: 800x480_60.00 @800x480 +0+0 {ViewPortIn=800x480, ViewPortOut=800x480+0+0}, TV-0: nvidia-auto-select @1024x768 +800+0 {ViewPortIn=1024x768, ViewPortOut=1024x768+0+0}"
[  3546.425] (II) NVIDIA(0): Setting mode "DVI-I-0: 800x600_60 @800x600 +0+168 {ViewPortIn=800x600, ViewPortOut=800x600+0+0}, TV-0: nvidia-auto-select @1024x768 +800+0 {ViewPortIn=1024x768, ViewPortOut=1024x768+0+0}"

看起来它试图将 LCD 设置为 800x480,然后立即将其更改为 800x600。为什么?它甚至没有尝试将投影仪设置为 1920x1080,它只是使用“nvidia-auto-select”。为什么?

答案1

我相信 nvidia 正在根据显示器的 EDID 获取分辨率,从而忽略您的模型线。您可以在 xorg.conf 的“Monitor”部分添加忽略 EDID 的选项。就像是:

   Option "UseEDID" "false" 
   Option "UseEDIDFreqs" "false" 
   Option "IgnoreEDID" "true" 

相关内容