Fedora 14 Quad Monitor Configuration (and issues)

Need (or want) a single desktop using dual graphic cards and 4 displays?

Here’s what I found upgrading to Fedora 14  from Fedora 11:

First of all,  I had to perform a fresh install since there is no direct upgrade path from Fedora 11 to Fedora14.   WATCH OUT!   Half my disk was partitioned (by default) for root (/), and the other half for /home.   Since my disk is relatively small, I ran out of space setting up users in /home (boo, hiss).  After a few hours trying to resize the file systems and partitions, I gave up, and did a second full re-install, but not before deleting the /home partition.

Next, the system wouldn’t come all the way up (even to run-level 3); it would just hang.   Using the rescue DVD to change the initial run-level in /etc/inittab to 1, I finally saw that the kernel was krashing when enabling IPV6.    So I added NETWORKING_IPV6=no to the /etc/sysconfig/network file, and created a file named blacklist-ipv6.conf to the directory /etc/modprobe.d, containing the lines:

install ipv6 /bin/true
blacklist ipv6

I was finally able to boot completely.   The first install involved several hang-ups as well, but it started working (for reasons unknown).

Next, the swap partition wouldn’t mount at boot, or even later with swapon -av due to memory allocation problems.   After a couple of hours of mucking around, I added vmalloc=256MB to the end of the kernel line in /etc/grub.conf, and suddenly swap was mountable.    See the “Kernel virtual address space exhaustion on the X86 platform” section of Chapter 9 “Known Issues” in the Nvidia driver README.

As a side-note, using the Fedora Nouveau drivers are not an option, since they don’t support hardware acceleration and don’t support 4 displays as a single, unified desktop (I read rumours of folks getting Nouveau to support two graphics cards, but only as 4 separate desktops).   So,  Obi-Wan Kenobi, the Nvidia drivers are our only hope.

After grabbing the latest Nvidia driver (x86-270.29), installing it, configuring  /etc/xorg.conf for quad displays (configuration below), things seemed to be running well.   But then during the “shakedown”, flash seg-faulted.   Un-installing nspluginwrapper made no difference.   Even trying the open-source flash player “Gnash” didn’t work (“Too many attempts to read from the player!“).    After a few hours of trying things and many reboots, it came down to the use of the Xlib Xinerama extension in the configuration (more issues later).

The only way to make quad monitor support with two graphics card work (nicely) is with a combination of TwinView (left/right) and Xinerama (top/bottom).  However, when using Xinerama and the current (Nividia) drivers, flash support is broken in all the browsers I tried (Firefox, Seamonkey, Opera).

At this point, trying to get new drivers from Nivida while Xinerama is enabled is problematic since flash doesn’t work, and the Nvidia site is all flash-based (sigh). So, plug: ftp://download.nvidia.com/XFree86/Linux-x86/ (or x86_64)
into your browser to get driver access.

Trying the drivers for FC13, the last release, an undefined Symbol miEmptyData in nvidia_drv.so (found in Xorg.*.log) keeps the drivers from loading, so they are “right-out”

Trying the latest legacy drivers NVIDIA-Linux-x86-96.43.19-pkg1.run, and NVIDIA-Linux-x86-173.14.28-pkg1.run, both allow flash to work, with 173.14.28 performing the best.   The downside being, there’s no CUDA support for the GTX 260 in order to get flash to run (sigh).

Currently, using Xinerama has a couple of other downsides; there is no Xlib RANDR (display manipulation) extension support, so some programs like the scanner driver “xsane” crash, since it (apparently) blindly assumes the extension is available.   I have found  the program gscan2pd works very well for me (much better for monochrome PDF generation).  In addition, the Xlib Composite extension is not available, so the Compiz desktop effects can’t be used 🙁  In addition, I have to log-in twice to get the second graphics card activated.  Dropping back to dual-monitor (single graphics card) support (no Xinerama, just TwinView), everything works fine on the newest drivers.

With all that said, you’ll have to decide if the trade-offs are worth it for you.     I’ve heard some scuttlebutt (since 2008) that the Xinerama extension may be deprecated,  so the future of quad-displays may be in-doubt with Nvidia.    But, in the mean time, they are very cool!

Here’s the /etc/X11/xorg.conf for 4-head display:

#
# xorg.conf-3840x2400_quadhead-2x2-xinerama-twinview+twinview
# (C) Bill Bishop, all rights reserved, but free-use granted.
#
# Update the Monitor and Device sections to reflect your configuration.
# You probably want to delete the GTX 260 device section too (unless you
# have one)
#

