Quad Monitor Setup

2014-05-20
linux, hardware, nvidia, xmonad

I got my two QNIX QX2710 LED Evolution II SE Matte 27" 2560x1440 Samsung PLS WQHD monitors and incorporated them into my existing dual Acer X222W 22" 1680x1050 setup. I put the two QNIXes in the middle, and put the Acers on the left and right edges. All four are in “portrait” orientation, because I primarily code on my computer. A single Gigabyte GeForce GTX 750 Ti OC 2GB GDDR5 2DVI/2HDMI card powers all four monitors; the QNIXes use the DVI ports, while the Acers use the HDMI ports via two HDMI-to-DVI(female) adapters. I bought this card because of the simplicity of the four ports — just DVI and HDMI.

As for the stands, I just bought another dual monitor stand and put it next to my existing dual monitor stand; each stand holds a QNIX and an Acer on each arm. The fact that the stands are subject to differently weighted monitors (27" monitor on one arm and a 22" on another) does not really affect them negatively. The desk in the image below is 140mm wide, in case you want to have a sense of how tight two dual-monitor stands would fit on your own desk.

Quad monitor setup

Using four monitors sounds difficult, but it’s a breeze with Xinerama and Xmonad. The hardest part was figuring out the correct xorg.conf configuration file. It was difficult because the QNIX monitors, being cheap, do not work out of the box, because the latest Nvidia driver (version 337.12) does not detect the correct resolution. What’s worse, the QNIXes do not support anything other than their native 2560x1440 resolution, so you’ll get blank screens if you try to just use these monitors without tweaking some xorg.conf settings. I actually ended up googling to find the correct Modeline value for xorg.conf for my QNIX, at 96hz refresh rate.1 You could try using the cvt program included with xorg-server, but when I tried it out on my own it generated different numbers and my QNIXes couldn’t handle those numbers.

Here is my xorg.conf:

# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings:  version 337.12  (buildmeister@swio-display-x64-rhel04-11)  Fri Apr  4 15:17:43 PDT 2014

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Qnix1" 2490 0
    Screen      1  "Acer1" 3930 300
    Screen      2  "Acer2" 0 300
    Screen      3  "Qnix2" 1050 0
    Option         "Xinerama" "1"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "QNIX"
    ModelName      "QX2710"
    DisplaySize     597    336
    HorizSync       88.8 - 160.0
    VertRefresh     59.5 - 120.0
    ModeLine       "2560x1440"          241.50 2560 2608 2640 2720 1440 1443 1448 1481 +hsync -vsync
    ModeLine       "2560x1440_60"       312.25 2560 2752 3024 3488 1440 1443 1448 1493 -hsync +vsync
    ModeLine       "2560x1440_75"       397.25 2560 2760 3040 3520 1440 1443 1448 1506 -hsync +vsync
    ModeLine       "2560x1440_85"       454.75 2560 2768 3048 3536 1440 1443 1448 1514 -hsync +vsync
    ModeLine       "2560x1440_96"       400.00 2560 2608 2640 2744 1440 1443 1448 1512 +hsync +vsync
    Option         "DPMS"
EndSection

Section "Monitor"
    Identifier     "Monitor1"
    VendorName     "Unknown"
    ModelName      "Acer X222W"
    HorizSync       31.0 - 81.0
    VertRefresh     56.0 - 75.0
    # Generated via "cvt 1680 1050" with the Acer monitor plugged in; `cvt` is
    # part of xorg-server 1.15.1-1 package on Arch Linux
    ModeLine "1680x1050_60.00"  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync
    Option         "DPMS"
EndSection

Section "Monitor"
    Identifier     "Monitor2"
    VendorName     "Unknown"
    ModelName      "Acer X222W"
    HorizSync       31.0 - 81.0
    VertRefresh     56.0 - 75.0
    ModeLine "1680x1050_60.00"  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync
    Option         "DPMS"
EndSection

