SignageWithAlpineLinux

Aus bytewerk-Wiki
Zur Navigation springen Zur Suche springen

Signage with Alpine linux on the raspberry pi

hardware

This guide works for the Raspberry Pi3 and Raspberry Pi4.

In case you want to run a viewer for Schlangenprogrammiernacht you'll need a Raspberry Pi4 as the javascript viewer ist quite demanding

setup image

  • Format SD-Card as FAT32 with a MSDOS partition table
  • Grab the base file system from the alpine linux website (pick aarch64)
  • Mount new partition and unzip archive directly to SDcard
  • umount and plug SDcard into raspberry pi
  • boot and log in as "root" without entering a password
  • Make sure the raspberry-pi is connected to the internet

prepare base system

  • start "setup-alpine"
    • select keyboard language (e.g. de-nodeadkeys)
    • choose hostname (e.g. "signage")
    • chose interface to listen for DHCP for (e.g. eth0)
    • select timezone (e.g. Europe/Berlin)
    • add user e.g. "sign"
    • Agree to install on /dev/mmcblk0p1
    • install as "sys"
  • reboot the system
  • (optional) continue via SSH
  • select correct repositories
root> apk update
root> apk add nano
root> nano /etc/apk/repositories #uncomment the community repository
root> apk update

setup base system

  • setup boot parameters
  • add file /boot/usercfg.txt with the following content
root> echo "disable_overscan=1
dtoverlay=vc4-kms-v3d
gpu_mem=128" > /boot/usercfg.txt
  • (optional) switch to udev
root> setup-devd

setup windowmanager

  • install window manager
root> apk add screen
root> apk add seatd wlr-randr mesa-dri-gallium sway tinydm dbus
root> apk add wlr-randr wtype
  • start seatd on boot and add "sign" to its group
root> rc-service seatd start
root> rc-update add seatd default
root> adduser sign seat # grant sign access to seatd
  • copy and edit sway config for user "sign"
root> su - sign
sign> mkdir -p ~/.config/sway
sign> cp /etc/sway/config ~/.config/sway
sign> echo "
# hide cursor
seat seat0 hide_cursor 8000
# force fullhd
output HDMI-A-1 mode 1920x1080
exec ~/swaystart.sh &" >> ~/.config/sway/config
sign> touch ~/swaystart.sh
  • setup autostart for user "sign"
root> echo "AUTOLOGIN_UID=1000" >> /etc/conf.d/tinydm
root> rc-update add tinydm default
root> tinydm-set-session -s /usr/share/wayland-sessions/sway.desktop
  • fix file permissions
sign> chmod +x ~/swaystart.sh
  • configure XDG_RUNTIME_DIR
sign> echo "if test -z \"\${XDG_RUNTIME_DIR}\"; then
  export XDG_RUNTIME_DIR=/tmp/\$(id -u)-runtime-dir
  if ! test -d \"\${XDG_RUNTIME_DIR}\"; then
    mkdir \"\${XDG_RUNTIME_DIR}\"
    chmod 0700 \"\${XDG_RUNTIME_DIR}\"
  fi
fi" > ~/.profile

setup browser (chromium)

You can use pretty much any browser that supports wayland. The default is chromium.

  • install and autostart chromium
root> apk add chromium font-noto
sign> echo "#!/bin/sh

URL=https://schlangen.bytewerk.org/watch/

chromium-browser --kiosk -incognito \
--enable-features=UseOzonePlatform --ozone-platform=wayland \
--start-fullscreen --noerrdialogs --disable-infobars --disk-cache-dir=/dev/null \
--disk-cache-size=1 $URL &
while true; do
  # after a while all browsers begin to stutter. Here is a crude fix
  sleep 600
  WAYLAND_DISPLAY=wayland-1 wtype -P F5
done" > ~/swaystart.sh

setup browser (falkon)

In case you don't want to use chromium you can also use another browser. For instance falkon.

  • install and autostart falkon
sign> apk add falkon font-noto
sign> echo "#!/bin/sh

URL=http://example.com/

falkon -e -i -f $URL &
while true; do
  # after a while all browsers begin to stutter. Here is a crude fix
  sleep 600
  WAYLAND_DISPLAY=wayland-1 wtype -P F5
done" > ~/swaystart.sh

setup SPN viewer

root> apk add font-noto-emoji # for snake emojis