1. Monitors are expensive, but not old mono-sync monitors, so thats what I use. Mostly Hewlett Packard A1097C and similar.
2. The Matrox software do not have preconfigured screen modes for these monitors, so I had to define them myself.
3. It is impossible to adjust a screen mode on a screen that rolls and flickers because of wrong screen mode. One way to solve this is to adjust the screen mode on another multisync monitor, and switch cables to test if it works on the monosync. Another way to solve this, is to use the Matrox program to show the controls for screen adjustments on another monitor, or adjust the screen mode without adjusting any screen, but this only works some times.
4. Some of the better old monitors can accept standard screen modes, such as the Vesa 1280x1024 75 Hz. I use this when possible.
5. The primary monitor is a multisync. This monitor is always available because of that, so I use this screen to adjust the other unavailable screens. The chances of getting an usable multisync monitor when finding 6 cheap monitors, is quite high.
6. When one monitor is properly adjusted with a proper screen mode, that screen mode can be saved, and loaded onto another monitor. This is nice when the screen modes of that monitor can't be adjusted, but this only works some times.
7. The monitors on the top row use 1280x1024 while those on the bottom row use 1280x960. By sorting the monitors to what suits them best, more monitors can be used. It also helps to sort which output each monitor is connected to.
8. I opened some monitors to get to the adjustments inside, to adjust the monitor to the available screen mode.
As you can understand, the only reason I got this to work at all, was to use all of the above tricks. It was not easy.
su X -configure exit startxThe idea here is to initialise the cards by using the autoconfigure option in XFree86 v.4.2. That only takes 10 seconds. The "startx" takes some minutes.
Previously the startup process was much more messy and buggy, with 2 boots and 4 startx every time. It were thus:
1. "startx"
Machine hangs, and must be rebooted with "ctrl+Alt+Del".
Error: "(EE) MGA(3): No valid modes found"
2. "startx"
X stops.
Error:
"(EE) MGA(3): MGAValidateMode from HALlib found the mode to be invalid.
Error: b1901020
Fatal server error:
AddScreen/ScreenInit failed for driver 3"
3. "startx"
X stops.
Error:
"(WW) MGA(5): Failed to set up write-combining range (0xdb800000,0x800000)
(EE) MGA(5): MGAValidateMode from HALlib found the mode to be invalid.
Error: b1901020
Fatal server error:
AddScreen/ScreenInit failed for driver 5"
4. "startx"
And X finally starts, and works as it should, stable.
In order for Mesa to properly replace GLX, it has to be configured like this before it is compiled:
./configure --prefix=/usrAnother problem, is that Mesa has a fixed viewport of 2048x2048, which is too small for my almost 4000x2000 screen. To fix this, the constant MAX_WIDTH in Mesa/src/config.h was changed from 2048 to 4096 before compilation. This worked without any problems.
./configure -threadThis also lets Qt do threading, which is especially nice when having several processors, which the machine is going to have later.
# ********************************************************************** # Refer to the XF86Config(4/5) man page for details about the format of # this file. # ********************************************************************** Section "Files" RgbPath "/usr/X11R6/lib/X11/rgb" ModulePath "/usr/X11R6/lib/modules" FontPath "/usr/X11R6/lib/X11/fonts/misc/" FontPath "/usr/X11R6/lib/X11/fonts/Speedo/" FontPath "/usr/X11R6/lib/X11/fonts/Type1/" FontPath "/usr/X11R6/lib/X11/fonts/CID/" FontPath "/usr/X11R6/lib/X11/fonts/75dpi/" FontPath "/usr/X11R6/lib/X11/fonts/100dpi/" EndSection Section "ServerFlags" AllowMouseOpenFail EndSection Section "InputDevice" Identifier "Keyboard1" Driver "Keyboard" Option "AutoRepeat" "250 30" Option "XkbRules" "xfree86" Option "XkbModel" "pc105" Option "XkbLayout" "no" EndSection Section "InputDevice" Identifier "Mouse1" Driver "mouse" Option "Protocol" "PS/2" Option "Device" "/dev/psaux" Option "Emulate3Buttons" Option "Emulate3Timeout" "50" EndSection Section "Module" Load "glx" SubSection "extmod" Option "omit xfree86-dga" EndSubSection Load "type1" Load "freetype" EndSection Section "Monitor" Identifier "Generic|High Frequency SVGA, 1024x768 at 70 Hz" VendorName "Unknown" ModelName "Unknown" HorizSync 31.5-87.0 VertRefresh 74-76 EndSection Section "Monitor" Identifier "hp_A2094A" VendorName "Hewlett Packard" ModelName "A2094A" HorizSync 73.0-75.0 VertRefresh 70-72 Modeline "1280x1024" 123 1280 1336 1472 1648 1024 1024 1027 1051 EndSection Section "Monitor" Identifier "hp_A1097C" VendorName "Hewlett Packard" ModelName "A1097C" HorizSync 31.5 - 87.0 VertRefresh 50.0 - 90.0 ModeLine "hurk" 122 1280 1360 1504 1664 960 960 963 1023 ModeLine "hp1280x960" 122 1280 1360 1432 1664 960 960 963 1029 EndSection Section "Monitor" Identifier "qhp_A1097C" VendorName "Hewlett Packard" ModelName "A1097C" HorizSync 31.5 - 87.0 VertRefresh 50.0 - 90.0 ModeLine "hurk" 122 1280 1360 1504 1664 960 960 963 1023 ModeLine "hp1280x960" 121.570 1280 1360 1432 1664 960 960 963 1029 EndSection Section "Device" Identifier "Generic VGA" Driver "vga" EndSection Section "Device" Identifier "G450_1" VendorName "" BoardName "" Driver "mga" Option "MGASDRAM" "Yes" BusID "PCI:1:0:0" Screen 0 EndSection Section "Device" Identifier "G450_2" VendorName "" BoardName "" Driver "mga" Option "MGASDRAM" "Yes" BusID "PCI:1:0:0" Screen 1 EndSection Section "Device" Identifier "G450_3" VendorName "" BoardName "" Driver "mga" Option "MGASDRAM" "Yes" BusID "PCI:2:0:0" Screen 0 EndSection Section "Device" Identifier "G450_4" VendorName "" BoardName "" Driver "mga" Option "MGASDRAM" "Yes" BusID "PCI:2:0:0" Screen 1 EndSection Section "Device" Identifier "G450_5" VendorName "" BoardName "" Driver "mga" Option "MGASDRAM" "Yes" BusID "PCI:3:0:0" Screen 0 EndSection Section "Device" Identifier "G450_6" VendorName "" BoardName "" Driver "mga" Option "MGASDRAM" "Yes" BusID "PCI:3:0:0" Screen 1 EndSection Section "Screen" Identifier "screen1" Device "G450_1" # Monitor "hp_A2094A" Monitor "Generic|High Frequency SVGA, 1024x768 at 70 Hz" DefaultColorDepth 24 Subsection "Display" Depth 8 Modes "1280x1024" "1024x768" "800x600" "640x480" ViewPort 0 0 EndSubsection Subsection "Display" Depth 15 Modes "1280x1024" "1024x768" "800x600" "640x480" ViewPort 0 0 EndSubsection Subsection "Display" Depth 16 Modes "1280x1024" "1024x768" "800x600" "640x480" ViewPort 0 0 EndSubsection Subsection "Display" Depth 24 Modes "1280x1024" "1024x768" "800x600" "640x480" ViewPort 0 0 EndSubsection Subsection "Display" Depth 32 Modes "1280x1024" "1024x768" "800x600" "640x480" ViewPort 0 0 EndSubsection EndSection Section "Screen" Identifier "screen2" Device "G450_2" Monitor "hp_A2094A" # Monitor "Generic|High Frequency SVGA, 1024x768 at 70 Hz" DefaultColorDepth 24 Subsection "Display" Depth 8 Modes "1280x1024" "1024x768" "800x600" "640x480" ViewPort 0 0 EndSubsection Subsection "Display" Depth 15 Modes "1280x1024" "1024x768" "800x600" "640x480" ViewPort 0 0 EndSubsection Subsection "Display" Depth 16 Modes "1280x1024" "1024x768" "800x600" "640x480" ViewPort 0 0 EndSubsection Subsection "Display" Depth 24 Modes "1280x1024" "1024x768" "800x600" "640x480" ViewPort 0 0 EndSubsection Subsection "Display" Depth 32 Modes "1280x1024" "1024x768" "800x600" "640x480" ViewPort 0 0 EndSubsection EndSection Section "Screen" Identifier "screen3" Device "G450_3" Monitor "hp_A1097C" DefaultColorDepth 24 Subsection "Display" Depth 8 Modes "hp1280x960" ViewPort 0 0 EndSubsection Subsection "Display" Depth 15 Modes "hp1280x960" ViewPort 0 0 EndSubsection Subsection "Display" Depth 16 Modes "hp1280x960" ViewPort 0 0 EndSubsection Subsection "Display" Depth 24 Modes "hp1280x960" ViewPort 0 0 EndSubsection Subsection "Display" Depth 32 Modes "hp1280x960" ViewPort 0 0 EndSubsection EndSection Section "Screen" Identifier "screen4" Device "G450_4" # Monitor "hp_A2094A" Monitor "Generic|High Frequency SVGA, 1024x768 at 70 Hz" DefaultColorDepth 24 Subsection "Display" Depth 8 Modes "1280x1024" "1024x768" "800x600" "640x480" ViewPort 0 0 EndSubsection Subsection "Display" Depth 15 Modes "1280x1024" "1024x768" "800x600" "640x480" ViewPort 0 0 EndSubsection Subsection "Display" Depth 16 Modes "1280x1024" "1024x768" "800x600" "640x480" ViewPort 0 0 EndSubsection Subsection "Display" Depth 24 Modes "1280x1024" "1024x768" "800x600" "640x480" ViewPort 0 0 EndSubsection Subsection "Display" Depth 32 Modes "1280x1024" "1024x768" "800x600" "640x480" ViewPort 0 0 EndSubsection EndSection Section "Screen" Identifier "screen5" Device "G450_5" Monitor "qhp_A1097C" DefaultColorDepth 24 Subsection "Display" Depth 8 # Modes "hurk" Modes "hp1280x960" ViewPort 0 0 EndSubsection Subsection "Display" Depth 15 # Modes "hurk" Modes "hp1280x960" ViewPort 0 0 EndSubsection Subsection "Display" Depth 16 # Modes "hurk" Modes "hp1280x960" ViewPort 0 0 EndSubsection Subsection "Display" Depth 24 # Modes "hurk" Modes "hp1280x960" ViewPort 0 0 EndSubsection Subsection "Display" Depth 32 # Modes "hurk" Modes "hp1280x960" ViewPort 0 0 EndSubsection EndSection Section "Screen" Identifier "screen6" Device "G450_6" Monitor "hp_A1097C" # Monitor "qhp_A1097C" DefaultColorDepth 24 Subsection "Display" Depth 8 # Modes "hurk" Modes "hp1280x960" ViewPort 0 0 EndSubsection Subsection "Display" Depth 15 # Modes "hurk" Modes "hp1280x960" ViewPort 0 0 EndSubsection Subsection "Display" Depth 16 # Modes "hurk" Modes "hp1280x960" ViewPort 0 0 EndSubsection Subsection "Display" Depth 24 # Modes "hurk" Modes "hp1280x960" ViewPort 0 0 EndSubsection Subsection "Display" Depth 32 # Modes "hurk" Modes "hp1280x960" ViewPort 0 0 EndSubsection EndSection # 6 5 3 # 2 1 4 Section "ServerLayout" Identifier "layout1" Screen "screen1" Screen "screen2" LeftOf "screen1" Screen "screen3" Above "screen4" Screen "screen4" RightOf "screen1" Screen "screen5" Above "screen1" Screen "screen6" Above "screen2" Option "Xinerama" InputDevice "Mouse1" "CorePointer" InputDevice "Keyboard1" "CoreKeyboard" EndSection