Dual NVidia graphics cards in Ubuntu / xorg.conf mania

16,032

I got it to work. The first step was to replace the GeForce card with a Quadro card identical to the first. Then nvidia-settings was able to see it. I ended up with this xorg.conf:

Section "ServerLayout"
    Identifier     "Default Layout"
    Screen      0  "Screen0" 0 0
    Screen      1  "Screen1" RightOf "Screen2"
    Screen      2  "Screen2" RightOf "Screen0"
    Option         "Clone" "off"
    Option         "Twinview" "on"
    Option         "Xinerama" "on"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "DELL 2408WFP"
    HorizSync       30.0 - 83.0
    VertRefresh     56.0 - 76.0
    Option         "DPMS"
    Option         "RandRRotation" "on"
    Option         "Rotate" "CCW"
EndSection

Section "Monitor"
    Identifier     "Monitor1"
    VendorName     "Unknown"
    ModelName      "DELL 2408WFP"
    HorizSync       30.0 - 83.0
    VertRefresh     56.0 - 76.0
    Option         "DPMS"
    Option         "RandRRotation" "on"
    Option         "Rotate" "CCW"
EndSection

Section "Monitor"
    Identifier     "Monitor2"
    VendorName     "Unknown"
    ModelName      "DELL 2408WFP"
    HorizSync       30.0 - 83.0
    VertRefresh     56.0 - 76.0
    Option         "DPMS"
    Option         "RandRRotation" "on"
    Option         "Rotate" "CCW"
EndSection

Section "Device"
    Identifier     "Videocard1"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "Quadro NVS 295"
    Option         "RenderAccel" "true"
    BusID          "PCI:3:0:0"
    Screen          1
EndSection

Section "Device"
    Identifier     "Videocard0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "Quadro NVS 295"
    BusID          "PCI:3:0:0"
    Screen          0
EndSection

Section "Device"
    Identifier     "Videocard2"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "Quadro NVS 295"
    BusID          "PCI:4:0:0"
EndSection


Section "Screen"
    Identifier     "Screen0"
    Device         "Videocard0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "UseEdidFreqs" "True"
    Option         "TwinView" "0"
    Option         "metamodes" "DFP-2: nvidia-auto-select +0+0"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Section "Screen"
    Identifier     "Screen1"
    Device         "Videocard2"
    Monitor        "Monitor1"
    DefaultDepth    24
    Option         "UseEdidFreqs" "True"
    Option         "TwinView" "0"
    Option         "metamodes" "nvidia-auto-select +0+0"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Section "Screen"
    Identifier     "Screen2"
    Device         "Videocard1"
    Monitor        "Monitor2"
    DefaultDepth    24
    Option         "UseEdidFreqs" "True"
    Option         "TwinView" "0"
    Option         "metamodes" "DFP-3: nvidia-auto-select +0+0"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

TwinView doesn't seem to be available across multiple cards, so now I use multiple X screens with Xinerama, which causes the Gnome Screen Resolution applet not to work (it thinks XRandRExtension is not enabled even when it is). But I hard-coded the screen rotations in there, and it all works.

Hopefully Ubuntu Karmic solves all this with whatever its replacement system is for the rather dreadful xorg.conf.

Share:
16,032

Related videos on Youtube

AgDude
Author by

AgDude

Updated on September 17, 2022

Comments

  • AgDude
    AgDude over 1 year

    I have two NVidia graphics cards:

    • Quadro NVS 295 (PCI Express, dual DisplayPort outputs)
    • GeForce FX 5200 (PCI, DVI and VGA outputs)

    I have three identical monitors, two on DisplayPort and one on DVI.

    I'm on Ubuntu Hardy (and cannot currently dist-upgrade for separate reasons). I use the "nvidia" driver.

    What's new is the GeForce card and the third monitor. I currently have the dual DisplayPort monitors working fine. Here are the display-related parts of my xorg.conf:

    Section "ServerLayout"
        Identifier "Default Layout"
        Screen          "PCI-Express Screen" 0 0
    # adding this makes X fail to start:  Screen "PCI Screen" 0
        Inputdevice "Generic Keyboard"
        Inputdevice "Configured Mouse"
    EndSection
    
    Section "Module"
        Load  "glx" # not sure why/if this is needed
    EndSection
    
    Section "Monitor"
        Identifier "DELL 2408WFP"
        Option  "DPMS"
    EndSection
    
    Section "Device"
        Identifier "NVIDIA Quadro NVS 295"
        Driver  "nvidia"
        Option  "RenderAccel" "true"
        Screen          0
        BusID           "PCI:2:0:0"
    EndSection
    
    Section "Device"
        Identifier "NVIDIA GeForce FX 5200"
        Driver  "nvidia"
        Option  "RenderAccel" "true"
        Screen          1
        BusID           "PCI:6:4:0"
    EndSection
    
    Section "Screen"
        Identifier "PCI-Express Screen"
        Device  "NVIDIA Quadro NVS 295"
        Monitor  "DELL 2408WFP"
        Defaultdepth 24
        Option  "TwinView" "True"
        Option  "UseEdidFreqs" "True"
        Option  "MetaModes" "1920x1200 +0+1200, 1920x1200 +0+0"
    EndSection
    
    Section "Screen"
        Identifier "PCI Screen"
        Device  "NVIDIA GeForce FX 5200"
        Monitor  "DELL 2408WFP"
        Defaultdepth 24
        Option  "TwinView" "True"
        Option  "UseEdidFreqs" "True"
        Option  "MetaModes" "1920x1200 +0+0"
    EndSection
    

    I use nvidia-settings to configure my monitors, and it does not show the second GPU. lspci, though, shows:

    02:00.0 VGA compatible controller: nVidia Corporation Unknown device 06fd
    06:04.0 VGA compatible controller: nVidia Corporation NV34 [GeForce FX 5200]
    

    Which is where I got the BusID settings for the two devices (when I just had one device, I didn't have any BusID listed...and adding the BusID hasn't broken anything).

    What am I missing? How can I make nvidia-settings show my second GPU so I can then configure its monitor?

  • AgDude
    AgDude over 14 years
    ...and then I found that X would consume all the CPU time on my many-core machine, making this kind of useless. It seems like Xinerama makes thing slow and buggy, whereas TwinView does not. But TwinView only supports a single GPU, so maybe I'll end up needing a 3- or 4-port GPU instead. For now I'm back to two monitors so I can use TwinView.
  • AgDude
    AgDude about 14 years
    ...and eventually I upgraded to Ubuntu Lucid Lynx, where the Xorg 100% CPU problems are mostly gone, and the machine is usable with three monitors. At last.
  • AgDude
    AgDude over 13 years
    I don't know. And I abandoned the NVidia setup eventually for Matrox, which is much more reliable (doesn't crash) than NVidia (Xorg crashes fairly often with more than two monitors using Xinerama). A coworker had good luck with ATi's new Eyefinity multi-head card, too, so I suggest that because it's cheaper than the Matrox quad-head card, and OpenGL acceleration works.
  • AgDude
    AgDude over 13 years
    ...the saga continued: in Lucid it was never quite stable--I experienced a bug (reported by others too): if the mouse was transiting the boundary between two screens while I simultaneously switched workspaces (using the keyboard), the computer would lock up hard. After months of having this happen to myself and a coworker with a similar setup, I switched to a Matrox M9148 on Ubuntu Lucid. It worked OK, though there was no OpenGL acceleration. Then I upgraded to Ubuntu Maverick, Matrox had no drivers, so I switched to an ATi Eyefinity 5700. Works like a charm--at last!