[PLUG] Matrox G450 MMS / XFree86 / Multihead / Linux
Paul Heinlein
heinlein at attbi.com
Tue Jan 21 10:47:02 UTC 2003
Sorry for this message's odd Subject header, but I wanted lots of nice
keywords: this is a little success story posted mostly for the benefit
of Google trolls. :-)
One of our new faculty out at OGI spec-ed himself a nice new desktop
machine shortly after he arrived last fall:
* P4
* gobs of RAM
* three LCD displays capable of 1600x1200
* dual boot Linux and Windows XP
Finances end up limiting his monitors to 1280x1024. Otherwise, the
machine we got was pretty close:
* Dell OptiPlex: P4, 1GB RAM
* Matrox G450 MMS PCI card (capable of driving 4 displays)
* 3 Planar CT1904N 19" LCD displays.
According to our Windows admins, the Matrox developers did a great job
with the XP drivers, which automagically discovered all the monitors
and set them to their best resolution.
The XFree86 configuration -- my job -- was more complicated, but
ultimately just as successful. Three screens of GNOME is pretty!
I've included the entire XF86Config file below, but here's the short
recipe:
1. Make sure the middle of the three displays is attached to the
first Matrox PCI device. In our case, the Matrox showed up as four
PCI devices: 2:0:0, 2:4:0, 2:8:0, 2:12:0. So we made sure that
2:0:0 was attached to the middle monitory.
2. Install Matrox' enhanced XFree86 driver set:
ftp://ftp.matrox.com/pub/mga/archive/linux/2002/mgadrivers-2.0-src.tgz
New drivers as supposedly due Real Soon Now that will eliminate
many of the configuration hacks I needed, but these year-old
drivers are the best you can get right now.
3. Tell XF86Config about the monitors. Since all three are identical,
I only needed one Monitor section:
Section "Monitor"
Identifier "Planar FCT1904N"
VendorName "Planar"
ModelName "FCT1904N"
HorizSync 30 - 64
VertRefresh 56 - 60
Option "dpms"
EndSection
4. Tell XF86Config about the Matrox devices. I needed four Sections,
one per onboard device:
Section "Device"
Identifier "Matrox G450 MMS 1" # increment as necessary
Driver "mga"
VendorName "Matrox"
BoardName "G45 MMS"
BusID "PCI:2:0:0" # increment as necessary
VideoRam 16384
Option "MGASDRAM"
EndSection
Usually, the VideoRam directive is redundant, but in our case we
needed it because otherwise X would think that only the first
physical device had enough memory to run at 1280x1024.
5. Define a Screen for each Matrox/Planar combo. This ended up being a
bit wacky since the monitors and Matrox devices aren't in sync
number-wise so that the middle screen is the first device. Other
than than, it was pretty straightforward:
Section "Screen"
Identifier "Screen1" # increment as necessary
Device "Matrox G450 MMS 2" # assign as necessary
Monitor "Planar FCT1904N"
DefaultDepth 16
SubSection "Display"
Depth 16
Modes "1280x1024" "1024x768" "800x600" "640x480"
EndSubSection
EndSection
6. Define a three-screen layout:
Section "ServerLayout"
Identifier "Three-screen layout"
Screen "Screen1" Leftof "Screen2"
Screen "Screen2" Leftof "Screen3"
Screen "Screen3"
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Voila: a 3840x1024 desktop!
The only enduring problem is that I can't get the machine to go from X
mode to console mode. The displays hang, though everything else remain
operational. Thankfully, it's not much of a problem, we the machine
boots by default into runlevel 5, and X has no trouble allowing
logout/login sequences. Wierd, though.
Oh, and if you're running only two monitors, the Matrox PowerDesk
software looks like it could do a good job of configuring XFree86, but
it's incapable of dealing with more than two monitors:
http://www.matrox.com/mga/support/drivers/files/lnx_200.cfm
--Paul Heinlein <heinlein at attbi.com>
Section "Files"
RgbPath "/usr/X11R6/lib/X11/rgb"
FontPath "unix/:7100"
EndSection
Section "Module"
Load "dbe"
Load "extmod"
Load "dri"
Load "glx"
Load "record"
Load "freetype"
Load "type1"
EndSection
Section "ServerFlags"
Option "Xinerama" "true"
EndSection
Section "InputDevice"
#Option "XkbOptions" "ctrl:swapcaps"
Identifier "Keyboard0"
Driver "keyboard"
Option "XkbRules" "xfree86"
Option "XkbModel" "pc105"
Option "XkbLayout" "us"
EndSection
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Device" "/dev/mouse"
Option "Protocol" "IMPS/2"
Option "Emulate3Buttons" "no"
Option "ZAxisMapping" "4 5"
EndSection
Section "InputDevice"
Identifier "Mouse1"
Driver "mouse"
Option "Device" "/dev/input/mice"
Option "Protocol" "IMPS/2"
Option "Emulate3Buttons" "no"
Option "ZAxisMapping" "4 5"
EndSection
Section "Monitor"
Identifier "Planar FCT1904N"
VendorName "Planar"
ModelName "FCT1904N"
HorizSync 30 - 64
VertRefresh 56 - 60
Option "dpms"
EndSection
Section "Device"
Identifier "Matrox G450 MMS 1"
Driver "mga"
VendorName "Matrox"
BoardName "G45 MMS"
BusID "PCI:2:0:0"
VideoRam 16384
Option "MGASDRAM"
EndSection
Section "Device"
Identifier "Matrox G450 MMS 2"
Driver "mga"
VendorName "Matrox"
BoardName "G45 MMS"
BusID "PCI:2:4:0"
VideoRam 16384
Option "MGASDRAM"
EndSection
Section "Device"
Identifier "Matrox G450 MMS 3"
Driver "mga"
VendorName "Matrox"
BoardName "G45 MMS"
BusID "PCI:2:8:0"
VideoRam 16384
Option "MGASDRAM"
EndSection
Section "Device"
Identifier "Matrox G450 MMS 4"
Driver "mga"
VendorName "Matrox"
BoardName "G45 MMS"
BusID "PCI:2:12:0"
VideoRam 16384
Option "MGASDRAM"
EndSection
Section "Screen"
Identifier "Screen1"
Device "Matrox G450 MMS 2"
Monitor "Planar FCT1904N"
DefaultDepth 16
SubSection "Display"
Depth 16
Modes "1280x1024" "1024x768" "800x600" "640x480"
EndSubSection
EndSection
Section "Screen"
Identifier "Screen2"
Device "Matrox G450 MMS 1"
Monitor "Planar FCT1904N"
DefaultDepth 16
SubSection "Display"
Depth 16
Modes "1280x1024" "1024x768" "800x600" "640x480"
EndSubSection
EndSection
Section "Screen"
Identifier "Screen3"
Device "Matrox G450 MMS 3"
Monitor "Planar FCT1904N"
DefaultDepth 16
SubSection "Display"
Depth 16
Modes "1280x1024" "1024x768" "800x600" "640x480"
EndSubSection
EndSection
Section "ServerLayout"
Identifier "Three-screen layout"
Screen "Screen1" Leftof "Screen2"
Screen "Screen2" Leftof "Screen3"
Screen "Screen3"
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section "DRI"
Mode 0666
EndSection
More information about the PLUG
mailing list