The controller rack key is in the cubby to your right hanging on a hook
and is hanging on a key in that cubby:
Power on
To power up the rack and the monitors, just hit the "System Power" button
on the upper right corner of the rack. That's it. If everything is working
ok then what happens is that first the RaspberryPi boots up, then it
automatically powers up the monitors, then waits a few seconds and runs a
Firefox web browser in full screen mode, then starts up the controller software.
When the controller software is running, the touchscreen should see this:
Power down
To power down, first hit the "Shutdown" button on the touchscreen, then wait
until the monitors are off and the touchscreen is dark. Then power down
using the "System Power" button on the upper right corner of the rack. That's
it. Then lock the system up. If the monitors don't go off, call for help
(Drew Baden, Jordan Goodman, Steve Rolston are good candidates).
Usage
You can either display a screen from your laptop, or a URL from the
RaspberryPi. Which one displayed is controlled by the HDMI switcher
using the push button: 1 for RaspberryPI URL; 2 for the laptop.
Make sure that at least one of the switcher lights are on. If nothing is lit,
then it's possible that the power connector (which is pretty flimsy)
around the back has come out, so you'll have to open it up to fiddle
with it. Get help to do this.
Using a laptop
To drive the video wall from your laptop, connect the HDMI cable to
your laptop and plug
it into the HDMI slot velow the HDMI switcher.
The bottom drawer in the rack labelled "Laptop drawer"
pulls out to accommodate a laptop, and
the HDMI and USB-C connectors are in that drawer along with a
wireless pointer for advancing slides.
Using the RaspberryPi to show a web site
The RaspberryPi fires up a Firefox browser that doesn't have a URL
window, so to change it you first have to set the HDMI switcher
to position 1 ("HDMI Switcher" on the controller box diagram above).
Then use the mouse cursor or touch in the text
window to the left of "Navigate" on the touchscreen, type in a URL,
then hit return or "Navigate" to display that URL on the video wall.
The drawer labelled "RaspberryPi keyboard" above the "Laptop drawer"
has a wireless keyboard connected to the RaspberryPi. Don't forget
to turn it on when you want to use it and turn it off when not
using it (there are some spare batteries in the drawer).
Note that the 1U thing called
"4K 3x3 video Wall Controller" is the gadget that takes the HDMI
signal from the HDMI switcher and breaks up the signal into 9 3x3
parts and sends one to each monitor.
This unit should never have to be touched, as
long as the power is on.
Below the video wall controller is an audio amplifier made by Pyle.
Make sure the power light on that is on and if it isn't, it's probably
just come loose around the back so you'll have to open the controller
up. Get help to do this. The amplifier drives the 2 vertical speakers
on either side of the video wall, they should work for the RaspberryPI
without any fiddling, but if you want to drive them from your laptop,
the sound will go through the HDMI and gets tapped off and routed to
the amplifier. First connect the HDMI cable to your laptop and plug
it into the HDMI slot velow the HDMI switcher, then make sure you set
the laptop to drive the sound through whatever port seems like the HDMI
connection.
This is an executable python script that lives in /home/physics/wall/wall.py.
It is run when the desktop starts up, and you do this by adding a file called
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.
At startup, the system runs Firefox in the HDMI window. It does this by having
another startup file called
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.
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:
Brightlink mapping of what HDMI cables (labeled
A1, A2...) go into what Brighlink output is here:
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:
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.
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:
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
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:
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
In the /home/physics/scripts director is a script called "backup.sh". This is a
bash script that will back up the following directories:
Tripp Lite B119-002-UHD 2-Port HDMI Switch for Video and Audio
Table of Contents
Operating Guide

Video Wall Controller
~/.config/autostart/wall.desktop
In this file you will see the following:
[Desktop Entry]
Type=Application
Name=Wall Controller
Comment=Start wall Python app on login
Exec=/home/physics/wall/wall.py
Terminal=false
X-GNOME-Autostart-enabled=true
This is 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).
~/.config/autostart/firefox-kiosk.desktop
with code:
[Desktop Entry]
Type=Application
Name=Firefox Kiosk
Exec=/home/physics/scripts/start-firefox-hdmi.sh
X-GNOME-Autostart-enabled=true
This starts a script in
~/scripts/start-firefox-hdmi.sh
with code
#!/usr/bash
# Give the session time to come up
sleep 5
# Force Firefox to run on the HDMI monitor under Wayland
export MOZ_ENABLE_WAYLAND=1
export MOZ_WL_OUTPUT=HDMI-A-1
# Launch firefox in kiosk mode with a real URL
/usr/bin/firefox --kiosk "https://www.physics.umd.edu"
Firefox kiosk locks the browser into a full-screen, single-purpose view,
hiding toolbars, menus, and the address bar to prevent users from navigating
away from a specific website or application. This is done so that we control
the URL from the touchscreen.
Monitors
Brightlink


Left Middle Right
Top A1 B1 C1
Mid A2 B2 C2
Bot A3 B3 C3
Out1 Out2 Out3 Out4 Out5 Out6 Out7 Out8 Out9
A1 B1 C1 A2 B2 C2 A3 B3 C3
Brightlink Setup

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

Raspberry PI

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.

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.
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.
sudo apt install wmctrl
Go to top
Backup
/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.
Last updated 11/20/2025 Drew Baden