View Single Post
Old 06-16-09, 06:49 PM   #9
Sasha_A
Slackware!
 
Join Date: Apr 2008
Location: Nova Scotia
Posts: 18
Arrow Re: Quad Displays One Desktop Possible w/ Linux?

Okies.. Looks like you did pretty much the right stuff with the file I pasted; however, you had only three monitors/screens in there, and also, Xinerama was turned off.

I fixed those things.

You'll also notice that I re-commented out the 'Screen 0' declarations in the two Device sections. While I have had to use them at times in the past, with various setups, I am not using them currently. You *may* need to specify which screen is to be associated to which card, but really, you should not, because the actual 'Screen' sections them selves should take care of that. If all else fails, try adding/uncommenting the 'Screen' line within ONE of the Device sections, and see what happens.

Also, you must be patient as these complex setups of multiple monitors ALWAYS take some fiddling, and many restarts of X while testing.

When you edit the file to test again, only edit ONE tiny thing at a time, and try it again. Sometimes, Edit-A will work, or Edit-B will work, but Edit-A AND Edit-B will fail miserably :/

Finally, We both are working on a couple assumptions here (or actually, we have no clue, at least I don't):

1) We need to know which card your machine boots on. My machine likes to boot on the upper card (card 1/2) but if there is nothing connected to it, it will sometimes boot on card 2/2 (the lower card) and then it will be a pain-in-the-neck to get it to decide to switch back
So, I'm assuming that your TOP card is the boot card, and that DEVICE-0 is the booting connector., and therefore I assume that that will be "Screen 0" in your xorg.conf, and further to that, this will be the LEFTMOST monitor on your desk. Accordingly, I assume that the TOP card's second connector DEVICE-1 should apply to "Screen 1", and will be the SECOND monitor on your desk.
See where I'm going? Great but --- it's pretty clear to us, the humans, but all this "assuming" is what gets the humans in trouble, because what WE think is card-0, device-0, is not necessarily the way the hardware and the X server will see it.
This is why this stuff takes so much fiddling, and on occasion, switching of cables/connectors on the computer until we are SURE which connector is which. It varies from card to card.

For me, the top card is the primary card, and it prefers to boot on its DVI connector. Yours might prefer to boot on its VGA connector, who knows

Anyhow, the same assumptions apply to your second card: which connector is device-0, and which is device-1, and where the monitors are sitting on your desk, will determine exactly which monitors are connected to what plug, and which "Screen" and "Device" apply to them.

2) Once you have that sorted out, you must make sure you know which card has which BUS-ID.

I must say again, I did a LOT of fiddling, testing, and changing of connectors, until I got this to work; and what works for me with 4 monitors will not necessarily work AS IS for you with 4 monitors.



OK, well I am attaching the slightly-changed version again here (yes, I'll attach it rather than post it, because [code] doesn't seem to post very nicely on here)

Best of luck!!

OH! PS - I wanted to mention, that when you test configurations and the monitor(s) turn off or go into power-save mode, it isn't necessarily totally bad; what it usually means, if the X server didn't crash, is that the data you are trying to send to the monitor is getting sent to the wrong X/Y coordinates, and therefore it is 'missing' the screen..
As an example, if I tell my setup to put the image destined for my RIGHT monitor, somewhere over too far to the left, then it will not appear on the monitor, and the monitor will turn off because it has no image to display.
This is what the 'RightOf' and 'LeftOf' are for in the ServerLayout section... Also note however that sometimes, instead of the RightOf and LeftOf, I have had configurations which preferred me to give relative coordinates for the positioning; As an example:

Monitor-1 is 1280x1024, therefore if I want Monitor-2 on the right of that, then the left edge of Monitor-2 is at X=1280, so:
Code:
Screen      2  "Screen2" RightOf "Screen1"
is the same as:
Code:
Screen      2   "Screen2" 1280 0
but only one method may work.

PPS - Where the video devices (the card connectors) are concerned, you should consider giving them more meaningful names as I did, identifying which connector they actually are, because as you sit and stare and fiddle with this for a while, labels like 'Device0' start to get confusing... I find it easier to remember what I'm doing if the device is called something like 'TopcardLeft' and 'TopcardRight' or something like this.. IT's up to you, but...


OK, Good luck, and.. I changed my mind about the attachment; I will just post it here in this post, because I can remember having a difficult time dealing with this method of 'managing attachments' where there's no simple 'attachment' button on the page here..

