Monthly Archives: September 2016

Arch Linux Hydra Build

For a long time now I’ve been wanting to build my ideal computer. A powerful Linux machine with surrounding monitors. Recently I had the opportunity to do so. The following is a time lapse video of the entire build as well as the configuration files and list of components and where to buy them. This way, if anyone else wants to construct either the same or something along the same lines, they’ll have some footsteps to follow if they need the help.

During the trial and error process there were little milestones along the way.

Finally I got everything working correctly and the Hydra came to life.

Build Components

The following is a list of all the components used in this build along with links to purchase.

#archlinux #hydra the calm before the storm. #Linux

A photo posted by Jason Graves (@godlikemouse) on

On to part three of the Linux Hydra setup, the heads. 24” monitors all around.

A photo posted by Jason Graves (@godlikemouse) on

Part 2 wire maintenance of the Linux Hydra complete.

A photo posted by Jason Graves (@godlikemouse) on

Physical Configuration

I went with Dual Nvidia Quadro K620 video cards because they were very inexpensive and had the ability to display up to 4 monitors per video card via daisy chain through DisplayPort 1.2.  The monitors that I found that were pretty inexpensive however didn’t support direct daisy chaining so I had to purchase 2 multi monitor display adapters which essentially did the daisy chaining.  Physically, this is the setup.

GPU 1 DisplayPort Splitter 1 Monitor 1
Monitor 2
Monitor 3
Monitor 4
GPU 2 DisplayPort Splitter 2 Monitor 5
Monitor 6
Monitor 7
Monitor 8

 

Xorg Configuration

My chosen distribution for this build was Arch Linux, yours maybe different however, the Xorg configuration should be similar if not identical if you’re using the same components.  If not, then perhaps this might just help you along the way.

My first setup was using the nvidia proprietary driver, installed by the following:

user@computer:$ yaourt nvidia-beta-all

This driver set didn’t have Base Mosaic nor Xinerama working.  Everytime it was turned on the screen would black out and I would have to hard reset the machine and manually remove the settings.

Visually what I was setting up as 2 screens, one for the first GPU and another for the second.  The use of nvidia-settings made this very painless, I suggest you use it as well if you’re using Nvidia cards.

user@computer:$ sudo pacman -S nvidia-settings
user@computer:$ sudo nvidia-settings

Once you save the changes to the Xorg.conf file, you should be able to see the file located at /etc/X11/xorg.conf.

Here’s a visual representation of my screen Xorg setup.

Screen0 Screen1
Monitor 1 Monitor 2 Monitor 5 Monitor 6
Monitor 3 Monitor 4 Monitor 7 Monitor 8

Hopefully this helps in understanding what I was trying to achieve. This gave great results and allowed me to get all monitors working however, there were two issues with this setup.

The first, getting a graphical environment to support eight monitors was a bit troublesome at first. I started off using Gnome 3, tried KDE, etc. yet none of them supported anything other than a dual monitor setup. Also, xrandr did nothing to help here and even reported that the second GPU wasn’t available which was absolutely not the case. The solution here was to install a different desktop which supported multiple monitors. I went with XFCE4.

The second, windows could only be moved in the screen in which the window was created. In other words, a window created in Screen0 could only move through monitors 1-4. This became more of a problem over time and was resolved later. Here’s my first working Xorg.conf file.

# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings: version 370.28 (buildmeister@swio-display-x64-rhel04-17) Thu Sep 1 20:21:47 PDT 2016
 
Section "ServerLayout"
 Identifier "Layout0"
 Screen 0 "Screen0" 0 0
 Screen 1 "Screen1" 3840 0
 InputDevice "Keyboard0" "CoreKeyboard"
 InputDevice "Mouse0" "CorePointer"
 Option "Xinerama" "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"
 # HorizSync source: edid, VertRefresh source: edid
 Identifier "Monitor0"
 VendorName "Unknown"
 ModelName "Ancor Communications Inc VE248"
 HorizSync 30.0 - 83.0
 VertRefresh 50.0 - 76.0
 Option "DPMS"
EndSection
 
Section "Monitor"
 # HorizSync source: edid, VertRefresh source: edid
 Identifier "Monitor1"
 VendorName "Unknown"
 ModelName "Ancor Communications Inc VE248"
 HorizSync 30.0 - 83.0
 VertRefresh 50.0 - 76.0
 Option "DPMS"
EndSection
 
Section "Device"
 Identifier "Device0"
 Driver "nvidia"
 VendorName "NVIDIA Corporation"
 BoardName "Quadro K620"
 BusID "PCI:1:0:0"
EndSection
 
Section "Device"
 Identifier "Device1"
 Driver "nvidia"
 VendorName "NVIDIA Corporation"
 BoardName "Quadro K620"
 BusID "PCI:2:0:0"
EndSection
 
