16 Screen Wall

From NURDspace
Revision as of 23:14, 10 March 2016 by Talloak (talk | contribs)
16 Screen Wall
16screen-thingy.jpg
Participants Nooitaf, User:zmatt
Skills Linux, X
Status Active
Niche Video artsy stuff
Purpose Fun
Tool No
Location Space
Cost
Tool category

16 Screen Wall

16screen-thingy.jpg {{#if:No | [[Tool Owner::{{{ProjectParticipants}}} | }} {{#if:No | [[Tool Cost::{{{Cost}}} | }}

Since 9 screens are obviously not enough (see 9 Screen Wall 1), Petraea built a 16 screen one.




Machines

Machine 1

  • HP Compaq dc7600 Ultra-slim
  • Pentium 4 3GHz
  • 2.25GB DDR2 533MHz RAM (2x 1 GB and 1x 256MB), max 3x1GB

Machine 2

  • HP Compaq dc7600 Ultra-slim
  • Pentium 4 3Ghz
  • 1GB DDR2 533MHz (1x512MB and 2x256MB) Max 3x1GB

Machine 3

  • HP Compaq dc7700p Convertible Minitower
  • Core2 6300 @ 1.86GHz
  • 1GB DDR2 533MHz (2x512MB) (max 4x2GB)

Machine 4

  • Asus 5S800-VM/Vintage
  • Celeron D 2.66GHz running @ 2.8GHz
  • 2GB DDR (2x 1GB, no slots free)

Machine 5

  • HP Compaq dc7600 Ultra-slim
  • Pentium 4 3GHz
  • 2GB DDR2 533MHz (2x 1GB) max 3x 1GB

Machine 6

  • HP Compaq dc7600 Ultra-slim
  • Pentium 4 3GHz
  • 1GB DDR2 (2x512MB, one slot free, max 3GB)

Machine 7

  • HP d330 uT (DG285T)
  • Pentium 4 2.6GHz
  • 2GB (4x512MB, no slots free)

Machine 8

  • Dell Optiplex GX270
  • Pentium 4 * 2.8GHz
  • 2GB DDR RAM (4x512MB, no slots free)

Switch

  • HP 1910-24G JE006A

Current Status

Most of the scripting has been copied over from [9 Screen Wall 1] and is semi-working. In order to complete things properly, the internal networking needs finishing.

The screen setup script has been improved to:

#!/bin/bash
export DISPLAY=:0
export XAUTHORITY=~/.Xauthority
DISP1=VGA-1 #sometimes VGA-0
DISP2=DVI-I-1 #sometimes DVI-0
x=1280
y=1024

function setscreens() {
xrandr --newmode "$x"x"$y"_c 108.88 1280 1360 1496 1712 1024 1025 1028 1060 -Hsync +Vsync
xrandr --addmode "$DISP1" "$x"x"$y"_c #Could be VGA0 - check xrandr
xrandr --addmode "$DISP2" "$x"x"$y"_c #Could be DVI0 - chrck xrandr
xrandr --output "$DISP1" --mode "$x"x"$y"_c --rotate normal --output "$DISP2" --mode "$x"x"$y"_c --above "$DISP1" --rotate normal
}

function readscreens() {
raw=$(xrandr | sed 's/primary //' | grep 'connected' | cut -d ' ' -f 1,3|tr ' ' '.')
for q in $raw ; do
ID=$(echo $q | cut -d '-' -f 1)
DIMX=$(echo $q | cut -d '.' -f 2| cut -d 'x' -f 1)
DIMY=$(echo $q | cut -d '.' -f 2| cut -d '+' -f 1| cut -d 'x' -f 2)
POSX=$(echo $q | cut -d '+' -f 2)
POSY=$(echo $q | cut -d '+' -f 3)
if [ "$ID" == "VGA" ] ; then
  if [ "$POSY" == $y ] ; then
    VGA=1
  fi
fi
if [ "$ID" == "DVI" ] ; then
  if [ "$POSY" == 0 ] ; then
    DVI=1
  fi
fi
done
if [ "$VGA" == 1 ] ; then
  if [ "$DVI" == 1 ] ; then
    return 0
  fi
fi
return 1
}

setscreens
sleep 1
while ! readscreens ; do
setscreens
sleep 1
done

  • Internal IP range: VLAN1, 192.168.0/24, set untagged on #2-#8, tagged on #1
  • External VLAN: 2, set untagged on the external port and #1
  • The switch is set up on 192.168.0.254

The current idea is to set up DHCP on #1 on interface eth0.1, set MASQ up between the two interfaces, and allow DNS forwarding over that.