Three Monitor Display (requires ConnectedMonitor) on one card , only shows max of two screens

Hello!

I’ve spent the better portion of a day working on this with no success. I’m attempting to use a single Quadro FX 3800 card to display 3 monitors, two as DisplayPort and one as DVI. I have verified that each monitor functions, and that the cables function, so I’m left to the configs.

I have attempted the following:

  • Loading as one Screen using ModeLines with 3 screens (Not available on this card)
  • Loading as Three Screens and each loading different drivers/monitors (Never got the third monitor to show, and had to fight to get the second, non-nvidia Xinerama used)
  • Loading one screen and using TwinViewXineramaInfoOverride, per this forum post (why yes, I searched!)
  • None have successfully had all three monitors displaying in any way shape or form. The best I’ve been able to do is two, but I have gotten them all to function at one point in time.

    Here’s the kicker: one of my monitors doesn’t show up as ‘connected’ and so it requires the “ConnectedMonitor” option, which seems to break multi-screen implementations. This may be a different bug, but you are unable to specify which monitor is connected to which device/screen, as it only reads the first one. “UseDisplayDevice” does not activate it as “connected”, as intended, so there is no way of telling Screen1 that there are other monitors available when they have been deemed used on Screen0 via “ConnectedMonitor”, even with “UseDisplayDevice” only set to one device. Only specifying the one monitor that doesn’t show up as connected in it’s screen/device nets the other two disabled/disconnected.

    I’m sure the nvidia-bug-report.log contains my xorg.conf, but here it is and a slew of other information… just in case.

    # nvidia-xconfig: X configuration file generated by nvidia-xconfig
    # nvidia-xconfig:  version 310.19  (buildmeister@swio-display-x86-rhel47-08.nvidia.com)  Thu Nov  8 02:09:12 PST 2012
    
    # nvidia-settings: X configuration file generated by nvidia-settings
    # nvidia-settings:  version 310.19  (buildmeister@swio-display-x86-rhel47-08.nvidia.com)  Thu Nov  8 02:08:55 PST 2012
    
    Section "ServerLayout"
        Identifier     "Layout0"
        #Screen      0  "Screen0" 1280 88 #1280 88
        #Screen      1  "Screen1" 0 0 #0 0
        Screen      0  "Screen0" 0 0 #0 0
        #Screen      2  "Screen2" 3200 88 #3200 88
        #InputDevice    "Keyboard0" "CoreKeyboard"
        #InputDevice    "Mouse0" "CorePointer"
    EndSection
    
    Section "ServerFlags"
        #Option         "ZapWarning" "1"
        Option         "Xinerama" "0"
    EndSection
    
    Section "Extensions"
        Option         "Composite" "1"
    EndSection
    
    Section "Files"
        FontPath        "/usr/share/fonts/default/Type1"
    EndSection
    
    #Section "InputDevice"
    #
    #    # generated from default
    #    Identifier     "Mouse0"
    #    Driver         "mouse"
    #    Option         "Protocol" "auto"
    #    Option         "Device" "/dev/input/mice"
    #    Option         "Emulate3Buttons" "no"
    #    Option         "ZAxisMapping" "4 5"
    #EndSection
    
    #Section "InputDevice"
    #
    #    # generated from data in "/etc/sysconfig/keyboard"
    #    Identifier     "Keyboard0"
    #    Driver         "keyboard"
    #    Option         "XkbLayout" "us"
    #    Option         "XkbModel" "pc105"
    #EndSection
    
    Section "Monitor"
    
        # HorizSync source: edid, VertRefresh source: edid
        Identifier     "Monitor0"
        VendorName     "Unknown"
        ModelName      "Samsung SyncMaster"
        HorizSync       30.0 - 81.0
        VertRefresh     56.0 - 75.0
        Option         "DPMS"
    EndSection
    
    #Section "Monitor"
    #
    #    # HorizSync source: edid, VertRefresh source: edid
    #    Identifier     "Monitor1"
    #    VendorName     "Unknown"
    #    ModelName      "ViewSonic VG910b"
    #    HorizSync       30.0 - 82.0
    #    VertRefresh     50.0 - 75.0
    #    Option         "DPMS"
    #EndSection
    #
    #Section "Monitor"
    #    # HorizSync source: edid, VertRefresh source: edid
    #    Identifier     "Monitor2"
    #    VendorName     "Unknown"
    #    ModelName      "SUN GH19PS"
    #    HorizSync       30.0 - 81.0
    #    VertRefresh     56.0 - 76.0
    #    Option         "DPMS"
    #EndSection
    
    Section "Device"
        Identifier     "Device0"
        Driver         "nvidia"
        VendorName     "NVIDIA Corporation"
        BoardName      "Quadro FX 3800"
        BusID          "PCI:3:0:0"
        Option         "ConnectedMonitor" "DFP-0,DFP-1,DFP-2"
        Screen          0
    EndSection
    #
    #Section "Device"
    #    Identifier     "Device1"
    #    Driver         "nvidia"
    #    VendorName     "NVIDIA Corporation"
    #    BoardName      "Quadro FX 3800"
    #    BusID          "PCI:3:0:0"
    #    #Option         "ConnectedMonitor" "DFP-1"
    #    Screen          1
    #EndSection
    #
    #Section "Device"
    #    Identifier     "Device2"
    #    Driver         "nvidia"
    #    VendorName     "NVIDIA Corporation"
    #    BoardName      "Quadro FX 3800"
    #    BusID          "PCI:3:0:0"
    #    #Option         "ConnectedMonitor" "DFP-2"
    #    Screen          2
    #EndSection
    
    Section "Screen"
        Identifier     "Screen0"
        Device         "Device0"
        Monitor        "Monitor0"
        DefaultDepth    24
        Option         "Stereo" "0"
        Option         "TwinView" "1"
    
        #Option         "NoTwinViewXineramaInfo" "1"
        #Option         "nvidiaXineramaInfo" "1"
        #Option         "TwinViewXineramaInfoOverride" "1280x1024 +0+88, 1920x1200+1280+00, 1280x1024 +3200+88"
        #Option         "nvidiaXineramaInfoOrder" "DFP-0"
        #Option         "ConnectedMonitor" "DFP-0,DFP-1,DFP-2"
        #Option         "UseDisplayDevice" "DFP-0"
        Option         "CustomEDID" "DFP-0:/etc/X11/Samsung-SyncMaster-245bw.bin; DFP-2:/etc/X11/Sun-GH19PS.bin; DFP-1:/etc/X11/ViewSonic-VG910b.bin"
        #Option         "MetaModes" "DFP-0: 1920x1200+1280+00, DFP-1:1280x1024 +0+88; DFP-0: 1920x1200+1280+00, DFP-1:1280x1024 +0+88, DFP-2:1280x1024 +3200+88; DFP-0: 1920x1200+0+0; DFP-1: 1280x1024+3200+88; DFP-2: 1280x1024+0+88;"
        #Option         "UseEDID" "0"
        #Option         "UseEDIDFreqs" "0"
        #Option         "UseEdidDpi" "0"
        #Option         "MetaModes" "4480x1200 +0+0"
        Option         "MetaModes" "DFP-0: 1920x1200+1280+0, DFP-1:1280x1024+0+88"
        #Option         "ModeDebug" "1"
        #Option "ModeValidation" "AllowNon60HzDFPModes, NoMaxPClkCheck, NoEdidMaxPClkCheck, AllowInterlacedModes, NoMaxSizeCheck, NoHorizSyncCheck, NoVertRefreshCheck, NoWidthAlignmentCheck, NoDFPNativeResolutionCheck, NoVirtualSizeCheck, NoEdidModes, NoExtendedGpuCapabilitiesCheck, ObeyEdidContradictions, NoTotalSizeCheck, NoDualLinkDVICheck, NoDisplayPortBandwidthCheck"
        Option "ModeValidation" "NoEdidMaxPClkCheck, NoVertRefreshCheck"
        SubSection     "Display"
            Depth       24
        EndSubSection
    EndSection
    
    #Section "Screen"
    #    Identifier     "Screen2"
    #    Device         "Device2"
    #    Monitor        "Monitor2"
    #    DefaultDepth    24
    #    Option         "Stereo" "0"
    #    Option         "TwinView" "0"
    #    #Option         "ConnectedMonitor" "DFP-0,DFP-1,DFP-2"
    #    #Option         "ConnectedMonitor" "DFP-2"
    #    Option         "UseDisplayDevice" "DFP-2"
    #    #Option         "BaseMosaic" "True"
    #    #Option         "MetaModes" "GPU-0.DFP-0 1920x1200+1280+0, GPU-0.DFP-1:1280x1024 +0+88, GPU-0.DFP-2:1280x1024 +3200+88"
    #    #Option         "MetaModes" "GPU-0.DFP-2:1280x1024 +3200+88"
    #    #Option         "MetaModes" "DFP-0: 1920x1200+1280+00, DFP-1:1280x1024 +0+88; DFP-0: 1920x1200+1280+00, DFP-1:1280x1024 +0+88, DFP-2:1280x1024 +3200+88; DFP-0: 1920x1200+0+0; DFP-1: 1280x1024+3200+88; DFP-2: 1280x1024+0+88;"
    #    Option         "MetaModes" "DFP-2: 1280x1024+0+00"
    #    SubSection     "Display"
    #        Depth       24
    #    EndSubSection
    #EndSection
    #
    #Section "Screen"
    #    Identifier     "Screen1"
    #    Device         "Device1"
    #    Monitor        "Monitor1"
    #    DefaultDepth    24
    #    Option         "Stereo" "0"
    #    Option         "TwinView" "0"
    #    #Option         "ConnectedMonitor" "DFP-0,DFP-1,DFP-2"
    #    Option         "UseDisplayDevice" "DFP-1"
    #    #Option         "BaseMosaic" "True"
    #    #Option         "MetaModes" "GPU-0.DFP-0 1920x1200+1280+0, GPU-0.DFP-1:1280x1024 +0+88, GPU-0.DFP-2:1280x1024 +3200+88"
    #    #Option         "MetaModes" "GPU-0.DFP-1 1280x1024+0+88"
    #    #Option         "MetaModes" "DFP-0: 1920x1200+1280+00, DFP-1:1280x1024 +0+88; DFP-0: 1920x1200+1280+00, DFP-1:1280x1024 +0+88, DFP-2:1280x1024 +3200+88; DFP-0: 1920x1200+0+0; DFP-1: 1280x1024+3200+88; DFP-2: 1280x1024+0+88;"
    #    Option         "MetaModes" "DFP-1: 1280x1024+0+00"
    #    SubSection     "Display"
    #        Depth       24
    #    EndSubSection
    #EndSection
    #
    

    nvidia-bug-report.log.gz (173 KB)

    $ nvidia-installer --version
    
    nvidia-installer:  version 313.26  (buildmeister@swio-display-x86-rhel47-05) 
    Wed Feb 27 13:56:16 PST 2013
      The NVIDIA Software Installer for Unix/Linux.
    
      This program is used to install, upgrade and uninstall The NVIDIA Accelerated
      Graphics Driver Set for Linux-x86_64.
    
      Copyright (C) 2003 - 2010 NVIDIA Corporation.
    
    $ lspci | grep "nVidia"
    03:00.0 VGA compatible controller: nVidia Corporation GT200GL [NVIDIA Quadro FX 3800] (rev a1)
    
    $ xdpyinfo -ext XINERAMA | grep head
      head #0: 1920x1200 @ 1280,0
      head #1: 1280x1024 @ 0,88
    
    $ xrandr
    Screen 0: minimum 3200 x 1200, current 3200 x 1200, maximum 3200 x 1200
    default connected 3200x1200+0+0 0mm x 0mm
       3200x1200      50.0*
    

    It seems like this card has only 2 CRTCs, so you can only drive 2 independent monitors.

    Only recent GPUs support more than two simultaneous outputs. The Quadro FX 3800 can only drive two connected displays at a time. That’s what “heads” refers to in this message:

    I greatly appreciate you both taking a look, and thank you for the fast response. Wish I would have realized what that meant about 20 hours ago. Haha

    At least I’m not crazy! I would like to think I (especially now) understand xorg.conf and it was driving me insane.

    I have also been trying to get 3 monitors on a single card to work. My configuration is trying to use the internal monitor and 2 external monitors, one connected DVI, the other VGA (I have tried every possible combination of DVI, HDMI, VGA, etc). I have a NVS 5200M based notebook (Dell E6430 for the interested). It shows a similar entry in the Linux log:

    [ 42.444] (II) NVIDIA(0): NVIDIA GPU NVS 5200M (GF108) at PCI:1:0:0 (GPU-0)
    [ 42.444] (–) NVIDIA(0): Memory: 1048576 kBytes
    [ 42.444] (II) NVIDIA(0): Board ID: 0xce4f
    [ 42.444] (II) NVIDIA(0): Chip SKU: 674
    [ 42.444] (II) NVIDIA(0): Project: 1304
    [ 42.444] (II) NVIDIA(0): Project SKU: 0000
    [ 42.444] (II) NVIDIA(0): GPU RAM Type: GDDR5
    [ 42.444] (–) NVIDIA(0): VideoBIOS: 70.08.a8.00.8d
    [ 42.444] (–) NVIDIA(0): Found 2 heads on board
    [ 42.444] (II) NVIDIA(0): Supported display device(s): CRT-0, DFP-0, DFP-1, DFP-2,
    [ 42.444] (II) NVIDIA(0): DFP-3, DFP-4, DFP-5
    [ 42.444] (II) NVIDIA(0): Bus detected as PCI Express
    [ 42.444] (II) NVIDIA(0): Detected PCI Express Link width: 16X
    [ 42.444] (II) NVIDIA(0): DFP scaling is supported on this GPU
    [ 42.444] (II) NVIDIA(0): SPS : 1
    [ 42.444] (II) NVIDIA(0): User configuration of GPU PowerMizer is supported

    However, when I boot into Windows, I am able to configure the full 3 displays and use them all at the same time, so it seems it is possible somehow?? Perhaps the Linux driver is not “detecting” the addition heads? According to the NVidia specifications on the chip, it should be able to drive 4+ displays, even more if you are able to use DisplayPort chaining or hubs.

    GF108 definitely only has two heads. The E6430 is an Optimus configuration, so the internal panel is probably connected to the Intel graphics chip instead of the NVIDIA GPU.