Skip to content

Install

One command installs the frame on a fresh Raspberry Pi and provisions the whole device. Make sure your Pi meets the requirements first. In short: Raspberry Pi OS Trixie Lite, on the network, reachable over SSH.

On the Pi (over SSH or at the console):

Terminal window
curl -fsSL https://github.com/MateEke/picture-frame/releases/latest/download/install.sh | sudo bash

That’s the whole thing. The installer:

  • detects the CPU architecture and downloads the matching release, verifying it with a minisign signature and a SHA-256 checksum
  • installs the system packages and sets up the kiosk: the compositor, the browser, the background service, the hostname, and the HDMI output
  • seeds a config.toml with sensible defaults
  • optionally configures a Wi-Fi recovery hotspot and an admin password

It’s safe to re-run: it re-applies the system setup but never overwrites an existing config.toml.

Unless you pass everything as flags, the installer prompts for three things. Each has a safe default, so you can press Enter through all of them.

  1. A Wi-Fi recovery hotspot. If you enable it, the frame raises its own access point when it can’t reach your network, so you can reconnect it from your phone if you move it or change your Wi-Fi, without digging out a keyboard. You choose the network name and an optional password.
  2. An admin password. Protects the web interface. Leave it blank to run unprotected on your home network, or set one and you’ll sign in on first visit. You can change this any time from the admin interface.
  3. Automatic OS security updates. On by default. It enables Debian’s security updates only, and never reboots on its own.

When it finishes, it offers to reboot. The HDMI output is pinned during install, so a reboot is needed to apply it:

Terminal window
sudo reboot

After the reboot, the frame starts on its own. It has no photos yet, so the screen shows just the clock and date until you add some.

To add photos and finish setting up, open the admin interface. Browse to your Pi’s hostname from any device on the network. The installer sets a unique hostname derived from the Pi’s Wi-Fi MAC, shown at the end of the install:

http://pictureframe-XXXX.local

If you set an admin password, you’ll be asked to sign in:

The sign-in screen for the admin interface

From there you can add photos, configure sensors, connect Home Assistant, and adjust how the frame looks. The User Manual walks through each part, and the configuration basics cover where settings live and how they’re applied.

The installer takes flags for unattended or customized setups. A few of the common ones:

FlagPurpose
--display-backend wlopm|vcgencmdScreen-power backend. wlopm (default) is recommended, but vcgencmd is a lighter legacy fallback. See Slideshow & display.
--ssid <name> / --ap-password <pw> / --no-apConfigure or disable the Wi-Fi recovery hotspot.
--app-password <pw>Set the admin password non-interactively.
--no-unattended-upgradesSkip enabling automatic OS security updates.
--version <tag>Install a specific release instead of the latest.
--non-interactive, --yesNever prompt. Use flags and defaults only.
--dry-runPrint every action without making changes.
--uninstallReverse an install, leaving config.toml and photos in place.

A fully unattended install looks like:

Terminal window
curl -fsSL https://github.com/MateEke/picture-frame/releases/latest/download/install.sh \
| sudo bash -s -- --yes --app-password 'choose-something' --ssid 'Frame-Setup'

Run install.sh --help for the complete list.

Built with Starlight