PSC Video Wall

Table of Contents


The PSC Video Wall consists of 9 monitors in a 3x3 grid, controled by a rack on the lower right side. The Chair of Physics has the key to the rack. See below for documentation.


Operating Guide

Power up the rack by hitting the power button on the back of the power strip. This will power up the audio amplifier, BrightLink video wall controller, and the Raspberry PI.

The PI will boot up when it gets power. It will immediately do 2 things:

Video Wall Controller

This is a python script that lives in /home/physics/wall/wall.py. It's a GUI that allows you to power on all 9 monitors (push the ON button), power off (OFF button), and if for some reason the monitors come on in the wrong source, set them all to the HDMI1 source (HDMI button).

There's also a text window where you can type a URL, and a "Navigate" button. Type in a URL and hit Navigate and it will send a message to the Firefox browser running on the monitors to go to that address.

Typing "Exit" will exit the program. If you do this by mistake, you will see an icon on the desktop called "Video Wall Controller", just double touch that to get it running again.


Monitors

The Video Wall in the PSC lobby consists of 9 Samsung UD55C monitors. The manual is here The monitors are 1920x1080, which is smaller than 4K (3840x22160), however since the 9 monitors are in a 3x3 grid, the overall resolution will be 5760x3240 which is greater than 4K. So if you put a 4K signal into the HDMI port in the rack, it will view fine in the wall.

Each monitor in the wall has 2 inputs: an HDMI cable that comes from the Brightlink gadget (see below) and an RS232 serial connection that starts at the Raspberry PI 5 and is daisy chained through all 9 monitors. See below.

Go to top


Brightlink

We use the Brightlink 4k 3x3 Video Wall Controller:

The rear has all of the relevant inputs: the bottom row of 9 outputs and the top row has inputs from a computer.

The bottom outputs are labeled "HDMI Out1" ... up to "HDMI Out9". The video wall has 9 monitors in a 3x3 matrix, so let's label them Top-Mid-Bot and L-M-R for rows and columns. Each monitor on the wall has an Extron rx unit, driven by the Extron tx unit in 0204, and each Extron tx has an HDMI input that comes from the Brightlink, and these are labeled A1, A2, A3, and etc B and C. Here's the mapping from the A1..3,B1..3,C1..3 to the video wall matrix:

LeftMiddleRight
TopA1B1C1
MidA2B2C2
BotA3B3C3

Brightlink mapping of what HDMI cables (labeled A1, A2...) go into what Brighlink output is here:

Out1Out2Out3Out4Out5Out6Out7Out8Out9
A1B1C1A2B2C2A3B3C3
The monitor in the lobby is labeled E3 on the Extron, and it has a receiver behind it and is driven from a transmitter in 0204. What we want to do is use the HDMI cable that goes into the monitor and reverse the transmission, so that we can plug that HDMI cable from the receiver (that is placed in 0204) and plug it into the "HDMI In" input on the rear of the Brightlink. That way you can drive the video wall from a laptop in the lobby.

Go to top


Brightlink Setup

The Brightlink allows you to setup from either the front panel by pushing the white buttons, or using the remote, or using the web interface. We use the latter.

To use it, drag a laptop into 0204 and get a USB->Ethernet adapter and plug it into the blue cat6 cable that is connected into the "IP" input on the rear of the Brightlink. I used an Apple MacBook Pro, and I found that to connect to the Brightlink, I had to first turn Wifi off. Then open up the network settings and you should see the "USB 10/100/1000 LAB" interface and it should say Connected. Click on it and go into the TCP/IP setup and configure it for Manual IP, then use 192.168.1.8 and subnet mask 255.255.255.0. The Router is 192.168.1.1. Save that configuration, open up a browser, and browse to the Brightlink which is at 192.168.1.168. Login as admin and put in the password (Drew Baden, Jordan Goodman, Anne Suplee, and Steve Rolston know it). If that works, you should see this screen:

Here's how I got it to work:

You should never need to mess with this, it should be set up and working now. But you never know...

Go to top


Rack

Go to top

Raspberry PI

The Raspberry PI is a 5, which has a pretty fast cpu, and it's fast enough so that the PI finally feels like a real computer. It has a 32G micro SD card, and it's loaded with Deiban Trixie released 2025-10-01.

When it booted up for the first time, an account called "physics" was made. The password is the same as the account name.

Here is a photo of the back of the Raspberry PI, showing how it's hooked up.

The PI is mounted on the back of the 7" touchscreen. You can see the ribbon that connects the touchscreen to the PI, it goes into a port labeled "CAM/DISP 1". the 2 cables coming out on the bottom of the photo are the USB-C power cables, and the HDMI cable that is plugged into the microUSB connector closest to the power cable. That cable goes into the 2-port HDMI switcher. You can to buy the cable (HDMI on one end, micro USB on the other) from adafruit.com. At the top left in the photo is a red wire going into the 5V GPIO port (2) and a black wire going into the ground port (4), those are the power and ground for the touchscreen. To the right are the USB cables. On the PI there are 2 USB 2.0 ports above 2 USB 3.0 ports(they are stacked so you only see the top port). The cable you see coming out of the USB 3.0 port is a USB to serial cable, and this is the signal that goes into the first video wall and is daisy chained. This carries the rs232 signals that tell the wall what to do.