Section "Monitor"
    Identifier     "Monitor3"
    VendorName     "QNIX"
    ModelName      "QX2710"
    DisplaySize     597    336
    HorizSync       88.8 - 160.0
    VertRefresh     59.5 - 120.0
    ModeLine       "2560x1440"          241.50 2560 2608 2640 2720 1440 1443 1448 1481 +hsync -vsync
    ModeLine       "2560x1440_60"       312.25 2560 2752 3024 3488 1440 1443 1448 1493 -hsync +vsync
    ModeLine       "2560x1440_75"       397.25 2560 2760 3040 3520 1440 1443 1448 1506 -hsync +vsync
    ModeLine       "2560x1440_85"       454.75 2560 2768 3048 3536 1440 1443 1448 1514 -hsync +vsync
    ModeLine       "2560x1440_96"       400.00 2560 2608 2640 2744 1440 1443 1448 1512 +hsync +vsync
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "DVI-port-top"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GTX 750 Ti"
    BusID          "PCI:2:0:0"
    Screen          0
    Option         "UseEdidDpi" "False"
    Option         "DPI" "108 x 108"
    Option         "NoLogo" "1"
EndSection

Section "Device"
    Identifier     "HDMI-port-right"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GTX 750 Ti"
    BusID          "PCI:2:0:0"
    Option         "UseEdidDpi" "False"
    Option         "DPI" "90 x 90"
    Option         "NoLogo" "1"
    Screen          1
EndSection

Section "Device"
    Identifier     "HDMI-port-left"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GTX 750 Ti"
    BusID          "PCI:2:0:0"
    Option         "UseEdidDpi" "False"
    Option         "DPI" "90 x 90"
    Option         "NoLogo" "1"
    Screen          2
EndSection

Section "Device"
    Identifier     "DVI-port-bottom"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GTX 750 Ti"
    BusID          "PCI:2:0:0"
    Option         "UseEdidDpi" "False"
    Option         "DPI" "108 x 108"
    Option         "NoLogo" "1"
    Screen          3
EndSection

Section "Screen"
    Identifier     "Qnix1"
    Device         "DVI-port-top"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "UseEDID" "False"
    Option         "UseEDIDDPI" "False"
    Option         "UseEDIDFreqs" "False"
    Option         "ExactModeTimingsDVI" "True"
    Option         "ModeValidation" "AllowNonEdidModes, NoVertRefreshCheck, NoHorizSyncCheck, NoMaxSizeCheck, NoMaxPClkCheck, NoEDIDModes"
    Option         "NoBandWidthTest" "true"
    Option         "metamodes" "DVI-I-1: 2560x1440_96 +0+0 {rotation=left}"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Section "Screen"
    Identifier     "Acer1"
    Device         "HDMI-port-right"
    Monitor        "Monitor1"
    DefaultDepth    24
    Option         "UseEDID" "False"
    Option         "UseEDIDDPI" "False"
    Option         "UseEDIDFreqs" "False"
    Option         "ExactModeTimingsDVI" "True"
    Option         "ModeValidation" "AllowNonEdidModes, NoVertRefreshCheck, NoHorizSyncCheck, NoMaxSizeCheck, NoMaxPClkCheck, NoEDIDModes"
    Option         "NoBandWidthTest" "true"
    Option         "metamodes" "HDMI-0: 1680x1050_60.00 +0+0 {rotation=right}"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Section "Screen"
    Identifier     "Acer2"
    Device         "HDMI-port-left"
    Monitor        "Monitor2"
    DefaultDepth    24
    Option         "UseEDID" "False"
    Option         "UseEDIDDPI" "False"
    Option         "UseEDIDFreqs" "False"
    Option         "ExactModeTimingsDVI" "True"
    Option         "ModeValidation" "AllowNonEdidModes, NoVertRefreshCheck, NoHorizSyncCheck, NoMaxSizeCheck, NoMaxPClkCheck, NoEDIDModes"
    Option         "NoBandWidthTest" "true"
    Option         "metamodes" "HDMI-1: 1680x1050_60.00 +0+0 {rotation=left}"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Section "Screen"
    Identifier     "Qnix2"
    Device         "DVI-port-bottom"
    Monitor        "Monitor3"
    DefaultDepth    24
    Option         "UseEDID" "False"
    Option         "UseEDIDDPI" "False"
    Option         "UseEDIDFreqs" "False"
    Option         "ExactModeTimingsDVI" "True"
    Option         "ModeValidation" "AllowNonEdidModes, NoVertRefreshCheck, NoHorizSyncCheck, NoMaxSizeCheck, NoMaxPClkCheck, NoEDIDModes"
    Option         "NoBandWidthTest" "true"
    Option         "metamodes" "DVI-D-0: 2560x1440_96 +0+0 {rotation=left}"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

  1. I tried using the higher refresh rate modelines, but they resulted in my monitors going crazy (extreme artifacting, lines shrieking irregularly with different colors, etc.).↩︎