Section "ServerLayout"
        Identifier   "Layout0"
        InputDevice  "Keyboard0" "CoreKeyboard"
        InputDevice  "Mouse0"    "CorePointer"
        Option       "Clone"     "off"
        Option       "Xinerama"  "on"
        Screen       0           "Screen0"
        Screen       1           "Screen1" Below "Screen0"
EndSection

Section "Files"
#	RgbPath      "/usr/X11R6/lib/X11/rgb"
	FontPath     "unix/:7100"
EndSection

Section "Module"
	Load         "dbe"
	Load         "extmod"
	Load         "glx"
	Load         "freetype"
	Load         "type1"
EndSection

Section "InputDevice"
	Identifier   "Keyboard0"
	Driver       "kbd"
	Option	     "XkbModel" "pc105"
	Option	     "XkbLayout" "us"
#	Option	     "XkbVariant" "nodeadkeys"
EndSection

Section "InputDevice"
	Identifier   "Mouse0"
	Driver       "mouse"
	Option	     "Protocol" "IMPS/2"
	Option	     "Device" "/dev/input/mice"
	Option	     "ZAxisMapping" "4 5"
	Option	     "Emulate3Buttons" "no"
EndSection

Section "Monitor"
	Identifier   "Monitor0"
	VendorName   "Dell"
	ModelName    "2407WFP"
	HorizSync    30.0 - 81.0
	VertRefresh  56.0 - 76.0
	Option       "IgnoreEDID" "true"
EndSection

Section "Monitor"
	Identifier   "Monitor2"
	VendorName   "Dell"
	ModelName    "2407WFP"
	HorizSync    30.0 - 81.0
	VertRefresh  56.0 - 76.0
	Option       "IgnoreEDID" "true"
EndSection

Section "Device"
	Identifier   "Videocard0-Output0+1"
	Driver       "nvidia"
	VendorName   "Nvidia"
	BoardName    "NVIDIA GeForce 7600GT"
	BusID        "1:0:0"
        Option       "CursorShadow" "1"
	Option       "NoLogo" "1"
	Option       "Coolbits" "1"
	#Option       "IgnoreDisplayDevices" "crt,tv"
	Option       "ConnectedMonitor" "DFP,DFP"
	Option       "TwinView" "true"
	Option	     "TwinViewOrientation" "RightOf"
	Option       "MetaModes" "1920x1200,1920x1200"
	Option       "SecondMonitorHorizSync" "30-81"
	Option       "SecondMonitorVertRefresh" "56-76"
EndSection

Section "Device"
	Identifier   "Videocard1-Output0+1"
	Driver       "nvidia"
	VendorName   "Nvidia"
	BoardName    "NVIDIA GeForce 7600 GT"
	BusID        "10:00:0"
        Option       "CursorShadow" "1"
	Option       "NoLogo" "1"
	Option       "Coolbits" "1"
        #Option       "IgnoreDisplayDevices" "crt,tv"
	Option       "ConnectedMonitor" "DFP,DFP"
	Option       "TwinView" "true"
	Option	     "TwinViewOrientation" "RightOf"
	Option       "MetaModes" "1920x1200,1920x1200"
	Option       "SecondMonitorHorizSync" "30-81"
	Option       "SecondMonitorVertRefresh" "56-76"
EndSection

Section "Device"
	Identifier   "Videocard2-CUDA"
	Driver       "nvidia"
	VendorName   "Nvidia XFX"
	BoardName    "NVIDIA GTX 260"
	BusID        "5:00:0"
EndSection

Section "Screen"
	Identifier   "Screen0"
	Device       "Videocard0-Output0+1"
	Monitor      "Monitor0"
	DefaultDepth 24
	SubSection "Display"
		Viewport  0 0
		Depth     24
		Modes     "1920x1200"
	EndSubSection
EndSection

Section "Screen"
	Identifier   "Screen1"
	Device       "Videocard1-Output0+1"
	Monitor      "Monitor2"
	DefaultDepth 24
	SubSection "Display"
		Viewport  0 0
		Depth     24
		Modes     "1920x1200"
	EndSubSection
EndSection
This entry was posted in Computers. Bookmark the permalink.

