[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