We require the Raspberry Pi 4 with at least 2GB of RAM (4GB Preferrable). Older Raspberry Pi's will not have enough processing power to handle things smoothly.
🚨 Please note: Raspberry Pi should only be used for simple, static content due to performance limitations. As this is not a recommended device, we will not officially support it. Please see our hardware page for recommended options.
The Easy Way - Download Our Image
Download the Image
Download our prebuild Raspberry Pi Image:
Install the Image
Install it using Balena Etcher on your SD card, insert it into your Pi, and reboot.
Configure the Image
Configure your WiFi details and Playlist assignment by adding these the details to a provisioning file. The device will then read the file when the USB is inserted after booting your device.
To obtain your provisioning file, follow these instructions:
- In your TelemetryTV account, go to Settings > Provisioning Tokens
- Beside the Default provisioning, click the download icon to download the provisioning file to your computer and rename the file "telemetry_config.json"
Once you have downloaded the file, you can insert the file in the root directory of your USB stick as follows:
Please note that it is advised to format your USB before placing the file on for provisioning.
The Harder Way - Build your Own
Since the Raspberry Pi is a platform for hackers and builders, sometimes you want to hack together a slightly different solution. We've provided the instructions on how to build your own image should you like.
Follow the steps below:
Download & Install Raspbian
Download Raspbian Pi OS (32-bit) Lite and install on your Raspberry Pi following the instructions on their download page.
Boot In to Raspbian and Login
Boot from the SD Card on your Raspberry Pi and login as "pi" with the password "raspberry".
Sudo to Root
Switch to root by running "sudo su -"
Update the OS
Ensure you have the most recent updates.
apt-get upgrade -y
Configure your Pi
raspi-config to configure your device as follows:
audio (to hdmi)
configure GPU memory to 192MB
Enable G2 GL (Fake KMS) OpenGL desktop driver with fake KMS
Turn off Swap and Logging
Since digital signage runs 24x7 and Raspberry Pi's use SD cards with limited write endurance, we find that it's helpful to not write to the card as much as possible. For more discussion see this helpful article.
sudo dphys-swapfile swapoff
sudo dphys-swapfile uninstall
sudo update-rc.d dphys-swapfile removeadd to /etc/fstab
none /var/run tmpfs size=100M,noatime 0 0
none /var/log tmpfs size=100M,noatime 0 0apt install autofs/etc/auto.master.d/usb.autofs
/media/ /etc/auto.ext-usb --timeout=2/etc/auto.ext-usb
usb -fstype=auto :/dev/sda2systemctl enable autofs
Reboot and Test
Reboot your Pi and ensure everything comes up properly from the configuration changes you made above.
Since you installed a minimal configuration of Raspbian you'll need X to run graphical apps:
apt install xserver-xorg xinit
Setup Automatic Login
/etc/lightdm/lightdm.conf and change autologin for the user pi:
Allow for Root X11 Access
Root needs to be able to run X11
ln -s /home/pi/.Xauthority /root/.Xauthority
Disable the Screensaver
Log in to the desktop GUI and disable the screensaver.
Install and Enable Docker
TelemetryTV's is distributed as docker images so you'll need Docker running in order to run TelemetryTV.
apt-get install apt-transport-https ca-certificates software-properties-common -y
curl -fsSL get.docker.com -o get-docker.sh && sh get-docker.sh
systemctl enable docker
Once you have installed docker all you need to do is start Watchtower and then finally run your app.
We have watchtower running to ensure that our process is always running and to restart it if it stops. Watchtower will also ensure that you receive automatic updates for the app as we release them.
run - watchtower.sh
docker run -d \
--name watchtower \
-v /var/run/docker.sock:/var/run/docker.sock --restart unless-stopped \
Finally, run this script below to start the app container
run - ttv.sh
if [ "$user" != "root" ]; then
echo "execute as root"
if [ "$platform" == "armv7l" ]; then
fiif [ ! -d /home/$user/data ]; then
chown $user /home/$user/data
fiexport DISPLAY=:0.0docker run --name telemetrytv \
-e DISPLAY -e SYSTEMD_IGNORE_CHROOT=yes \
-v /etc/wpa_supplicant:/etc/wpa_supplicant \
-v /run/systemd:/run/systemd \
-v /var/run:/var/run \
-v /sys/fs/cgroup:/sys/fs/cgroup:rw \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v /home/$user/data:/home/telemetrytv \
-v /usr/share/zoneinfo:/usr/share/zoneinfo \
-v /etc/localtime:/etc/localtime \
-v /media:/media \
-v /dev:/dev \
--net=host --pid=host --ipc=host --group-add=29 --privileged --restart unless-stopped \