3 Responses to Fedora 14 Quad Monitor Configuration (and issues)

  1. Brett says:

    Thanks for the guide. Did you notice any speed problems when using xinerama in your configuration?

  2. Bill says:

    Hi Brett,

    Not with Xinerama + twinview, but I did with with Xinerama + dualview.
    OpenGL & general window operations don’t appear sluggish at-all across all four displays.

    As mentioned, a bit of functionality is lost with Xinerama, but that’s all I’ve experienced in heavy use for over a month. If you (or an automatic service) updated your kernel or drivers, you may need to rebuild/re-install the Nvidia drivers. Run “glxgears” to see if you have lost OpenGL functionality (it happened to me), but a simple rebuild of the Nvidia driver fixed it.

    Hope that helps,

    ->Bill

  3. Orthox says:

    I’d fought with and used quad monitors for ages (since Fedora ~9). I currently have 4x 22″ widescreen monitors (turned on their side) giving me a resolution of 4200x1680px. Its one unified desktop (thanks to Xinerama, but no Twinview), flash and 3d works (nvidia proprietary drivers) although for some reason some 3d apps are broken. Rotating the displays by 90% resuts in vertical screen tearing with video at times (apparently while rotating 90deg you can use vsync), although the system is capable of playing 4k video files which is pretty sweet (Nvidia 98xx cards). In case anyone’s interested here’s my xorg.conf (there’s a bit of cruft and non used params, but i ain’t touching it cause it works as-is):

    Section "ServerLayout"

    # Removed Option "Xinerama" "on"
    Identifier "X.org Configured"
    Screen 0 "Screen0" 0 0
    Screen 1 "Screen1" 3150 0
    Screen 2 "Screen2" 2100 0
    Screen 3 "Screen3" 1050 0
    InputDevice "Keyboard0" "CoreKeyboard"
    InputDevice "Mouse0" "CorePointer"
    Option "Xinerama" "1"
    Option "Clone" "off"
    EndSection

    Section "Files"
    ModulePath "/usr/lib64/xorg/modules/extensions/nvidia"
    ModulePath "/usr/lib64/xorg/modules"
    EndSection

    Section "ServerFlags"
    Option "AIGLX" "on"
    EndSection

    Section "InputDevice"

    # generated from data in "/etc/sysconfig/keyboard"
    Identifier "Keyboard0"
    Driver "kbd"
    Option "XkbLayout" "us"
    Option "XkbModel" "pc105"
    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 "Monitor"
    Identifier "Monitor0"
    VendorName "Unknown"
    ModelName "Samsung SyncMaster"
    HorizSync 30.0 - 81.0
    VertRefresh 56.0 - 75.0
    Option "DPMS"
    Option "Rotate" "left"
    EndSection

    Section "Monitor"
    Identifier "Monitor1"
    VendorName "Unknown"
    ModelName "Samsung SyncMaster"
    HorizSync 30.0 - 81.0
    VertRefresh 56.0 - 75.0
    Option "DPMS"
    Option "RightOf" "Monitor0"
    Option "Rotate" "left"
    EndSection

    Section "Monitor"
    Identifier "Monitor2"
    VendorName "Unknown"
    ModelName "Samsung SyncMaster"
    HorizSync 30.0 - 81.0
    VertRefresh 56.0 - 75.0
    Option "DPMS"
    Option "Rotate" "left"
    EndSection

    Section "Monitor"
    Identifier "Monitor3"
    VendorName "Unknown"
    ModelName "Samsung SyncMaster"
    HorizSync 30.0 - 81.0
    VertRefresh 56.0 - 75.0
    Option "DPMS"
    Option "RightOf" "Monitor2"
    Option "Rotate" "left"
    EndSection

    Section "Device"

    # Option "SLI" "false"
    Identifier "Device0"
    Driver "nvidia"
    VendorName "NVIDIA Corporation"
    BoardName "GeForce 9800 GT"
    Option "AddARGBGLXVisuals" "True"
    BusID "PCI:1:0:0"
    Option "UseEvents" "true"
    Option "RenderAccel" "true"
    Option "EnablePageFlip" "true"
    Option "XAANoOffscreenPixmaps" "true"
    #Option "AccelMethod" "EXA"
    EndSection

    Section "Device"

    # Option "SLI" "false"
    Identifier "Device1"
    Driver "nvidia"
    VendorName "NVIDIA Corporation"
    BoardName "GeForce 9800 GT"
    Option "AddARGBGLXVisuals" "True"
    BusID "PCI:2:0:0"
    Option "UseEvents" "true"
    Option "RenderAccel" "true"
    Option "EnablePageFlip" "true"
    Option "XAANoOffscreenPixmaps" "true"
    #Option "AccelMethod" "EXA"
    EndSection

    Section "Device"

    # Option "SLI" "false"
    Identifier "Device2"
    Driver "nvidia"
    VendorName "NVIDIA Corporation"
    BoardName "GeForce 9800 GT"
    Option "AddARGBGLXVisuals" "True"
    BusID "PCI:2:0:0"
    Screen 1
    Option "UseEvents" "true"
    Option "RenderAccel" "true"
    Option "EnablePageFlip" "true"
    Option "XAANoOffscreenPixmaps" "true"
    #Option "AccelMethod" "EXA"
    EndSection

    Section "Device"

    # Option "SLI" "false"
    Identifier "Device3"
    Driver "nvidia"
    VendorName "NVIDIA Corporation"
    BoardName "GeForce 9800 GT"
    Option "AddARGBGLXVisuals" "True"
    BusID "PCI:1:0:0"
    Screen 1
    Option "UseEvents" "true"
    Option "RenderAccel" "true"
    Option "EnablePageFlip" "true"
    Option "XAANoOffscreenPixmaps" "true"
    #Option "AccelMethod" "EXA"
    EndSection

    Section "Screen"
    Identifier "Screen0"
    Device "Device0"
    Monitor "Monitor0"
    DefaultDepth 24
    Option "RandRRotation" "True"
    Option "AddARGBGLXVisuals" "True"
    Option "AllowDDCCI" "True"
    Option "Composite" "Enable"
    Option "Coolbits" "1"
    Option "NoLogo" "True"
    Option "RenderAccel" "True"
    Option "ConstantDPI" "True"
    Option "Overlay" "True"
    Option "OverlayDefaultVisual" "True"
    Option "DynamicTwinView" "True"
    Option "XvmcUsesTextures" "True"
    Option "HWCursor" "true"
    Option "TwinView" "0"
    Option "metamodes" "DFP-0: nvidia-auto-select +0+0"
    SubSection "Display"
    Depth 24
    EndSubSection
    EndSection

    Section "Screen"
    Identifier "Screen1"
    Device "Device1"
    Monitor "Monitor1"
    DefaultDepth 24
    Option "RandRRotation" "True"
    Option "AddARGBGLXVisuals" "True"
    Option "AllowDDCCI" "True"
    Option "Composite" "Enable"
    Option "Coolbits" "1"
    Option "NoLogo" "True"
    Option "RenderAccel" "True"
    Option "ConstantDPI" "True"
    Option "Overlay" "True"
    Option "OverlayDefaultVisual" "True"
    Option "DynamicTwinView" "True"
    Option "XvmcUsesTextures" "True"
    Option "TwinView" "0"
    Option "metamodes" "DFP-1: nvidia-auto-select +0+0"
    SubSection "Display"
    Depth 24
    EndSubSection
    EndSection

    Section "Screen"

    # Removed Option "metamodes" "DFP-1: nvidia-auto-select +0+0"
    Identifier "Screen2"
    Device "Device2"
    Monitor "Monitor2"
    DefaultDepth 24
    Option "RandRRotation" "True"
    Option "AddARGBGLXVisuals" "True"
    Option "AllowDDCCI" "True"
    Option "Composite" "Enable"
    Option "Coolbits" "1"
    Option "NoLogo" "True"
    Option "RenderAccel" "True"
    Option "ConstantDPI" "True"
    Option "Overlay" "True"
    Option "OverlayDefaultVisual" "True"
    Option "DynamicTwinView" "True"
    Option "XvmcUsesTextures" "True"
    Option "TwinView" "0"
    Option "metamodes" "DFP-0: nvidia-auto-select +0+0"
    SubSection "Display"
    Depth 24
    EndSubSection
    EndSection

    Section "Screen"

    # Removed Option "metamodes" "DFP-0: nvidia-auto-select +0+0"
    Identifier "Screen3"
    Device "Device3"
    Monitor "Monitor3"
    DefaultDepth 24
    Option "RandRRotation" "True"
    Option "AddARGBGLXVisuals" "True"
    Option "AllowDDCCI" "True"
    Option "Composite" "Enable"
    Option "Coolbits" "1"
    Option "NoLogo" "True"
    Option "RenderAccel" "True"
    Option "ConstantDPI" "True"
    Option "Overlay" "True"
    Option "OverlayDefaultVisual" "True"
    Option "DynamicTwinView" "True"
    Option "XvmcUsesTextures" "True"
    Option "TwinView" "0"
    Option "metamodes" "DFP-1: nvidia-auto-select +0+0"
    SubSection "Display"
    Depth 24
    EndSubSection
    EndSection

    Section "Extensions"
    Option "Composite" "Enable"
    EndSection

Leave a Reply

Your email address will not be published. Required fields are marked *