Skip to content

v3.0.0

Latest

Choose a tag to compare

@dev-brewery dev-brewery released this 06 Oct 22:10
c768bde

What's New

This is the first stable release of the community-maintained fork of mrworf/photoframe: Python 3, Immich as the main photo source, and display handling for current Raspberry Pi OS.

Features

  • Immich photo service - display photos from your self-hosted Immich server. See README-Immich.md for setup.
  • HEIC/HEIF image support - Apple photo formats work out of the box
  • Works without tvservice - on current Raspberry Pi OS, where tvservice is gone, the display size is read from the framebuffer
  • Display health check - display diagnostics at startup where tvservice is not used, shown in the log report
  • Multi-architecture rgb565 - supports both 32-bit (armhf) and 64-bit (arm64) Raspberry Pi OS
  • Python 3 - complete migration from Python 2
  • SD card image - Raspberry Pi OS Lite (Bookworm) with photoframe preinstalled, attached to this release

New since v3.0.0-rc1

  • Album picker - a Browse button lists the albums on your Immich server (#61)
  • Forgiving album names - a name that has no exact match is matched ignoring upper and lower case (#55)
  • Retry with backoff - the Immich service waits and retries when the server or network is unreachable (#59)
  • Screen on/off over HTTP - /control/screenon and /control/screenoff, for home automation (#56)
  • Shutdown pin chosen automatically - GPIO 3 without the color sensor, GPIO 26 with it (#60)
  • The Immich configuration endpoint also accepts a JSON body (#58)
  • Migration script - migrate-from-mrworf.sh moves an existing mrworf/photoframe install to this fork's 3.0.0 release branch (target set in #81)

Fixed during release-candidate testing

  • The SD card image's web UI login was not applied, leaving the page open (#87)
  • The shutdown button was not monitored on Bookworm (#88)
  • Normal log messages never reached the log (#86)
  • The Immich API key and the OAuth token were written to the log (#84)
  • install.sh failed on Bookworm at its pip step; all dependencies now come from apt (#98)
  • A failed album refresh marked the album empty and stopped the slideshow for up to an hour; it now keeps the photos and retries every minute (#100)
  • The shutdown pin setting could not be set back to auto (#102)
  • Rotation, overscan and display-driver settings never reached config.txt (#103)
  • install.sh did not install python3-smbus, so the color sensor and automatic shutdown-pin choice could not work on script installs; it no longer installs the unused python3-pip (#105)
  • The no-photos screen told users to add albums when albums were configured (#107)
  • config.txt edits are now safe against power loss and keep rotation and overscan lines across driver changes (#111)
  • The migration script installs from apt only and refuses releases older than Bullseye (#118)

Supported Raspberry Pi OS

  • Bullseye (11), Bookworm (12) and Trixie (13), 32-bit and 64-bit. The SD card image is Bookworm.
  • Bullseye: its Debian long-term support ended in August 2026, and on a stock Bullseye install photoframe may not draw to the HDMI screen (#114, see Known Issues). Bookworm or Trixie is recommended.
  • Buster, Stretch and older are not supported, and neither are mrworf's own SD card images (2018–2019, Raspbian Stretch). On those, flash the 3.0.0 SD card image. The migration script stops on releases older than Bullseye before changing anything.

tvservice is being deprecated. Raspberry Pi OS stopped shipping tvservice with Bookworm. photoframe still uses its tvservice code path wherever the command is installed, including stock Bullseye (#114) and the legacy and fake-KMS display stacks (#119). That code is no longer developed and has known problems. If you need it, open an issue; it can be updated under the normal release process.

Release-candidate testers. A frame running a 3.0.0-rc image does not receive 3.0.0: an rc2 frame follows the 3.0.0-rc2 branch, and an rc1 frame no live branch. Flash the 3.0.0 SD card image, or switch the frame to the release branch:

sudo git -C /root/photoframe fetch origin
sudo git -C /root/photoframe switch 3.0.0
sudo systemctl restart frame.service

Supported Immich versions

Immich v2.x. Immich v3 is not supported in this release; support is planned for photoframe 3.1 (#85).

Installation

SD card image

Download the image_*-photoframe-v3.0.0-lite.zip asset below and follow Option 2 in the README.

Fresh install on Raspberry Pi OS

sudo apt-get update -y && sudo apt upgrade -y
sudo apt install -y git
sudo su -
git clone https://github.com/dev-brewery/photoframe.git /root/photoframe
cd /root/photoframe
./install.sh
systemctl start frame.service

Migrating from mrworf/photoframe

See MIGRATION.md.

Things to know

  • Web UI login. The SD card image ships with photoframe / password, stored in http-auth.json on the boot partition. Change it. An install.sh or manual install has no web UI login until you create /root/photoframe_config/http-auth.json (or http-auth.json on the boot partition). See web UI login.
  • SSH login on the image. photoframe / photoframe. Change it with passwd on first login.
  • Time zone. The image is set to Europe/London. Choose your own under Time zone on the web UI, or the scheduled on and off hours will be wrong.
  • Updates. A frame follows the branch it was installed from and pulls whatever is published there. The image and the migration script put a frame on the 3.0.0 branch; a plain git clone puts it on master.
  • Shutdown pin when upgrading. A frame that already has a shutdown pin number saved keeps that number. To return to automatic selection, type auto into the setting.

Breaking Changes

  • Python 3 required - Python 2 is no longer supported
  • Raspberry Pi OS Bullseye or later required - see Supported Raspberry Pi OS above
  • Picasa Web service removed - the service was already non-functional
  • Google Photos marked deprecated - due to Google API changes
  • Existing mrworf/photoframe users need to follow the migration guide

Known Issues

All planned for 3.1.

  • #79 - the Immich service can report no images when it starts before the network's name lookup is ready. Since #100's fix it tries again about a minute later.
  • #97 - on any install without tvservice (Bookworm and Trixie, including the SD card image), the Resolution dropdown on the settings page shows only blank entries (x (Hz)), and choosing one has no effect. To force a resolution, add video= to cmdline.txt (README, Option 2, Step 3).
  • #117 - if the HDMI cable is unplugged and plugged back in while the frame runs, the picture can become enlarged and cut off. Reboot with the cable connected.
  • #109 - the rotation setting (and probably overscan) has no effect on screen on current Raspberry Pi OS, including the SD card image, because the display driver ignores those config.txt keys.
  • #114 - on a stock Bullseye install, photoframe may not draw to the HDMI screen: tvservice is installed there but does not work under the KMS display driver. Not yet confirmed on hardware.
  • #119 - where tvservice works (the legacy firmware display stack, or the fake-KMS driver vc4-fkms-v3d), photoframe's deprecated tvservice path probably finds no display mode. This affects frames migrated from mrworf/photoframe that still use either. Not yet confirmed on hardware.

Full Changelog

Since mrworf/photoframe v2.0.2 (Jan 2019):

  • Major update to Python 3
  • Removed Picasa
  • Initial implementation of Immich service
  • Clean up for public release
  • Fix Python 3 compatibility and resource leaks for Pi stability
  • Improve Immich service UI and fix album retrieval performance
  • Mark GooglePhotos service as deprecated in dropdown
  • Optimize parseAlbumInfo to avoid redundant config lookups
  • Add backward-compatible logic to use newer display solutions
  • Add display health validation and diagnostics
  • Add multi-architecture support for rgb565 binary
  • Adjust image resizing
  • Update logic to gracefully select Immich images and add support for HEIC
  • Fix Python 3 dependency in update.sh and update user-facing URLs
  • Add v3.0.0 documentation: README rewrite, migration guide, installer
  • Use the Immich preview image by default to avoid running out of memory on small displays
  • Cache the album image list to avoid redundant API calls
  • Add the SD card image build and the paired release process with dev-brewery/pi-gen
  • Add migrate-from-mrworf.sh
  • Add the Immich album picker, case-insensitive album lookup, and retry with backoff
  • Add screen on/off HTTP endpoints and automatic shutdown pin selection
  • Fix the image's web UI login, the shutdown button on Bookworm, and logging
  • Install dependencies from apt only, in the installer and the migration script; install python3-smbus
  • Keep the slideshow running when an album refresh fails
  • Fix the shutdown pin setting, the config.txt path and safe config.txt writes
  • Correct the no-photos screen text
  • Let build-img.sh clone dev-brewery/pi-gen with a selectable branch (#83)
  • Correct and extend the documentation for 3.0.0, including supported releases and the tvservice deprecation (#82, #93, #99)