Here goes:

Code:
# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings:  version 1.0  (buildmeister@builder62)  Wed May 27 01:59:40 PDT 2009

# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig:  version 1.0  (buildmeister@builder62)  Wed May 27 01:58:49 PDT 2009

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         "kbd"
    Option         "XkbLayout" "us"
    Option         "XkbModel" "pc105"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "DELL E198FP"
    HorizSync       31.0 - 80.0
    VertRefresh     56.0 - 75.0
    Option         "DPMS"
EndSection

Section "Monitor"
    Identifier     "Monitor1"
    VendorName     "Unknown"
    ModelName      "LG L1933TR"
    HorizSync       30.0 - 83.0
    VertRefresh     56.0 - 75.0
EndSection

Section "Monitor"
    Identifier     "Monitor2"
    VendorName     "Unknown"
    ModelName      "DELL E198FP"
    HorizSync       31.0 - 80.0
    VertRefresh     56.0 - 75.0
    Option         "DPMS"
EndSection

Section "Monitor"
    Identifier     "Monitor3"
    VendorName     "Unknown"
    ModelName      "LG L1933TR"
    HorizSync       30.0 - 83.0
    VertRefresh     56.0 - 75.0
EndSection



Section "Device"
    Identifier     "Device0"
    Option "NvAGP" "1"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce 6200"
    BusID          "PCI:1:6:0"
EndSection

Section "Device"
    Identifier     "Device1"
    Option "NvAGP" "1"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce 6200"
    BusID          "PCI:1:6:0"
EndSection

Section "Device"
    Identifier     "Device2"
    Option "NvAGP" "1"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce 8300"
    BusID          "PCI:2:0:0"
#   Screen          0
EndSection

Section "Device"
    Identifier     "Device3"
    Option "NvAGP" "1"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce 8300"
    BusID          "PCI:2:0:0"
#   Screen          0
EndSection


Section "ServerLayout"
    Identifier     "default"
    Screen      0  "Screen0" 0 0
    Screen      1  "Screen1" RightOf "Screen0"
    Screen      2  "Screen2" RightOf "Screen1"
    Screen      3  "Screen3" RightOf "Screen2"

    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
EndSection

Section "ServerFlags"
    Option         "Xinerama" "1"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "NoLogo" "False"
    Option         "RenderAccel" "On"
    Option         "HWcursor" "On"
    Option         "DamageEvents" "True"
    Option         "TwinView" "0"
    Option         "TwinViewXineramaInfoOrder" "DFP-0"
    Option          "metamodes" "CRT-0: 1280x1024 +0+0"
      SubSection   "Display"
      Depth         24
      EndSubSection
EndSection

Section "Screen"
    Identifier     "Screen1"
    Device         "Device1"
    Monitor        "Monitor1"
    DefaultDepth    24
    Option         "NoLogo" "False"
    Option         "RenderAccel" "On"
    Option         "HWcursor" "On"
    Option         "DamageEvents" "True"
    Option         "TwinView" "0"
    Option         "metamodes" "CRT-0: 1280x1024 +0+0"
      SubSection   "Display"
      Depth         24
      EndSubSection
EndSection

Section "Screen"
    Identifier     "Screen2"
   Device         "Device2"
    Monitor        "Monitor2"
    DefaultDepth    24
    Option         "NoLogo" "False"
    Option         "RenderAccel" "On"
    Option         "HWcursor" "On"
    Option         "DamageEvents" "True"
    Option         "TwinView" "0"
    Option         "metamodes" "CRT-0: 1280x1024 +0+0"
      SubSection   "Display"
      Depth         24
      EndSubSection
EndSection

Section "Screen"
    Identifier     "Screen3"
    Device         "Device3"
    Monitor        "Monitor3"
    DefaultDepth    24
    Option         "NoLogo" "False"
    Option         "RenderAccel" "On"
    Option         "HWcursor" "On"
    Option         "DamageEvents" "True"
    Option         "TwinView" "0"
    Option         "metamodes" "CRT-0: 1280x1024 +0+0"
      SubSection   "Display"
      Depth         24
      EndSubSection
EndSection

Last edited by Sasha_A; 06-16-09 at 06:53 PM. Reason: A bit more info..
Sasha_A is offline   Reply With Quote