Skip to main content

Raspberry Pi Digital Signage Guide

Quick answer

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?

Advantages

AdvantageDescription
Cheap$35 to $80 for the board, against $200 to $600 for a commercial player
Low power5W to 15W, so the player costs a few dollars a year to run
SmallMounts behind the display or inside a VESA enclosure
OpenRuns any Linux player, or Chromium in kiosk mode, with no license fee
GPIOMotion sensors, buttons and relays for interactive or triggered content
Long availabilityRaspberry Pi has committed to building the Pi 4 and Pi 5 into the 2030s
Widely supported9 of 14 signage platforms ship an official Pi image or package

Limitations to consider

LimitationWhat to do about it
The microSD card is the top failure pointUse an A2-rated card, or boot from USB or NVMe, and turn on the read-only overlay
No hardware H.264 decode at 4KEncode 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 5Pre-encode content. Do not plan to transcode or stream a camera on the Pi itself
Dual 4K at 60Hz needs a Pi 5A Pi 4 drives one screen at 4K 60Hz, or two at 4K 30Hz
Throttles above 80°CFit a heatsink case or the official active cooler for 24/7 duty
512MB to 16GB of RAMKeep browser layouts light. 4GB is the sensible floor for web content
Xibo and ScreenCloud do not support itPick a CMS with a real Pi player before you buy the hardware

Raspberry Pi Model Comparison

Models worth buying in 2026

FeaturePi 5Pi 4 Model BPi 3B / 3B+Pi Zero 2 W
Price$50 (2GB) to $120 (16GB)$35 (1GB) to $75 (8GB)$35$15
CPUQuad A76 2.4GHzQuad A72 1.8GHzQuad A53 1.2 to 1.4GHzQuad A53 1GHz
RAM2/4/8/16GB1/2/4/8GB1GB512MB
Video out2x micro-HDMI, dual 4K at 60Hz2x micro-HDMI, dual 4K at 30Hz or one at 60Hz1x full-size HDMI, 1080p1x mini-HDMI, 1080p
Hardware decodeH.265 to 4K 60fps, no H.264 blockH.265 to 4K 60fps, H.264 to 1080p60H.264 to 1080pH.264 to 1080p
StoragemicroSD, USB, NVMe via an M.2 HATmicroSD, USBmicroSDmicroSD
EthernetGigabitGigabitAbout 300Mbps, shared with USB 2.0None
Wi-Fi802.11ac802.11ac802.11ac802.11n, 2.4GHz only
Power5V/5A USB-C (27W)5V/3A USB-C5V/2.5A micro-USB5V/1.2A micro-USB
VerdictBuy for 4K, web-heavy or interactive screensBuy for 1080p and 4K at 30Hz, the value pickDeploy stock you own, 1080p onlyImages 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:

PartWhy it mattersCost
Raspberry Pi 5, or Pi 4 with 4GB4GB is the floor for browser-based players$35 to $80
Official power supply27W 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 cableThe 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 largerOr 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 coolerNeeded 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 55 to 10 times the working life of a card, and faster boots$30 to $60
PoE HATOne cable for power and data, plus remote power cycling from the switch$20 to $30
Real-time clock moduleKeeps 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 antennaOnly 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.

ModelMinimumRecommendedConnector
Pi 55V/3A5V/5A (27W) USB-C PDUSB-C. Below 5A the Pi 5 limits current to attached USB devices
Pi 45V/2.5A5V/3A (15W)USB-C
Pi 3B+5V/2A5V/2.5Amicro-USB
Pi Zero 2 W5V/1A5V/1.2Amicro-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

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:

FeatureRaspberry Pi OS DesktopRaspberry Pi OS Lite
GUIWayland desktop, labwc on current imagesNone, command line only
BrowserChromium includedInstall manually
Size~4GB~500MB
RAM Usage~400MB idle~100MB idle
Use CaseChromium-based signageCustom 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.

PlatformRaspberry Pi supportPrice in 2026
DigitalSignage.com SignPlayerInstall script for Raspberry Pi OS 64-bit, tuned for the Pi 5First 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 worksFree and open source. Each Pi is managed on its own, with no central cloud
PiSignageIts core product. Images for the Pi 3, 4, 5 and Zero 2 W, which plays images and video only2 players free, then $35 per player in year one and $20 a year after
YodeckPi 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
OptiSignsARM Linux build3 screens free with OptiSigns branding shown on screen, then $10 to $30 per screen per month
Rise VisionRise Player for Raspberry Pi OSAbout $11 per display per month
PosterBookingPosterBooking OS image, or a .deb package10 screens free for 3 months with a watermark, then from $52 per month for 10 screens
ScreenlyScreenlyOS flashed to a Pi 3B, 3B+, 4 or 5Commercial, priced per screen
TelemetryTVTelemetryOS installs on the PiCommercial, priced per screen
NoviSignNo Pi package published. Its Linux support is scripts that run its web player in ChromeAbout $18 to $20 per screen per month
XiboNo Pi player. The Linux player is a 64-bit x86 snap, and Xibo documents the Pi as unsupportedSelf-hosted CMS free, Xibo Cloud from $4.90 per display per month
ScreenCloudNo Pi player, stated explicitlyFrom $20 per screen per month, trial only
ChannelOS, ScreenTinkerChromium in kiosk mode on the Pi, pointed at their web playerChannelOS 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

  1. 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.
  2. Boot the Pi and confirm it reaches the network.
  3. Create a free DigitalSignage.com account, then open the Downloads page inside the account.
  4. Copy the Raspberry Pi install command shown there and run it over SSH.
  5. 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 imageAutostart 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.

BoardH.265 (HEVC)H.264
Pi 5Hardware, up to 4K at 60fpsSoftware only. Fine at 1080p, stutters at 4K
Pi 4Hardware, up to 4K at 60fpsHardware, up to 1080p at 60fps
Pi 3B / 3B+Not supportedHardware, 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.


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

Try it on your own screens
First 3 screens free forever, no credit card, no ads. Works on the TV you already own with a $30 player, Raspberry Pi, Chrome OS, Windows or iPad. About two minutes to your first screen.
Create free accountSee 2026 pricing