Setting up Raspberry Pi kiosk mode creates a dedicated touchscreen information display that shows a single full-screen application — a web dashboard, a menu board, a check-in system, or a wayfinding display. The Pi boots directly into the application with no desktop, taskbar, or way for users to exit. This guide covers the complete setup from OS configuration to Chromium kiosk and touchscreen calibration.
Table of Contents
- Kiosk Use Cases
- Hardware Setup
- OS Configuration for Kiosk
- Chromium Kiosk Mode Setup
- Touchscreen Configuration
- Reliability and Auto-Recovery
- Frequently Asked Questions
- Conclusion
Kiosk Use Cases
Pi kiosks appear in more places than you might expect:
- Restaurant menu boards: Touchscreen ordering systems or display-only menus that update from a central CMS
- Visitor check-in: Office lobbies, clinics, and co-working spaces where visitors sign in on a tablet-style interface
- Dashboard displays: Factory floors showing production metrics, sales offices showing revenue dashboards, or call centres showing queue status
- Wayfinding: Building directories in malls, hospitals, and large offices
- Point of information: Museums, tourist centres, and educational institutions
- Queue management: Display token numbers and estimated wait times
Hardware Setup
Recommended components:
- Raspberry Pi 5 (4GB) — handles web applications smoothly
- Touchscreen display (7-10 inch DSI or HDMI) — DSI is preferred as it keeps HDMI free
- Industrial case or VESA mount — for clean installation
- USB-C power supply (5V/5A)
- MicroSD card (32GB, A2-rated)
For non-touch displays (information boards, dashboards), any HDMI monitor works. For interactive kiosks, capacitive touchscreens provide better responsiveness than resistive ones.
OS Configuration for Kiosk
Start with Raspberry Pi OS Lite (no desktop) for the lightest footprint, or Raspberry Pi OS Desktop if you need Chromium’s hardware acceleration.
Step 1: Install base packages
sudo apt update && sudo apt upgrade -y
sudo apt install -y --no-install-recommends xserver-xorg x11-xserver-utils xinit openbox chromium-browser unclutter
Step 2: Disable screen blanking and power management
# Edit /etc/xdg/openbox/autostart or create ~/.config/openbox/autostart
xset s off # Disable screensaver
xset s noblank # Disable screen blanking
xset -dpms # Disable DPMS (Display Power Management)
unclutter -idle 0.5 -root & # Hide mouse cursor after 0.5 seconds
Step 3: Auto-login
sudo raspi-config
# Select System Options > Boot / Auto Login > Console Autologin
Step 4: Auto-start X server and kiosk
Add to ~/.bash_profile:
[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && startx -- -nocursor
Chromium Kiosk Mode Setup
Chromium’s kiosk mode removes all browser UI — no address bar, no tabs, no menu. The web page fills the entire screen.
Create or edit ~/.config/openbox/autostart:
# Disable screen management
xset s off
xset s noblank
xset -dpms
# Hide cursor
unclutter -idle 0.5 -root &
# Wait for network
sleep 5
# Launch Chromium in kiosk mode
chromium-browser
--kiosk
--noerrdialogs
--disable-infobars
--disable-session-crashed-bubble
--disable-restore-session-state
--incognito
--no-first-run
--start-fullscreen
--window-size=1024,600
--window-position=0,0
--check-for-update-interval=604800
--disable-pinch
'https://your-dashboard-url.com'
Key Chromium flags explained:
--kiosk: Full-screen with no browser UI--noerrdialogs: Suppresses error popups--disable-session-crashed-bubble: Hides “Chromium did not shut down correctly” messages--incognito: No saved state, clean start every boot--disable-pinch: Prevents accidental zoom on touchscreens
Reboot the Pi. It should auto-login, start X, launch Chromium in kiosk mode, and display your web page full-screen with no UI elements visible.
Touchscreen Configuration
DSI displays (Waveshare, official): These are typically plug-and-play. The touchscreen driver is included in Raspberry Pi OS. Verify touch works by tapping the screen — Chromium should respond to touches as clicks.
Rotation (for portrait mode):
# For Pi 5, add to /boot/firmware/config.txt:
display_hdmi_rotate=1 # For HDMI: 0=normal, 1=90°, 2=180°, 3=270°
# For DSI displays:
display_lcd_rotate=1
After rotating the display, you may need to rotate the touch input to match:
# Create /etc/X11/xorg.conf.d/40-libinput.conf
Section "InputClass"
Identifier "calibration"
MatchIsTouchscreen "on"
Option "CalibrationMatrix" "0 1 0 -1 0 1 0 0 1"
EndSection
On-screen keyboard: For kiosks that need text input (search, check-in forms), install an on-screen keyboard:
sudo apt install -y matchbox-keyboard
Or use a web-based virtual keyboard in your web application — this gives you more control over appearance and behaviour.
Reliability and Auto-Recovery
A kiosk must recover from every failure automatically — no one will be there to press buttons or restart software.
Watchdog timer:
# Enable hardware watchdog
sudo apt install -y watchdog
sudo systemctl enable watchdog
# Edit /etc/watchdog.conf:
watchdog-device = /dev/watchdog
max-load-1 = 24
watchdog-timeout = 15
The hardware watchdog reboots the Pi if the system becomes unresponsive.
Auto-restart Chromium on crash:
Wrap Chromium in a loop in your autostart script:
while true; do
chromium-browser --kiosk --noerrdialogs 'https://your-url.com'
sleep 5 # Wait 5 seconds before restarting
done &
Scheduled daily reboot:
# Add to crontab (sudo crontab -e)
0 4 * * * /sbin/reboot # Reboot at 4 AM daily
Read-only filesystem: For maximum SD card reliability, mount the root filesystem as read-only. This prevents corruption from power cuts — critical in Indian locations with unreliable power.
Auto-refresh: Add a meta refresh tag to your web application or use JavaScript:
setTimeout(function() { location.reload(); }, 300000); // Refresh every 5 minutes
Frequently Asked Questions
Can I update the kiosk content remotely?
Yes. If your kiosk displays a web page, simply update the page on your web server — the kiosk refreshes automatically. For local content, use SSH or Tailscale VPN to access the Pi remotely and update files.
How do I prevent users from exiting kiosk mode?
Chromium’s --kiosk flag disables keyboard shortcuts (Alt+F4, Ctrl+W). Unclutter hides the mouse cursor. Disabling the on-screen keyboard (unless explicitly needed) prevents text input. For physical security, use a case that covers all ports except power and HDMI.
Can a Raspberry Pi drive a 4K display in kiosk mode?
Yes. The Pi 5 supports 4K at 60Hz. However, web page rendering at 4K resolution uses more GPU and CPU resources. For smooth performance, design your kiosk web page to be lightweight — avoid heavy animations, large images, and complex CSS.
How long can a Pi run continuously?
Indefinitely, with proper cooling and a quality power supply. Many Pi kiosks run for months or years between reboots. The primary reliability risk is SD card wear — mitigate this with a read-only filesystem or NVMe storage.
Can I display a Google Slides presentation in kiosk mode?
Yes. Publish your Google Slides presentation to the web (File > Share > Publish to Web). Use the auto-advance URL. Point Chromium at this URL in kiosk mode. Update slides in Google Slides — changes appear on the kiosk automatically.
Conclusion
A Raspberry Pi in kiosk mode is a versatile, affordable platform for information displays, interactive terminals, and digital signage. The setup takes 30-60 minutes, and with proper reliability measures (watchdog, auto-restart, read-only filesystem), the system runs unattended for months.
Whether you are deploying a restaurant menu, office dashboard, or visitor check-in system, the Pi 5 with a touchscreen provides a professional solution at a hobbyist price point.
Find Raspberry Pi boards and touchscreen displays at Zbotic’s Raspberry Pi collection — fast shipping across India.
Add comment