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:
- Run the Video Wall Controller program on the touchscreen
- After around 10 seconds, it will run Firefox in full screen mode on the
HDMI monitor.
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.
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:
| Left | Middle | Right
|
|---|
| Top | A1 | B1 | C1
|
| Mid | A2 | B2 | C2
|
| Bot | A3 | B3 | C3
|
Brightlink mapping of what HDMI cables (labeled
A1, A2...) go into what Brighlink output is here:
| Out1 | Out2 | Out3 | Out4 | Out5 | Out6 | Out7 | Out8 | Out9
|
|---|
| A1 | B1 | C1 | A2 | B2 | C2 | A3 | B3 | C3
|
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:
- SPLICING SETUP
- Output options: Horizontal=3 and Vertical=3
- Input: HDMI
- FORMAT
- Output: All
- Format: HDMIP60
- EDID
- Input: 1080p>>HDMK
- Output: Default 1080P
You should never need to mess with this, it should be set up and working now.
But you never know...
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