Section "Screen"
 Identifier "Screen0"
 Device "Device0"
 Monitor "Monitor0"
 DefaultDepth 24
 Option "Stereo" "0"
 Option "nvidiaXineramaInfoOrder" "DFP-2.2.1"
 Option "metamodes" "DP-1.2.1: nvidia-auto-select +1920+1080, DP-1.2.2: nvidia-auto-select +0+1080, DP-1.1.1: nvidia-auto-select +1920+0, DP-1.1.2: 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 "metamodes" "DP-1.2.1: nvidia-auto-select +0+0, DP-1.2.2: nvidia-auto-select +1920+0, DP-1.1.1: nvidia-auto-select +0+1080, DP-1.1.2: nvidia-auto-select +1920+1080"
 Option "SLI" "Off"
 Option "MultiGPU" "Off"
 Option "BaseMosaic" "off"
 SubSection "Display"
 Depth 24
 EndSubSection
EndSection

The above configuration eventually became a bit problematic and reached out to NVidia to find out if there was anything that could be done to get Base Mosaic and Xinerama working in their driver.  The response I received was to try using the following driver:

http://www.nvidia.com/download/driverResults.aspx/106780/en-us

This turned out be very helpful.  Once the driver was installed I once again turned on Base Mosaic and to my surprise the entire panel of screens were being utilized under a single Screen0 entry.  This made it possible to drag windows from Monitor 1 all the way across to Monitor 8.

Screen0
Monitor 1 Monitor 2 Monitor 5 Monitor 6
Monitor 3 Monitor 4 Monitor 7 Monitor 8

This final Xorg.conf file is what I decided to keep and use going forward.

# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings: version 367.44 (buildmeister@swio-display-x86-rhel47-01) Wed Aug 17 22:53:32 PDT 2016
 
Section "ServerLayout"
 Identifier "Layout0"
 Screen 0 "Screen0" 0 0
 InputDevice "Keyboard0" "CoreKeyboard"
 InputDevice "Mouse0" "CorePointer"
 Option "Xinerama" "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"
 # HorizSync source: edid, VertRefresh source: edid
 Identifier "Monitor0"
 VendorName "Unknown"
 ModelName "Ancor Communications Inc VE248"
 HorizSync 30.0 - 83.0
 VertRefresh 50.0 - 76.0
 Option "DPMS"
EndSection
 
Section "Device"
 Identifier "Device0"
 Driver "nvidia"
 VendorName "NVIDIA Corporation"
 BoardName "Quadro K620"
 BusID "PCI:1:0:0"
EndSection
 
Section "Screen"
 Identifier "Screen0"
 Device "Device0"
 Monitor "Monitor0"
 DefaultDepth 24
 Option "Stereo" "0"
 Option "nvidiaXineramaInfoOrder" "DFP-2.2.1"
 Option "metamodes" "GPU-05f6316a-a480-b2c4-7618-d19e2bd555aa.GPU-0.DP-1.2.1: nvidia-auto-select +1920+1080, GPU-05f6316a-a480-b2c4-7618-d19e2bd555aa.GPU-0.DP-1.2.2: nvidia-auto-select +0+1080, GPU-05f6316a-a480-b2c4-7618-d19e2bd555aa.GPU-0.DP-1.1.1: nvidia-auto-select +1920+0, GPU-05f6316a-a480-b2c4-7618-d19e2bd555aa.GPU-0.DP-1.1.2: nvidia-auto-select +0+0, GPU-0cc1f3f6-5d22-fe69-aa54-cb7c8c051daa.GPU-1.DP-1.2.1: nvidia-auto-select +3840+0, GPU-0cc1f3f6-5d22-fe69-aa54-cb7c8c051daa.GPU-1.DP-1.2.2: nvidia-auto-select +5760+0, GPU-0cc1f3f6-5d22-fe69-aa54-cb7c8c051daa.GPU-1.DP-1.1.1: nvidia-auto-select +3840+1080, GPU-0cc1f3f6-5d22-fe69-aa54-cb7c8c051daa.GPU-1.DP-1.1.2: nvidia-auto-select +5760+1080"
 Option "MultiGPU" "Off"
 Option "SLI" "off"
 Option "BaseMosaic" "on"
 SubSection "Display"
 Depth 24
 EndSubSection
EndSection

I hope this helps anyone who gets stuck trying to get multiple monitors working under Linux using Nvidia video cards.  Please feel free to drop me a line if you get stuck and I’ll see what I can do to help.

Running Graboid on Linux

Want to run Graboid on Linux, cool, here’s how you do it.  First you’ll need to install either wine  to run graboid.

user@computer:$ sudo pacman -S wine

Great, next we’ll need to install Graboid.  The good news is I’ve made it very easy for you, simply download my premade version containing everything you’ll need.

Download: Graboid for Linux

Next unpack the tgz file.

user@computer:$ tar xpf graboid.tgz

Under the Graboid directory you’ll notice two files, the first is the graboid.png file which you can copy to your shared icons directory (on Arch Linux this is /usr/share/pixmaps).  The second is a simple bash script which you can use to launch Graboid from the command line.  Feel free to modify this file until your heart’s content.  Also, if for some reason you can’t execute the graboid file, be sure to change the permissions of the file.

user@computer:$ chmod +x graboid

Lastely, run Graboid.

user@computer:$ ./graboid

I hope this helps you get up and running with Graboid on Linux.  Enjoy!