How to Set Up Digital Signage on a Raspberry Pi (2026)
A step-by-step guide to turning a Raspberry Pi into a free, open-source digital signage player using ScreenTinker. Works on Pi 3, Pi 4, and Pi 5.
What you will need
- Raspberry Pi 3, Pi 4, or Pi 5. Pi 4 (4GB+) is the sweet spot. Pi 3 works for static images and 1080p video. Pi 5 is overkill but futureproof.
- microSD card, 16 GB or larger. Class 10 or A1/A2 rated.
- A proper power supply: 5.1V 3A USB-C (15W) for a Pi 4, 27W USB-C for a Pi 5. The official Raspberry Pi supply is the safe choice. A phone charger or a TV's USB port usually is not; see Troubleshooting.
- HDMI cable to your TV or monitor (micro-HDMI on Pi 4/5).
- Network connection - Ethernet preferred for reliability, Wi-Fi works fine.
- A ScreenTinker account. Sign up free if you do not have one.
Step 1: Install Raspberry Pi OS
Use Raspberry Pi Imager to flash Raspberry Pi OS (64-bit) to your microSD card. Which edition depends on the player you want:
- Browser player (Chromium kiosk): the standard Desktop edition. This is the setup most people run today.
- Native player: Lite is enough, and recommended — no desktop to load. It needs Raspberry Pi OS based on Debian 13 (Trixie). See The native player below.
In the Imager's advanced options (gear icon), pre-set:
- Hostname (e.g.
signage-lobby) - Username and password
- Wi-Fi credentials (if not using Ethernet)
- Enable SSH (optional but useful for remote management)
Insert the SD card, plug in the Pi, and let it boot through first-time setup.
Step 2: Run the ScreenTinker installer
Open a terminal on the Pi and run:
curl -sL https://screentinker.com/scripts/raspberry-pi-setup.sh | sudo bash
The sudo is required — the installer writes systemd units, installs packages and
configures autostart. Without it the script stops on its first line and prints the correct
command, so nothing is half-installed.
That gives you All-in-One: the server and the player on the same Pi. To use the Pi as a player only, pointing at a ScreenTinker server you already run:
curl -sL https://screentinker.com/scripts/raspberry-pi-setup.sh | sudo bash -s -- --player-only https://your-server
The script will:
- Install Chromium (the kiosk browser used as the player)
- Set up an autostart entry so the player launches in fullscreen on boot
- Disable screen blanking and the screensaver
- Configure HDMI to keep the display awake
- Reboot the Pi when finished
On reboot the Pi will launch directly into the ScreenTinker player and show a 6-digit pairing code.
The native player (optional)
Besides the Chromium kiosk there is a native player: a small app that draws straight to the screen, with no browser and, on Lite, no desktop. It adds reboot, a remote terminal, screen power control and self-update from the dashboard. It connects to an existing ScreenTinker server (the installer's option 3, or):
curl -sL https://screentinker.com/scripts/raspberry-pi-setup.sh | sudo bash -s -- --native https://your-server
- Needs Raspberry Pi OS 64-bit based on Debian 13 (Trixie). Older releases are refused with a message.
- On Lite it runs as a system service (
screentinker-pi.service) that owns the display. Logs:journalctl -u screentinker-pi -f. - On Desktop it starts full screen when the desktop user logs in. Do not start the service by hand there — the desktop owns the screen. Logs:
~/.local/state/screentinker-pi/player.log. - The installer picks the mode from whether a desktop actually boots. Force it with
--native-mode liteor--native-mode desktop. - Switching from the browser player on the same Pi: run the installer with
--native. It removes the browser kiosk's launcher (an All-in-One server on the Pi keeps running). Then reboot.
The native player is newer than the browser player and has had less field time, especially on Lite. Known issue: a playlist can stop rotating on a website or HTML widget item (#487). Reports with your Pi model and OS version help.
Step 3: Pair the Pi to your dashboard
Sign in to your ScreenTinker dashboard and click + Add Display. Enter the 6-digit code shown on the Pi and give the display a name (e.g. "Lobby TV"). The Pi will switch from the pairing screen to "Waiting for content".
Step 4: Push content
From the dashboard:
- Open Content Library and upload an image, video, or paste a remote URL.
- Open Playlists, create a playlist, and add items.
- Publish the playlist.
- From the device's detail page, assign the playlist.
The Pi picks up the new playlist within a few seconds and starts playing.
Performance tips
- Use H.264 video. Pi GPUs accelerate H.264 in hardware. H.265/HEVC works on Pi 4/5 but uses more CPU.
- Match your resolution to the display. 1080p video on a 1080p screen avoids unnecessary scaling.
- Wired Ethernet is more reliable than Wi-Fi for video-heavy playlists. Wi-Fi is fine for image-heavy ones.
- For Pi 3, stick to images and short clips. Pi 3 can struggle with continuous 1080p video.
Troubleshooting
The Pi reboots into the desktop, not the player
Check that the autostart file ~/.config/autostart/screentinker.desktop exists. The installer creates this; if it's missing, re-run the installer.
Native player: no pairing code after reboot, or "Could not set DRM mode … Permission denied"
Something else owns the screen — usually the browser kiosk from an earlier install, or the
desktop. Re-run the installer with --native (it removes the old kiosk launcher), or on
Lite: sudo systemctl disable --now screentinker-kiosk.service getty@tty1.service then
sudo screentinker-pi setup https://your-server --mode lite. Check with
screentinker-pi status.
Native player on Pi OS with a desktop: the desktop appears but the player never does
The player starts at desktop login, not as a service, so screentinker-pi.service is
meant to be inactive on a desktop Pi. Older packages needed Qt's Wayland support installed
separately: run sudo apt install qt6-wayland, then
sudo screentinker-pi setup https://your-server --mode desktop and reboot. To see why it
stops, open a terminal on the desktop and run screentinker-pi run (errors print in the terminal), or read
~/.local/state/screentinker-pi/player.log. Don't start the service on a desktop: the
desktop keeps the screen and the service can't draw on it.
The Pi reboots by itself, or forgets its Wi-Fi
Almost always the power supply. Under load (video, HDMI, Ethernet) a weak charger sags, the
Pi browns out and cold-boots, and a file being written at that moment can come back empty,
which is how a Pi loses its saved Wi-Fi network. Check with vcgencmd get_throttled:
anything other than throttled=0x0 means it has been short of power since boot. A
lightning-bolt icon in a corner of the screen means the same thing. Use a 5.1V 3A supply (Pi 4)
or 27W (Pi 5) and a short, thick USB-C cable.
Schedules start at the wrong time
Check the Pi's time zone with timedatectl. Raspberry Pi OS defaults to
Europe/London, so a Pi set up without the Imager's locale settings runs on UK time. The
installer now turns on network time and detects the zone when it is still the default; to set
it yourself, re-run it with --timezone America/Chicago (any
IANA zone), or run
sudo timedatectl set-timezone America/Chicago.
No sound
The native player sends sound to every output at once (both HDMI ports and the headphone jack), so whichever one has a speaker plays it. Older packages played no sound at all on Pi OS Lite; updating the player (self-update from the dashboard, or installing the new package) fixes it. Also check the TV or monitor itself is not muted and its input is set to the Pi's HDMI port.
The screen goes dark after a few minutes
The installer should disable screen blanking, but some monitors sleep based on their own timer. Disable sleep mode on the monitor itself, or use a dummy HDMI plug if the Pi negotiates a low-power mode.
The Pi shows the pairing code but I can't see it on the dashboard
The pairing code is shown on the Pi screen, not the dashboard. Sign in, click Add Display, and type the code from the Pi.
Ready to set up your Pi?
Start a 14-day Pro trial on hosted ScreenTinker: up to 15 screens, no credit card.
Start your free trial View on GitHub