OK, as a first pass at getting my two graphics cards working in a dual head mode I’ve made the following key changes to my XF86Config-4 file. This is by no means exhaustive, but should give a few reference notes to refer to. A HantsLUG wiki entry is planned 🙂
First off the Device sections. I had an original one for my NVidia card along these lines:
Section "Device" Identifier "NVidia GeForce MX 440" Driver "vesa" # Driver "nv" # Driver "nvidia" Option "UseFBDev" "true" BusID "PCI:1:0:0" EndSection
Note that the two commented out lines are due to switches back and forth with the NVidia drivers. So far the vesa one is the only on that has consistently worked and for my usage is doing me fine for now!
I’ve added a second Device section for the secondary card:
Section "Device" Identifier "Matrox Millenium II" Driver "mga" BusID "PCI:0:10:0" EndSection
One change since my first problematic configuration was to switch to the mga driver, but it terms of problems this change didn’t appear to impact anything. Note that the BusID lines are pulled from information in lspci:
0000:00:00.0 Host bridge: Silicon Integrated Systems [SiS] 746 Host (rev 10) 0000:00:01.0 PCI bridge: Silicon Integrated Systems [SiS] SG86C202 0000:00:02.0 ISA bridge: Silicon Integrated Systems [SiS] SiS85C503/5513 (LPC Bri dge) (rev 25) 0000:00:02.5 IDE interface: Silicon Integrated Systems [SiS] 5513 [IDE] 0000:00:02.7 Multimedia audio controller: Silicon Integrated Systems [SiS] Sound Controller (rev a0) 0000:00:03.0 USB Controller: Silicon Integrated Systems [SiS] USB 1.0 Controller (rev 0f) 0000:00:03.1 USB Controller: Silicon Integrated Systems [SiS] USB 1.0 Controller (rev 0f) 0000:00:03.3 USB Controller: Silicon Integrated Systems [SiS] USB 2.0 Controller 0000:00:04.0 Ethernet controller: Silicon Integrated Systems [SiS] SiS900 PCI Fas t Ethernet (rev 90) 0000:00:0a.0 VGA compatible controller: Matrox Graphics, Inc. MGA 2164W [Millenni um II] 0000:00:0c.0 SCSI storage controller: Adaptec AHA-2940/2940W / AIC-7871(rev 03) 0000:01:00.0 VGA compatible controller: nVidia Corporation NV17 [GeForce4 MX 440] (rev a3)
Looking at the last entry in that list you can get the 1:0:0 for the AGP card (not entirely sure why you use PCI in the line, likely just a legacy naming issue for the config file). The PCI card comes in the third line from the end and gives 0:10:0 since 0a is in Hex and translates to 10 in decimal. These BusID lines are required with more than one graphics card, but not with a single card.
Right, on to the Monitor sections now. I have two of these that are identical bar the Identifier line which has a #0 and #1 for each:
Section "Monitor" Identifier "Iiyama Vision Master Pro 400 #0" VendorName "Iiyama" ModelName "Vision Master Pro 400" HorizSync 27-96 VertRefresh 50-160 Option "DPMS" EndSection
Since the Iiyama screens didn’t respond to the get-edid command with good enough information to pipe through to parse-edid I took a quick look at the auto generated section for the previous monitor and matched the only lines not commented out – obviously with the necessary specification changes!
I’m not entirely sure whether you need two sections if the monitors are identical, but as a problem solving process I tried it and haven’t tried changing back yet!
Right, twin Screen sections now. I’ve trimmed these drastically to ensure both screens are working at the same resolution and colour depth (which is apparently required). From the checks I did and the configuration they would have been identically anyway, but again this was a process of elimination:
Section "Screen" Identifier "Primary Screen" Device "NVidia GeForce MX 440" Monitor "Iiyama Vision Master Pro 400 #0" DefaultDepth 16 SubSection "Display" Depth 16 Modes "1280x1024" EndSubSection EndSection
The second one is pretty much the same bar the top three lines which are:
Identifier "Secondary Screen" Device "Matrox Millenium II" Monitor "Iiyama Vision Master Pro 400 #1"
Finally there’s the ServerLayout section which reads much like this:
Section "ServerLayout" Identifier "Dual Screen" Screen "Primary Screen" Screen "Secondary Screen" LeftOf "Primary Screen" Option "Xinerama" InputDevice "Standard Keyboard" InputDevice "MS Optical USB Mouse" EndSection
The key change I’ve made here is in the Screen lines. Initially they were typed based on an article I was reading on the subject on the Linux.com website:
This had the information presented in this form:
Screen "Secondary Screen" LeftOf "Primary Screen" Screen "Primary Screen"
However switching those two lines to make them read more logically gives:
Screen "Primary Screen" Screen "Secondary Screen" LeftOf "Primary Screen"
So there we go, it works 🙂 I still have to decide on a resolution to run at (the Matrox card is sadly lacking in performance.