Raspberry Pi Digital Signage Guide
Use a Raspberry Pi 5 or a Pi 4 with 4GB of RAM, an A2-rated microSD card and the official power supply. Install a player: DigitalSignage.com SignPlayer is free on the first 3 screens forever, no ads and no watermark, then $3 per screen per month. Other Pi players are Anthias (free), PiSignage ($35 in year one), Yodeck's Pi image (from $8 per screen) and OptiSigns (from $10). Xibo has no Raspberry Pi player, and the microSD card, not the Pi, is what usually fails first.
A Raspberry Pi is the cheapest dependable way to turn a TV you already own into a managed screen. The board costs $35 to $80, draws 5W to 15W, and 9 of the 14 platforms in our player compatibility matrix ship an official Pi player. This guide covers the models worth buying in 2026, the storage choice that decides whether the sign survives a year, the software options with their current prices, and the three settings that trip up most first installs.
- Why Raspberry Pi for Digital Signage?
- Raspberry Pi Model Comparison
- Hardware Setup
- Operating System Options
- Signage software for the Raspberry Pi
- The three settings that catch everyone
- System Optimization
- Remote Management
- Security Hardening
- Troubleshooting
- Frequently asked questions
- Which Raspberry Pi model is best for digital signage?
- How do I stop the microSD card killing my Raspberry Pi sign?
- Can a Raspberry Pi play 4K video for digital signage?
- Which digital signage software runs on a Raspberry Pi?
- How many displays can one Raspberry Pi drive?
- How long does a Raspberry Pi last running signage 24/7?
- Related guides
- Try it on your own screens, free
Why Raspberry Pi for Digital Signage?
Advantages
| Advantage | Description |
|---|---|
| Cheap | $35 to $80 for the board, against $200 to $600 for a commercial player |
| Low power | 5W to 15W, so the player costs a few dollars a year to run |
| Small | Mounts behind the display or inside a VESA enclosure |
| Open | Runs any Linux player, or Chromium in kiosk mode, with no license fee |
| GPIO | Motion sensors, buttons and relays for interactive or triggered content |
| Long availability | Raspberry Pi has committed to building the Pi 4 and Pi 5 into the 2030s |
| Widely supported | 9 of 14 signage platforms ship an official Pi image or package |
Limitations to consider
| Limitation | What to do about it |
|---|---|
| The microSD card is the top failure point | Use an A2-rated card, or boot from USB or NVMe, and turn on the read-only overlay |
| No hardware H.264 decode at 4K | Encode 4K as H.265. The Pi 5 has no H.264 decoder at all and the Pi 4 stops at 1080p60 |
| No hardware video encode on the Pi 5 | Pre-encode content. Do not plan to transcode or stream a camera on the Pi itself |
| Dual 4K at 60Hz needs a Pi 5 | A Pi 4 drives one screen at 4K 60Hz, or two at 4K 30Hz |
| Throttles above 80°C | Fit a heatsink case or the official active cooler for 24/7 duty |
| 512MB to 16GB of RAM | Keep browser layouts light. 4GB is the sensible floor for web content |
| Xibo and ScreenCloud do not support it | Pick a CMS with a real Pi player before you buy the hardware |
Raspberry Pi Model Comparison
Models worth buying in 2026
| Feature | Pi 5 | Pi 4 Model B | Pi 3B / 3B+ | Pi Zero 2 W |
|---|---|---|---|---|
| Price | $50 (2GB) to $120 (16GB) | $35 (1GB) to $75 (8GB) | $35 | $15 |
| CPU | Quad A76 2.4GHz | Quad A72 1.8GHz | Quad A53 1.2 to 1.4GHz | Quad A53 1GHz |
| RAM | 2/4/8/16GB | 1/2/4/8GB | 1GB | 512MB |
| Video out | 2x micro-HDMI, dual 4K at 60Hz | 2x micro-HDMI, dual 4K at 30Hz or one at 60Hz | 1x full-size HDMI, 1080p | 1x mini-HDMI, 1080p |
| Hardware decode | H.265 to 4K 60fps, no H.264 block | H.265 to 4K 60fps, H.264 to 1080p60 | H.264 to 1080p | H.264 to 1080p |
| Storage | microSD, USB, NVMe via an M.2 HAT | microSD, USB | microSD | microSD |
| Ethernet | Gigabit | Gigabit | About 300Mbps, shared with USB 2.0 | None |
| Wi-Fi | 802.11ac | 802.11ac | 802.11ac | 802.11n, 2.4GHz only |
| Power | 5V/5A USB-C (27W) | 5V/3A USB-C | 5V/2.5A micro-USB | 5V/1.2A micro-USB |
| Verdict | Buy for 4K, web-heavy or interactive screens | Buy for 1080p and 4K at 30Hz, the value pick | Deploy stock you own, 1080p only | Images and video only |
Which model for which job
Raspberry Pi 5 for 4K at 60Hz, two screens from one board, video walls, WebGL and any player that is a full browser. The 4GB model is enough. The 8GB and 16GB models only help heavy web layouts and long playlists.
Raspberry Pi 4 with 4GB for standard 1080p signage, menu boards and 4K at 30Hz. This is still the price and performance sweet spot for most fleets.
Raspberry Pi 3B and 3B+ run 1080p images, video and simple layouts, and Anthias, PiSignage and Screenly all still support them. Deploy boards you already own, but do not buy more: Ethernet shares the USB 2.0 bus and the CPU struggles with modern web content.
Raspberry Pi Zero 2 W plays images and video only. PiSignage's Zero 2 W image states that limit plainly, so do not plan HTML, multi-zone or ticker layouts on it. Use it for shelf labels and small info panels.
Hardware Setup
Essential Components
Core components checklist:
| Part | Why it matters | Cost |
|---|---|---|
| Raspberry Pi 5, or Pi 4 with 4GB | 4GB is the floor for browser-based players | $35 to $80 |
| Official power supply | 27W USB-C for the Pi 5, 15W for the Pi 4. Weak supplies cause random reboots that look like software faults | $8 to $14 |
| micro-HDMI to HDMI cable | The Pi 4 and Pi 5 have micro-HDMI ports, not full-size. The Zero 2 W uses mini-HDMI. Buy the cable rather than a dongle that hangs off the port | $6 to $15 |
| A2-rated microSD card, 32GB or larger | Or skip the card and boot from USB or NVMe. This is the part that fails | $10 to $20 |
| Case with a heatsink, or the official active cooler | Needed for 24/7 duty in any room above about 25°C | $10 to $30 |
| Worth adding | ||
| USB SSD, or NVMe with an M.2 HAT on the Pi 5 | 5 to 10 times the working life of a card, and faster boots | $30 to $60 |
| PoE HAT | One cable for power and data, plus remote power cycling from the switch | $20 to $30 |
| Real-time clock module | Keeps schedules correct after an offline reboot. The Pi 5 has an RTC connector on board | $5 to $10 |
| USB Wi-Fi adapter with an external antenna | Only if the Pi sits inside a metal enclosure | $15 to $30 |
Budget $100 to $200 per endpoint, display excluded.
Power Supply Considerations
Use the official supply, or an equivalent from a named brand. Phone chargers sag under load, and the result is a sign that reboots once a week for no visible reason.
| Model | Minimum | Recommended | Connector |
|---|---|---|---|
| Pi 5 | 5V/3A | 5V/5A (27W) USB-C PD | USB-C. Below 5A the Pi 5 limits current to attached USB devices |
| Pi 4 | 5V/2.5A | 5V/3A (15W) | USB-C |
| Pi 3B+ | 5V/2A | 5V/2.5A | micro-USB |
| Pi Zero 2 W | 5V/1A | 5V/1.2A | micro-USB |
Power over Ethernet earns its cost in commercial installs:
- One cable for power and data
- Remote power cycling from the switch, which clears most faults without a site visit
- No power adapter for a cleaner to unplug
The Pi 5 needs a PoE HAT designed for the Pi 5 board. The older Pi 4 PoE+ HAT does not fit.
Storage: the decision that decides reliability
The microSD card is the number one failure mode of an always-on Raspberry Pi sign. A player that writes logs and caches media all day wears out a cheap card in 12 to 24 months. The symptom is a frozen screen, or a Pi that boots to a read-only filesystem. Fix it in one of three ways, best first.
1. Boot from USB or NVMe. A Pi 4 or Pi 5 boots from a USB SSD with no extra hardware, and a Pi 5 also takes an NVMe drive through an M.2 HAT on the PCIe connector. Expect 5 years or more of service instead of 1 or 2.
# Enable USB boot on a Pi 4 or Pi 5
sudo raspi-config
# Advanced Options > Boot Order > USB Boot
2. Buy an A2-rated card. A2 cards cope with the small random writes a signage player generates. High-endurance lines such as Samsung PRO Endurance and SanDisk Max Endurance, or A2 cards such as Samsung EVO Select and Kingston Canvas Go Plus, are safe picks at 32GB or 64GB. Avoid unbranded cards and anything below A1 outright.
3. Make the filesystem read-only. With the overlay filesystem enabled, nothing is written to the boot media at all, so a power cut cannot corrupt it. See read-only filesystem below.
Display Connections
Pi 4 Display Outputs:
┌─────────────────────────────────────────────────────────────────────┐
│ micro-HDMI 0 ──────► Display 1 (Primary) │
│ └── Up to 4K@60Hz or 4K@30Hz with HDR │
│ │
│ micro-HDMI 1 ──────► Display 2 (Secondary) │
│ └── Up to 4K@30Hz │
│ │
│ Note: Total pixel rate limited to ~4K@60 equivalent │
│ Dual 4K@30 = OK │
│ Dual 1080p@60 = OK │
│ 4K@60 + 1080p@60 = May have issues │
└─────────────────────────────────────────────────────────────────────┘
Pi 5 Display Outputs:
┌─────────────────────────────────────────────────────────────────────┐
│ micro-HDMI 0 ──────► Display 1 (Primary) │
│ └── Up to 4K@60Hz HDR │
│ │
│ micro-HDMI 1 ──────► Display 2 (Secondary) │
│ └── Up to 4K@60Hz HDR │
│ │
│ Full dual 4K@60 supported simultaneously │
└─────────────────────────────────────────────────────────────────────┘
Thermal Management
24/7 operation requires active cooling:
Temperature Thresholds:
├── 0-50°C → Normal operation
├── 50-60°C → Warm but acceptable
├── 60-70°C → Add cooling
├── 70-80°C → Throttling begins
└── 80°C+ → Heavy throttling, reliability concerns
Recommended Cooling Solutions:
├── Passive heatsink case (Flirc, Argon NEO)
│ └── Good for moderate environments, silent
│
├── Active fan case (Argon ONE, official case)
│ └── Best for warm environments, small noise
│
└── Industrial enclosure with fan
└── Required for outdoor/harsh environments
Operating System Options
Raspberry Pi OS (Recommended)
The official OS optimized for Pi hardware:
# Download Raspberry Pi Imager
# https://www.raspberrypi.com/software/
# Configuration via Imager:
# - Enable SSH
# - Set hostname
# - Configure WiFi
# - Set locale/timezone
# - Create user account
# Post-install steps that matter for signage:
sudo raspi-config
# - Display Options > Screen Blanking > No
# - Advanced Options > Boot Order > USB Boot (if booting from an SSD)
# - Performance Options > Overlay File System (read-only root)
# - System Options > Boot / Auto Login > Desktop Autologin (needed for kiosk mode)
# gpu_mem is obsolete: the Pi 5 ignores it and the Pi 4 allocates on demand
Desktop vs Lite:
| Feature | Raspberry Pi OS Desktop | Raspberry Pi OS Lite |
|---|---|---|
| GUI | Wayland desktop, labwc on current images | None, command line only |
| Browser | Chromium included | Install manually |
| Size | ~4GB | ~500MB |
| RAM Usage | ~400MB idle | ~100MB idle |
| Use Case | Chromium-based signage | Custom player apps |
Alternative Operating Systems
Diet Pi - Ultra-lightweight:
# Minimal footprint, ideal for simple players
# https://dietpi.com/
# Advantages:
# - ~50MB RAM usage
# - Faster boot times
# - Automated software installation
Ubuntu Server - Enterprise familiar:
# Good for organizations standardized on Ubuntu
# 64-bit only, requires Pi 4 2GB+ or Pi 5
# Install:
# Use Raspberry Pi Imager > Other > Ubuntu Server
Yocto/Buildroot - Custom embedded:
# Build minimal custom OS
# For OEMs and high-volume deployments
# Smallest footprint, longest boot times during development
Signage software for the Raspberry Pi
Which platforms have an official Pi player
Nine of the 14 platforms in the player compatibility matrix ship an official Raspberry Pi image or package. Prices below are published 2026 list rates, verified September 2026.
| Platform | Raspberry Pi support | Price in 2026 |
|---|---|---|
| DigitalSignage.com SignPlayer | Install script for Raspberry Pi OS 64-bit, tuned for the Pi 5 | First 3 screens free forever, no credit card, no ads, no watermark, then $3 per screen per month. A one-time $895 mediaSERVER covers on-premise networks |
| Anthias (formerly Screenly OSE) | Pi 5 and Pi 4 recommended, Pi 3B and 3B+ supported, 64-bit x86 also works | Free and open source. Each Pi is managed on its own, with no central cloud |
| PiSignage | Its core product. Images for the Pi 3, 4, 5 and Zero 2 W, which plays images and video only | 2 players free, then $35 per player in year one and $20 a year after |
| Yodeck | Pi 4 and Pi 5 images, or Yodeck's own preconfigured Pi player | $8 Basic, $12 Premium, $16 Enterprise per screen per month. No permanent free tier for accounts created since March 2, 2026, only a 30-day trial |
| OptiSigns | ARM Linux build | 3 screens free with OptiSigns branding shown on screen, then $10 to $30 per screen per month |
| Rise Vision | Rise Player for Raspberry Pi OS | About $11 per display per month |
| PosterBooking | PosterBooking OS image, or a .deb package | 10 screens free for 3 months with a watermark, then from $52 per month for 10 screens |
| Screenly | ScreenlyOS flashed to a Pi 3B, 3B+, 4 or 5 | Commercial, priced per screen |
| TelemetryTV | TelemetryOS installs on the Pi | Commercial, priced per screen |
| NoviSign | No Pi package published. Its Linux support is scripts that run its web player in Chrome | About $18 to $20 per screen per month |
| Xibo | No Pi player. The Linux player is a 64-bit x86 snap, and Xibo documents the Pi as unsupported | Self-hosted CMS free, Xibo Cloud from $4.90 per display per month |
| ScreenCloud | No Pi player, stated explicitly | From $20 per screen per month, trial only |
| ChannelOS, ScreenTinker | Chromium in kiosk mode on the Pi, pointed at their web player | ChannelOS is 1 screen free forever with a ChannelOS banner, then $5 to $6 |
info-beamer is a further Pi-only commercial player, aimed at scripted and interactive installs. For every free tier side by side, see best free digital signage software in 2026. For prices across all 11 hosted vendors, see digital signage software in 2026.
Installing SignPlayer on a Pi
- Flash Raspberry Pi OS 64-bit with Raspberry Pi Imager. Set the hostname, SSH and Wi-Fi in Imager's settings before you write the card.
- Boot the Pi and confirm it reaches the network.
- Create a free DigitalSignage.com account, then open the Downloads page inside the account.
- Copy the Raspberry Pi install command shown there and run it over SSH.
- The installer registers the player as a service, so the Pi returns to its playlist after every reboot.
The first 3 screens stay free forever with no watermark, so one Pi and a spare TV are enough to test the whole workflow before you spend anything.
The DIY route: Chromium in kiosk mode
Any CMS with a web player runs on a Pi in Chromium kiosk mode. You get no remote restart, no device health reporting and no offline cache unless the CMS provides one, so treat this as the fallback rather than the plan.
The binary is chromium-browser on Raspberry Pi OS and chromium on Debian or Ubuntu. Drop --incognito from older recipes: it disables the disk cache, which is the only thing keeping the screen alive during a network blip.
A. Start it from the desktop session
# The flags that matter for signage
chromium-browser \
--kiosk \
--noerrdialogs \
--disable-infobars \
--disable-session-crashed-bubble \
--disable-features=TranslateUI \
--autoplay-policy=no-user-gesture-required \
--check-for-update-interval=31536000 \
https://your-signage-url.com
Put that command where your image looks for it:
| Raspberry Pi OS image | Autostart file |
|---|---|
| Bookworm with labwc (current desktop images) | ~/.config/labwc/autostart |
| Bookworm with wayfire (earlier Bookworm images) | the [autostart] section of ~/.config/wayfire.ini |
| Bullseye, or any X session | ~/.config/autostart/kiosk.desktop |
B. Run it as a systemd service (Lite images with an X session)
sudo tee /etc/systemd/system/kiosk.service > /dev/null << 'EOF'
[Unit]
Description=Chromium Kiosk
Wants=graphical.target
After=graphical.target
[Service]
Environment=DISPLAY=:0
Environment=XAUTHORITY=/home/pi/.Xauthority
Type=simple
ExecStart=/usr/bin/chromium-browser --kiosk --noerrdialogs --disable-infobars --disable-session-crashed-bubble --autoplay-policy=no-user-gesture-required https://your-signage-url.com
Restart=always
RestartSec=5
User=pi
Group=pi
[Install]
WantedBy=graphical.target
EOF
sudo systemctl enable --now kiosk
Restart=always is the important line. Without it, one crash leaves a black screen until somebody visits the site.
Video encoding for the Pi
The decoder, not the CPU, decides what plays smoothly.
| Board | H.265 (HEVC) | H.264 |
|---|---|---|
| Pi 5 | Hardware, up to 4K at 60fps | Software only. Fine at 1080p, stutters at 4K |
| Pi 4 | Hardware, up to 4K at 60fps | Hardware, up to 1080p at 60fps |
| Pi 3B / 3B+ | Not supported | Hardware, up to 1080p |
Encode 4K as H.265 at 25 to 35 Mbps, and 1080p as H.264 at 8 to 12 Mbps for the widest compatibility. 30fps is enough for nearly all signage and halves the decode load. Keep audio as AAC.
# Hardware-accelerated playback with mpv
sudo apt install mpv
mpv --fullscreen --loop-file=inf --no-osd-bar --hwdec=auto /path/to/video.mp4
# ~/.config/mpv/mpv.conf for a standalone player
hwdec=auto-safe
vo=gpu
gpu-context=wayland # use drm when running without a desktop session
fullscreen=yes
loop-file=inf
VLC works too and is easier to script, but mpv gives more predictable hardware decoding on Bookworm. omxplayer was removed years ago and is not on current images.
The three settings that catch everyone
Nearly every first Raspberry Pi sign gets stuck on one of these three.
1. Overscan: a black border, or content cropped off the edges
This is almost always the television, not the Pi. Set the TV's picture size to Just Scan, Screen Fit, Full Pixel or 1:1, depending on the brand. Consumer sets overscan HDMI by roughly 3% by default and crop your top and bottom rows.
If the image is still wrong on a legacy Bullseye image, disable_overscan=1 in /boot/firmware/config.txt still applies. On Bookworm with the KMS driver it does not, so set the exact mode on the kernel command line instead.
sudo nano /boot/firmware/cmdline.txt
# Append to the existing single line, with no line break:
video=HDMI-A-1:1920x1080@60D
2. Screen blanking: the display goes black after 10 minutes
Raspberry Pi OS blanks the screen by default.
sudo raspi-config
# Display Options > Screen Blanking > No
sudo reboot
On an X session you can also disable it for the current session:
xset s off
xset s noblank
xset -dpms
Then check the television's own energy-saving timer and its "no signal" sleep setting. A TV that sleeps on its own hides a perfectly healthy player.
3. Auto-start: the player does not come back after a reboot
A signage Pi has to return to its playlist with nobody present. Vendor players install a service that does this. A DIY Chromium setup does not, so add it yourself using one of the autostart routes above, with Restart=always if you use systemd.
Test it the hard way: pull the power, plug it back in, and watch the screen come up on its own. Then add a nightly reboot and the hardware watchdog described below, so a hung player recovers without a site visit.
System Optimization
Boot Time Optimization
Reduce boot time from 40+ seconds to under 15 seconds:
# Disable unnecessary services
sudo systemctl disable bluetooth
sudo systemctl disable hciuart
sudo systemctl disable avahi-daemon
sudo systemctl disable triggerhappy
sudo systemctl disable ModemManager
# Edit /boot/firmware/config.txt
sudo nano /boot/firmware/config.txt
# Add/modify:
disable_splash=1
boot_delay=0
dtoverlay=disable-bt
# Edit /boot/firmware/cmdline.txt - add to end of line:
quiet loglevel=0 logo.nologo vt.global_cursor_default=0
# Disable boot messages
sudo nano /etc/rc.local
# Add before 'exit 0':
dmesg --console-off
# Result: 10-15 second boot time
Read-Only Filesystem
Prevent SD card corruption from power loss:
# Method 1: OverlayFS (Built into Raspberry Pi OS)
sudo raspi-config
# Performance Options > Overlay File System > Enable
# Method 2: Manual setup
# Edit /etc/fstab
sudo nano /etc/fstab
# Modify root entry:
/dev/mmcblk0p2 / ext4 defaults,noatime,ro 0 1
# Add tmpfs for writable directories:
tmpfs /tmp tmpfs defaults,noatime,nosuid,size=100m 0 0
tmpfs /var/log tmpfs defaults,noatime,nosuid,mode=0755,size=100m 0 0
tmpfs /var/tmp tmpfs defaults,noatime,nosuid,size=50m 0 0
# Create script for temporary write access
sudo cat > /usr/local/bin/rw << 'EOF'
#!/bin/bash
sudo mount -o remount,rw /
echo "Filesystem is now read-write"
EOF
sudo chmod +x /usr/local/bin/rw
sudo cat > /usr/local/bin/ro << 'EOF'
#!/bin/bash
sudo mount -o remount,ro /
echo "Filesystem is now read-only"
EOF
sudo chmod +x /usr/local/bin/ro
Memory and GPU settings
# gpu_mem is obsolete on current boards. The Pi 5 ignores it, and the Pi 4
# with the KMS driver allocates graphics memory on demand. Leave it unset
# unless you are maintaining a legacy Bullseye image.
# Reduce swap pressure
sudo nano /etc/sysctl.conf
# Add:
vm.swappiness=10
# Drop services a sign never needs
sudo systemctl disable cups cups-browsed bluetooth avahi-daemon triggerhappy ModemManager
# Watch usage
free -h
htop
Network configuration
Raspberry Pi OS Bookworm manages the network with NetworkManager, so /etc/dhcpcd.conf and wpa_supplicant.conf no longer have any effect. Use nmcli.
# Static IP on ethernet
sudo nmcli connection modify "Wired connection 1" \
ipv4.method manual \
ipv4.addresses 192.168.1.100/24 \
ipv4.gateway 192.168.1.1 \
ipv4.dns "192.168.1.1 1.1.1.1"
sudo nmcli connection up "Wired connection 1"
# Join a WPA2 network
sudo nmcli device wifi connect "SignageWiFi" password "network-password"
# Join WPA2-Enterprise (PEAP with MSCHAPv2)
sudo nmcli connection add type wifi con-name signage-ent ifname wlan0 \
ssid "CorporateNetwork" -- \
wifi-sec.key-mgmt wpa-eap \
802-1x.eap peap \
802-1x.phase2-auth mschapv2 \
802-1x.identity "signage-01" \
802-1x.password "device-password"
# Turn off Wi-Fi power saving, the usual cause of overnight dropouts
sudo nmcli connection modify "SignageWiFi" 802-11-wireless.powersave 2
Use ethernet wherever you can. Wi-Fi power saving, roaming between access points and DHCP lease changes cause most of the "the screen went blank overnight" tickets.
Remote Management
SSH Access
# Enable SSH
sudo systemctl enable ssh
sudo systemctl start ssh
# Generate SSH key for passwordless access
ssh-keygen -t ed25519 -C "signage-admin"
ssh-copy-id pi@signage-player.local
# Secure SSH configuration
sudo nano /etc/ssh/sshd_config
# Modify:
PermitRootLogin no
PasswordAuthentication no # After adding SSH key
MaxAuthTries 3
VNC for Remote Desktop
# Enable VNC via raspi-config
sudo raspi-config
# Interface Options > VNC > Enable
# Or install manually
sudo apt install realvnc-vnc-server
# For headless operation (no monitor needed)
# Edit /boot/firmware/config.txt
hdmi_force_hotplug=1
hdmi_group=2
hdmi_mode=82 # 1080p 60Hz
Ansible for Fleet Management
# ansible/inventory.ini
[signage_players]
player-001 ansible_host=192.168.1.100
player-002 ansible_host=192.168.1.101
player-003 ansible_host=192.168.1.102
[signage_players:vars]
ansible_user=pi
ansible_ssh_private_key_file=~/.ssh/signage_key
# ansible/playbooks/update-content.yml
---
- name: Update signage content
hosts: signage_players
become: yes
tasks:
- name: Sync content directory
synchronize:
src: /content/
dest: /home/pi/signage-content/
delete: yes
- name: Restart player service
systemd:
name: signage-player
state: restarted
# Run playbook
ansible-playbook -i inventory.ini playbooks/update-content.yml
Watchdog for Reliability
# Enable hardware watchdog
sudo nano /boot/firmware/config.txt
# Add:
dtparam=watchdog=on
# Install and configure watchdog daemon
sudo apt install watchdog
sudo nano /etc/watchdog.conf
# Uncomment/modify:
watchdog-device = /dev/watchdog
watchdog-timeout = 15
max-load-1 = 24
interface = eth0
ping = 8.8.8.8
# Enable service
sudo systemctl enable watchdog
sudo systemctl start watchdog
# The Pi will automatically reboot if:
# - System becomes unresponsive
# - Network interface fails
# - Cannot ping external host
# - CPU load exceeds threshold
Security Hardening
Basic Security
# Change default password
passwd
# Update system
sudo apt update && sudo apt upgrade -y
# Enable automatic security updates
sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
# Configure firewall
sudo apt install ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw allow 80/tcp # If hosting local content
sudo ufw allow 443/tcp # HTTPS
sudo ufw enable
# Disable unused interfaces
sudo rfkill block bluetooth # If not using Bluetooth
Advanced Security
# Disable root login
sudo passwd -l root
# Fail2ban for SSH protection
sudo apt install fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
# Modify:
[sshd]
enabled = true
maxretry = 3
bantime = 3600
# Log monitoring
sudo apt install logwatch
# Configure daily email reports
# File integrity monitoring
sudo apt install aide
sudo aideinit
# Run periodic checks
sudo aide --check
Troubleshooting
Common issues
Display not detected, or the wrong resolution
On Bookworm the legacy hdmi_* options in config.txt are ignored, because the Pi uses the KMS driver. Force the mode from the kernel command line instead.
sudo nano /boot/firmware/cmdline.txt
# Append to the existing single line:
video=HDMI-A-1:1920x1080@60D
# The trailing D forces digital output even when the TV reports no EDID,
# which is what happens when the Pi boots before the screen is switched on.
# Inspect what the Pi actually sees
kmsprint # sudo apt install kms++-utils
wlr-randr # on a Wayland desktop session
tvservice and vcgencmd get_config hdmi_mode belong to the old firmware stack and no longer report anything useful.
Video stutters
# Check for thermal or voltage throttling first
vcgencmd measure_temp
vcgencmd get_throttled # 0x0 is healthy, anything else means heat or power
# Then check the codec. No Pi has a hardware H.264 decoder at 4K,
# and the Pi 5 has no H.264 decoder at all. Re-encode 4K content to H.265.
# vcgencmd codec_enabled is a legacy call and means nothing on the Pi 4 or Pi 5.
# Increase buffering for network-served media
vlc --file-caching=5000
Card corruption
# Check the filesystem
sudo fsck -y /dev/mmcblk0p2
# Prevention, in order of effect:
# 1. Boot from USB or NVMe instead of a card
# 2. Enable the read-only overlay filesystem
# 3. Use an A2 or high-endurance card from a named brand
# 4. Fit a PoE HAT or a UPS so power cuts are clean
Wi-Fi drops overnight
# Bookworm uses NetworkManager, so wireless-power and wpa_supplicant.conf
# edits do nothing. Turn power saving off on the connection itself.
sudo nmcli connection modify "SignageWiFi" 802-11-wireless.powersave 2
sudo nmcli connection up "SignageWiFi"
# Check signal strength
nmcli device wifi list
iw dev wlan0 link
Monitoring Script
#!/bin/bash
# /usr/local/bin/signage-health-check.sh
LOG_FILE="/var/log/signage-health.log"
# Gather system info
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
TEMP=$(vcgencmd measure_temp | cut -d'=' -f2)
CPU=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}')
MEM=$(free | grep Mem | awk '{print ($3/$2)*100}')
DISK=$(df -h / | awk 'NR==2 {print $5}')
THROTTLE=$(vcgencmd get_throttled | cut -d'=' -f2)
# Check for issues
ISSUES=""
[[ "${TEMP%\'C}" > "70" ]] && ISSUES+="HIGH_TEMP "
[[ "${THROTTLE}" != "0x0" ]] && ISSUES+="THROTTLED "
[[ "${DISK%\%}" -gt 90 ]] && ISSUES+="DISK_FULL "
# Log status
echo "$TIMESTAMP | Temp: $TEMP | CPU: $CPU% | Mem: ${MEM%.*}% | Disk: $DISK | Status: ${ISSUES:-OK}" >> $LOG_FILE
# Alert if issues
if [ -n "$ISSUES" ]; then
# Send alert (customize notification method)
curl -X POST https://your-monitoring-endpoint.com/alert \
-d "player=$(hostname)&issues=$ISSUES"
fi
Frequently asked questions
Which Raspberry Pi model is best for digital signage?
The Raspberry Pi 5 is the best choice in 2026, and a Pi 4 with 4GB of RAM is the value pick for 1080p screens. The Pi 5 drives two 4K displays at 60Hz and handles web-heavy layouts. The Pi 4 drives one 4K display at 60Hz, or two at 30Hz. A Pi 3B or 3B+ still works for 1080p images and video, so deploy boards you already own. The Pi Zero 2 W plays images and video only, so do not use it for HTML layouts.
How do I stop the microSD card killing my Raspberry Pi sign?
The card is the number one failure point in an always-on Pi. Buy an A2-rated or high-endurance card from a named brand, or skip cards and boot from a USB SSD on a Pi 4, or an NVMe drive on a Pi 5 with an M.2 HAT. Then turn on the read-only overlay filesystem in raspi-config, so nothing writes to the boot media at all. Expect 12 to 24 months from a cheap card under constant writes, and 5 years or more from an SSD.
Can a Raspberry Pi play 4K video for digital signage?
Yes, if you encode in H.265. The Pi 4 and Pi 5 both have a hardware H.265 decoder that handles 4K at 60fps. Neither decodes H.264 at 4K in hardware: the Pi 4 stops at 1080p60 and the Pi 5 has no H.264 block at all, so 4K H.264 falls back to software and stutters. Encode 4K as H.265 at 25 to 35 Mbps, and 1080p as H.264 at 8 to 12 Mbps.
Which digital signage software runs on a Raspberry Pi?
Nine platforms ship an official Pi player: DigitalSignage.com SignPlayer (first 3 screens free forever, then $3 per screen per month), Anthias (free), PiSignage ($35 per player in year one, $20 a year after), Yodeck (from $8 per screen per month), OptiSigns (ARM Linux build, from $10), Rise Vision (about $11), PosterBooking, Screenly and TelemetryTV. Xibo and ScreenCloud state that they do not support the Pi. Anything else with a web player can run in Chromium in kiosk mode, but you build and maintain the lockdown yourself.
How many displays can one Raspberry Pi drive?
A Pi 4 or Pi 5 has two micro-HDMI outputs and drives two displays. The Pi 5 runs both at 4K and 60Hz. The Pi 4 runs both at 4K and 30Hz, or one at 4K and 60Hz. For a video wall of more than two panels, use one Pi per screen, or a wall controller fed by a single HDMI input.
How long does a Raspberry Pi last running signage 24/7?
Three to five years is normal when the Pi is cooled and powered properly. The parts that fail are the microSD card first, then the power supply, then the board. Use a heatsink case or the official active cooler, use the official power supply, and add a nightly scheduled reboot plus the hardware watchdog so a hung player recovers on its own.
Related guides
- Player compatibility matrix 2026: which CMS runs on the Pi, and on every other player.
- Digital signage software in 2026: 11 vendors compared on price, free plans and players.
- Best free digital signage software in 2026: every free tier, with the catches.
- Android digital signage and Chrome OS digital signage for the other low-cost player routes.
Raspberry Pi provides an excellent platform for cost-effective digital signage deployments. For professional signage software optimized for Pi, explore the SignageStudio platform or contact MediaSignage for enterprise solutions.
Try it on your own screens, free
DigitalSignage.com, which publishes this guide, runs a permanent free plan: the first 3 screens are free forever (no credit card, no ads, no watermark, no time limit), then from $3 per screen per month with volume pricing via a public calculator. The free SignPlayer runs on Windows, Mac, Linux, Android and Android TV, Chrome OS, Raspberry Pi, iPad or any browser, so the hardware you already own usually works. Start free · 2026 pricing · How 11 vendors compare on price