It's connected to the campus wifi network "umd-iot". This is a special wifi network that allows the gadget to go out, but no ports are open for anything to come in. So you can run a web browser but not a web server. You can run ssh and scp to copy things in and out but you can't run a ssh server to connect to it from outside. And you can't run a VNC server, unfortunately.

The wifi MAC address is 2C:CF:67:F1:BF:7B, and campus has used that MAC address to allow access to umd-iot. The password for access is hgeUVKJd5jGD. When the PI boots up, it will automatically connect.

After the first boot with network access, the computer OS was updated using:

    sudo apt update
    sudo apt upgrade -y
The python version installed with the OS is 3.13.5. The PI is doing the serial control of the video wall monitors using a python script, so it needs the python serial library ("import serial"). This comes with python so no need to install it.

The PI has 2 monitors hooked up: a touch screen monitor that will show the GUI used to control the video wall, and a HDMI monitor that can go out to the wall. Turns out that the system treats these two monitors in an integrated way, with the monitors having absolute coordinates. So it's important that the system knows which monitor is on the right and which on the left (yes, it's a bit ridiculous). The way things are set up is that the HDMI is on the left, and the touch screen on the right. The resolution, orientation, etc are all controlled by right clicking on the desktop, selecting "Control Centre", and scroll down to "screens". Then right click on each monitor and adjust accordingly. The "Control Centre" at "Screens" looks like this:

This has all been preset, but to see the monitor settings, run

    xrandr --listmonitors
It should come back and show you
    Monitors: 2
    0: +DSI-2 800/154x480/86+1920+0 DSI-2
    1: +HDMI-A-1 1920/620x1080/340+0+0 HDMI-A-1
DSI-2 is the 7" touch screen mounted in the rack. HDMI-A-1 is the HDMI output on the PI that goes into the 2-port HDMI switcher so that you can drive the wall with Firefox running on the PI. The DSI-2 is a 800x480 resolution screen, and that's what you see in the xrandr output. The HDMI monitor is set to 1920x1080, which is the native resolution of the video wall Samsung UD55C monitors. The "0+0" at the end of the HDMI-A-1 report means that that monitors is at coordinates x=0, y=0, and the "1920+0" after DSI-2 means that the touch screen is at coordinate x=1920, y=0. So the PI is being told that the HDMI monitor is on the left at x,y=0,0 and the touch screen is at x,y=1920,0 just to the right. This means that you can move the mouse cursor between screens via the border on the right side of the HDMI to the left side of the touchscreen.

Note that when getting everything to work, the touchscreen sometimes came up in landscape and sometimes in portrait mode, but once it was set it stays that way. As of this writing, the touch screen orientation is "inverted" so that the power and HDMI cables go up, but this might change. On the PI in the picture, right next to the touch screen cable connector to the screen there's a button you can push to power cycle the computer. This has been disabled so that the PI boots up on powerup, but it's there if you need it. This is done by modifying the PI EEPROM, and to do that you have to do this:

    sudo rpi-eeprom-update -a 
Then edit the EEPROM via:
    sudo -E rpi-eeprom-config —edit
And add
    AUTO_POWER_ON=1
Save and reboot.

The touchscreen software on the PI will automatically show a keyboard when the focus is on the touchscreen. I've disabled this by right clicking on the desktop, click on "Desktop Preferences" and scroll down to "Display". You will see that the on-screen keyboard is disabled. You won't need it since we have a keyboard in a drawer in the rack but if you do, just go to the "Display" setting and re-enable it.

Sublime_text is also installed on the PI, to do that just google how do to it and follow instructions.

Bluetooth is also installed and running on the PI if you need it. In the upper left corner of the touchscreen display you will see the red raspberry, click on that, scroll down to "Preferences", and you will see the Bluetooth controls.

Another program necessary is wmctrl. This is a command-line tool for Linux that allows users to interact with and control the X Window Manager. It is used at bootup to run a full screen version of Firefox on the HDMI monitor and the wall controller on the touchscreen. It is installed via

    sudo apt install wmctrl 
Go to top

Backup

In the /home/physics/scripts director is a script called "backup.sh". This is a bash script that will back up the following directories:

        /home/physics/wall
        /home/physics/Desktop
        /home/physics/.config/autostart
        /home/physics/.congig/labwc
        /home/physics/scripts
It has an alias, "backup", so you can invoke it by just typing "backup" in a terminal. What it does is to first use ssh to create a directory called "wall" on a host somewhere, with a time stamp in the title, then it copies the above directors over to the host. The script has an option to set the remote host and the username for someone at that host, using the "-host <name>" and "-user <name>" options. Type "backup -help" for help. The defaults are drew@login.physics.umd.edu. So with no arguments, it will create a directory called "wall/2025-11-21_14-38-54" on "login.physics.umd.edu" in the "drew" account, and inide that directory you will all 5 of the above directories, which has the relavent files needed.

Tripp Lite B119-002-UHD 2-Port HDMI Switch for Video and Audio

Go to top


Last updated 11/20/2025 Drew Baden