Ubuntu 15.10 Quad Monitor xorg.conf configuration

At work I was tasked with setting up a NOC-esque monitoring wall, using an old desktop, two video cards and 4 monitors. I wiped the box and installed Ubuntu 15.10 on it, and immediately jumped into a world of hurt. First, here’s the final result.

$ cat /etc/X11/xorg.conf
# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings:  version 352.21  (buildd@lgw01-37)  Thu Jul 23 11:50:49 UTC 2015

# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig:  version 340.96  (buildmeister@swio-display-x86-rhel47-05)  Sun Nov  8 22:50:27 PST 2015

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0" 0 0
    Screen      1  "Screen1" below "Screen0"
    Screen      2  "Screen2" below "Screen1"
    Screen      3  "Screen3" below "Screen2"
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
    Option         "Xinerama" "1"
    Option         "StandbyTime" "0"
    Option         "SuspendTime" "0"
    Option         "OffTime" "0"    
    Option         "BlankTime" "0"
EndSection

Section "Files"
EndSection

Section "InputDevice"

    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/psaux"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"

    # generated from default
    Identifier     "Keyboard0"
    Driver         "kbd"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "Philips 200P"
    HorizSync       30.0 - 97.0
    VertRefresh     56.0 - 85.0
    Option         "DPMS" "false"
EndSection

Section "Monitor"
    Identifier     "Monitor1"
    VendorName     "Unknown"
    ModelName      "Philips 200P"
    HorizSync       30.0 - 97.0
    VertRefresh     56.0 - 85.0
    Option         "DPMS" "false"
EndSection

Section "Monitor"
    Identifier     "Monitor2"
    VendorName     "Unknown"
    ModelName      "Philips 200P"
    HorizSync       30.0 - 97.0
    VertRefresh     56.0 - 85.0
    Option         "DPMS" "false"
EndSection

Section "Monitor"
    Identifier     "Monitor3"
    VendorName     "Unknown"
    ModelName      "Philips 200P"
    HorizSync       30.0 - 97.0
    VertRefresh     56.0 - 85.0
    Option         "DPMS" "false"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "Quadro NVS 290"
    BusID          "PCI:1:0:0"
    Screen         0
EndSection

Section "Device"
    Identifier     "Device1"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "Quadro NVS 290"
    BusID          "PCI:1:0:0"
    Screen         1
EndSection

Section "Device"
    Identifier     "Device2"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "Quadro NVS 290"
    BusID          "PCI:2:0:0"
    Screen         0
EndSection

Section "Device"
    Identifier     "Device3"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "Quadro NVS 290"
    BusID          "PCI:2:0:0"
    Screen         1
EndSection

Section "Screen"

    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "Stereo" "0"
    Option         "nvidiaXineramaInfoOrder" "CRT-0"
    Option         "metamodes" "DVI-I-0: nvidia-auto-select +0+0"
    Option         "SLI" "Off"
    Option         "MultiGPU" "Off"
    Option         "BaseMosaic" "off"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Section "Screen"

    Identifier     "Screen1"
    Device         "Device1"
    Monitor        "Monitor1"
    DefaultDepth    24
    Option         "Stereo" "0"
    Option         "nvidiaXineramaInfoOrder" "CRT-1"
    Option         "metamodes" "DVI-I-1: nvidia-auto-select +0+0"
    Option         "SLI" "Off"
    Option         "MultiGPU" "Off"
    Option         "BaseMosaic" "off"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Section "Screen"

    Identifier     "Screen2"
    Device         "Device2"
    Monitor        "Monitor2"
    DefaultDepth    24
    Option         "Stereo" "0"
    Option         "nvidiaXineramaInfoOrder" "CRT-0"
    Option         "metamodes" "DVI-I-0: nvidia-auto-select +0+0"
    Option         "SLI" "Off"
    Option         "MultiGPU" "Off"
    Option         "BaseMosaic" "off"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Section "Screen"

    Identifier     "Screen3"
    Device         "Device3"
    Monitor        "Monitor3"
    DefaultDepth    24
    Option         "Stereo" "0"
    Option         "nvidiaXineramaInfoOrder" "CRT-1"
    Option         "metamodes" "DVI-I-1: nvidia-auto-select +0+0"
    Option         "SLI" "Off"
    Option         "MultiGPU" "Off"
    Option         "BaseMosaic" "off"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

So, that’s what I got. Exciting, right? I hit a bunch of snags while trying to get 4 monitors working, so I figured I would share my findings.

  • The open-source nouveau driver could not keep up with all 4 monitors, so I had to install the nvidia drivers. I installed the nvidia-352 package (apt-get install nvidia-352) and things seem to be working fine.
  • Unity doesn’t seem to play nice on the video card, so installing Gnome 3 was a necessity. (apt-get install gnome-desktop-environment)
  • The nvidia-settings tool and twinview proved difficult, so I used 4 xscreens and xinerama.
  • So, there’s not a lot of documentation on getting 4 monitors working in Xinerama in xorg.conf, most multi-monitor setups are 2, or at most 3. To support 4 monitors on 2 video cards, I had to duplicate the devices and give them unique “Screen” identifiers. BUT NOTE! Each device starts at Screen 0, it’s not a global setting.
  • On the flip side, in ServerLayout, the Screen fields are numbered from 0-3 when setting position. These don’t directly map to the previously defined Screen fields. (I was confused for a few hours on this point!)
  • Disabling the screensaver and the power settings/standby timer did nothing for stopping the screen timeout, so I had to configure the monitors to not report timeouts. Each Monitor has the DPMS option set to false, and the ServerLayout has a bunch of settings to disable all kinds of timeouts.

After a few days of trial-and-error (and ssh-ing in to reset xorg.conf) I was able to get a quad-monitor, always-on info center working in the office.

IMG_20160222_134821

Advertisements
Ubuntu 15.10 Quad Monitor xorg.conf configuration

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s