[olug] Multiple video cards and X11...

Dan Linder dan at linder.org
Thu Sep 11 04:13:34 UTC 2008


Well, I got a triple-headed system setup using a newer NVidia 8600 dual-DVI
card, and an older NVidia GeForce2 MX VGA card.  Here's the xorg.conf file
with line numbers and some running commentary (e-mail me if you want a copy
w/o numbers).

     1    Section "ServerLayout"
     2        Identifier    "LCD-CRT-LCD"
     3        Screen        0 "LCD_A_GF8600_NVIDIA" LeftOf "CRT_GF2MX_NV"
     4        Screen        1 "CRT_GF2MX_NV"
     5        Screen        2 "LCD_B_GF8600_NVIDIA" RightOf "CRT_GF2MX_NV"
     6        InputDevice    "Keyboard" "CoreKeyboard"
     7        InputDevice    "Mouse" "CorePointer"
     8    EndSection

For me, the easiest way to think about the xconfig file was to think how I
wanted the monitors to be laid out on my desk.  I decided to put the two LCD
panels to either side of my CRT to keep it visually balanced so I wasn't
*always* typing looking off-center.  The "LeftOf" and "RightOf" make this
layout easy.

The values ("LCD_A_GF8600_NVIDIA", "CRT_GF2MX_NV", etc) refer to
"Identifier" lines in later sections of this file.

    10    Section "Files"
    11    EndSection
    12
    13    Section "Module"
    14        Load    "dbe"
    15        Load    "extmod"
    16        Load    "type1"
    17        Load    "freetype"
    18    EndSection
    19
    20    Section "ServerFlags"
    21        Option         "Xinerama" "true"
    22    EndSection

This section is key so that the base X11 system knows that all the screens
are part of one larger desktop view.  Without the Xinerama=true section,
they would be independant areas that would have their own display manager
and windows would'nt be draggable between monitors.

    24    Section "InputDevice"
    25        Identifier    "Mouse"
    26        Driver        "mouse"
    27        Option        "Protocol" "auto"
    28        Option        "Device" "/dev/psaux"
    29        Option        "Emulate3Buttons" "no"
    30        Option        "ZAxisMapping" "4 5"
    31    EndSection
    32
    33    Section "InputDevice"
    34        Identifier    "Keyboard"
    35        Driver        "kbd"
    36    EndSection
    37
    38    ##########################################
    39    ####       Monitor Definitions        ####
    40    ##########################################
    41
    42    Section "Monitor"
    43        Identifier     "LCDMonitor_A"
    44        VendorName     "Samsung"
    45        ModelName      "SyncMaster 245BW"
    46        HorizSync       30.0 - 110.0
    47        VertRefresh     50.0 - 150.0
    48        Option         "DPMS"
    49    EndSection
    50
    51    Section "Monitor"
    52        Identifier     "LCDMonitor_B"
    53        VendorName     "Samsung"
    54        ModelName      "SyncMaster 245BW"
    55        HorizSync       30.0 - 110.0
    56        VertRefresh     50.0 - 150.0
    57        Option         "DPMS"
    58    EndSection

These sections defined the basic parameters of my LCD monitors.  I probably
didn't need to define it twice, but it helped keep things straight in my
head.

    60    Section "Monitor"
    61        Identifier     "CRTMonitor"
    62        VendorName     "Hitachi"
    63        ModelName      "SuperScan Elite 802"
    64        HorizSync       31.5 - 107.5
    65        VertRefresh     50.0 - 85.0
    66        Option         "DPMS"
    67        ModeLine       "1600x1200 at 65" 175.5 1600 1664 1856 2160 1200
1201 1204 1250 +hsync +vsync
    68    EndSection

This section defined the CRT and the specific mode I wanted to run it in to
get the 1600x1200 resolution.

    70    ##########################################
    71    ####        Device Definitions        ####
    72    ##########################################
    73
    74    Section "Device"
    75        # NVidia GeForce 8600 GT (PCIe-8x, dual DMI port)
    76        # Port A
    77        Identifier     "Device_nvidia_A"
    78        Driver         "nvidia"
    79        VendorName     "NVIDIA Corporation"
    80        BusID          "PCI:2:0:0"
    81        Screen        0
    82    EndSection
    83
    84    Section "Device"
    85        # NVidia GeForce 8600 GT (PCIe-8x, dual DMI port)
    86        # Port B
    87        Identifier     "Device_nvidia_B"
    88        Driver         "nvidia"
    89        VendorName     "NVIDIA Corporation"
    90        BusID          "PCI:2:0:0"
    91        Screen        1
    92    EndSection

These two "nvidia" sections defined that each port was a different screen.
The "Screen #" here is NOT the same as the "Screen #" lines used on lines
3-5.

    94    Section "Device"
    95        # Older NVidia GeForce 2 MX/MB400 (PCI based, single VGA port)
    96        Identifier     "Device_nv"
    97        Driver         "nv"
    98        VendorName     "NVIDIA Corporation"
    99        BusID          "PCI:1:6:0"
   100    EndSection

Here's where the second driver ("nv") is used to activate the older GeForce
2 card.  If the second card was an ATI or other brand, it could go here
too.  Since the "nv" and "nvidia" drivers don't know how to handle the other
card, the "BusID" lines were extraneous, but I left them in just for
documentation purposes.

   102    ##########################################
   103    ####        Screen Definitions        ####
   104    ##########################################
   105
   106    Section "Screen"
   107        Identifier     "LCD_A_GF8600_NVIDIA"
   108        Device         "Device_nvidia_A"
   109        Monitor        "LCDMonitor_A"
   110        DefaultDepth    24
   111        #Option        "MetaModes" "nvidia-auto-select"
   112        SubSection     "Display"
   113            Depth        24
   114            Modes        "1920x1200" "1600x1200" "1280x1024"
"1024x768"
   115        EndSubSection
   116    EndSection

Here's where I defined what monitors were hooked to which video card ports,
also what resolution and bit-depth to run them at.  The "Identifier" line
values are used in the ServerLayout section (lines 1-8) so don't fat-finger
them (as I did for a few test runs)...

   118    Section "Screen"
   119        Identifier     "LCD_B_GF8600_NVIDIA"
   120        Device         "Device_nvidia_B"
   121        Monitor        "LCDMonitor_B"
   122        DefaultDepth    24
   123        #Option        "MetaModes" "nvidia-auto-select"
   124        SubSection     "Display"
   125            Depth        24
   126            Modes        "1920x1200" "1600x1200" "1280x1024"
"1024x768"
   127        EndSubSection
   128    EndSection
   129
   130
   131    Section "Screen"
   132        Identifier    "CRT_GF2MX_NV"
   133        Device        "Device_nv"
   134        Monitor        "CRTMonitor"
   135        DefaultDepth    24
   136        Option        "MetaModes" "nvidia-auto-select"
   137        SubSection    "Display"
   138            Depth        24
   139            Modes        "1600x1200 at 65" "1600x1200" "1280x1024"
"1024x768"
   140        EndSubSection
   141    EndSection

Hope this helps someone else setting up a triple screen display within
X11/xorg.

Dan

-- 
"Quis custodiet ipsos custodes?" (Who can watch the watchmen?) -- from the
Satires of Juvenal
"I do not fear computers, I fear the lack of them." -- Isaac Asimov (Author)
** *** ***** ******* *********** *************



More information about the OLUG mailing list