Digital Pictureframe

ยท 639 words ยท 3 minute read

For some time now I was looking into owning a digital pictureframe to bring all those pictures to light which are stored and mostly hidden in various gallery directories - everyone has their own archiving structure I guess.

Owning of course means not only possession of the hardware but the software too.

To get something working quickly and not end up buying yet another set of hardware and never finish I built a somewhat hacky “prototype” but at least it is working as intended. We will see if it ever comes to sequential prototypes.

Hardware ๐Ÿ”—

For the hardware side I’ve used a mini-HDMI driver board kit for 9.7" iPad displays. The vendor also supplied a used display and a metal case for the driver board and the display. The power adapter needs to be bought seperately. For “computing” I used an old OrangePi board, which is a more or less cheaper, china-made alternative to RaspberryPis. With an SD-card and a mini-HDMI to HDMI cable the whole setup is around 120EUR.

Here are the links to the used hardware components should anyone be interested:

Software ๐Ÿ”—

On the software side I just setup Debian ARM in kiosk-mode. To display the pictures I use geeqie.

All the files described in the Installation section can be found in the repository here.

Installation ๐Ÿ”—

The latest Debian distribution provided by OrangePi.org is Debian Buster (see download page).

After unpacking the image I wrote it to an SD-card using dd:

sudo dd if=Orangepipc_2.0.8_debian_buster_server_linux5.4.65.img of=/dev/mmcblk0 bs=4096 status=progress oflag=direct

The standard login is orangepi/orangepi, also the root password is orangepi.

First install the needed software components:

sudo apt update
sudo apt install xorg fluxbox unclutter xdotool xterm geeqie

After installing the needed software components configure the system to automatically login a user which is done via systemd.

Create a directory for the config file:

sudo mkdir -p /etc/systemd/system/getty@tty1.service.d

Then create a file in the newly created directory /etc/systemd/system/getty@tty1.service.d/autologin.conf with the contents:

[Service]
	ExecStart=-/sbin/agetty --autologin "orangepi" %I

To automatically start an X server (broadly speaking the GUI in Linux) create the file ~/.bash_profile in the home direcotory of the orangepi user:

if [ -z "${SSH_TTY}" ];
then
	startx
fi

Everytime a user logs into a terminal a few files are loaded to setup the users shell session. One of those files are .bash_profile.

The if statement checks whether the user is logging in through an SSH session or not. If not the X server is started with startx.

When the X server starts it loads the file ~/.xinitrc if it is present. It can be used to setup the X environment and in this case loads fluxbox as the window manager to display X applications.

xrandr --output HDMI-1 --rotate inverted
startfluxbox

The xrandr line rotates the display by 180ยฐ, so it is only needed if the display is setup upside-down. The second line starts fluxbox.

When fluxbox starts it loads the file ~/.fluxbox/startup which is used to setup fluxbox and start applications on fluxbox startup.

In around the middle of the file add the following lines:

..
xset s noblank
xset s off
xset -dpms
unclutter -grab	-visible &
geeqie -s -f /home/orangepi/pictureframe &
..

Also create the directory holding the digital pictures:

mkdir -p /home/orangepi/pictureframe

You can now copy pictures in this location using scp or WinScp.

The last part of the whole setup is to configure geeqie. As the configuration file is quite large please refer to the Git repository here. Create the configuration directory /home/orangepi/.config/geeqie/ and copy the file home/orangepi/.config/geeqie/geeqierc.xml from the repository to the newly created directory:

mkdir -p /home/orangepi/.config/geeqie
cp digital-pictureframe-repo/home/orangepi/.config/geeqie/geeqierc.xml /home/orangepi/.config/geeqie

Now reboot the system and Geeqie should start with the slideshow of all provided files.