Hi,
nachdem ich noch keine wirklich vollständige und gut wartbare Anleitung gefunden habe um auf dem Raspberry per HDMI einen Vollbild Browser zu starten und eine festgelegte Webseite anzeigen zu lassen, habe ich mich dran gemacht und eine Anleitung geschrieben.
Referenzen:
- Schlankes Raspberry-Image: Raspbian Minimal-Images
- Anleitung für Kiosk-Modus: https://www.danpurdy.co.uk/web-developmen…creen-tutorial/
Features
Der RaspberryPI startet direkt in den Chromium-Browser und zeigt eine festgelegt Webseite an. Sobald der Fernseher länger als 1 Minute am Stück aus ist, fährt der Raspberry wieder herunter.
Man kann somit den Fernseher vom Strom nehmen und den Raspberry per Delay-Relais 5 Minuten später mit einem heruntergefahrenen System.
Vorraussetzung
Der Fernseher muss entweder zeitgleich oder früher angemacht werden, bevor der Raspberry startet. Hierfür hat der Raspberry einen Boot-Deley von 5 Sekunden.
Begründung: Man kann zwar hdmi_force_hotplug=1 in der config.txt setzen, jedoch wir dann nicht mehr erkannt, ob der Fernseher ausgeschalten wurde.
Backup-Tipp
Speicherkarte in Linux-PC wie z.B. Ubuntu starten und gparted öffnen. Hier die Partitionsgröße von der größten Partition soweit verkleinern, dass noch 250MB oder je nach Wunsch übrig sind. Hierfürh muss die eventuell vorhandene SWAP Partition erst verschoben werden, sodass freier Speicherplatz nach der größten Partition vorhanden ist.
Darauf achten, die SWAP Partition nach der vergrößerung wieder zurückzuschieben, sodass alle Partitionen ohne Lücken aneinander angrenzen.
Dann im Terminal folgenden Befehl:
Wobei /dev/sdb für die komplette Speicherkarte steht, "1M" für 1-Megabyte große Blöcke steht und 1128 für die Anzahl der Blöcke. Somit wollen wir 1M * 1128 = 1128MByte sichern. Anstatt 1128 setzt man die Gesamtgröße aller Partitionen plus einen kleinen Puffer von 50MByte an.
Anleitung
- Image auf Speicherkarte schreiben
- SSH-Keys neu generieren
- OpenSSH
- rm -v /etc/ssh/ssh_host_*
- dpkg-reconfigure openssh-server
- Dropbear
- rm -v /etc/dropbear/dropbear_*
- dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key
- dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key
- OpenSSH
- Hostname setzen in /etc/hostname und /etc/hosts
- Passwörter neu setzen mit (sudo passwd)
- Apt-get update && apt-get upgrade
- Rpi-update
- HDMI einstellen in config.txt
- disable_overscan=1 #Schwarze Balken werden entfern
- hdmi_group=2 #Enthält mode=82 für 1080p
- hdmi_mode=82 #1080p
- hdmi_drive=2 #HDMI und nicht DVI
- gpu_mem 128 #Grafikkarte hat 128MB Ram (Standard wäre 64MB), kann bei chromium weggelassen werden, da noch keine GPU Unterstützung
- boot_delay=5 #Start um 5sec verzögern, damit TV auch an ist
- Output auf HDMI ausschalten per cmdline.txt
- console=tty1 (Eintrag löschen)
- console=tty3 loglevel=3 (Eintrag einfügen)
- apt-get install xinit matchbox chromium-browser x11-xserver-utils ttf-mscorefonts-installer xwit psmisc
- dpkg-reconfigure x11-common und auf "Anybody" stellen
- Autostart: in /etc/rc.local einfügen und USERNAME einsetzen
- if [ -f /boot/xinitrc ]; then
ln -fs /boot/xinitrc /home/USERNAME/.xinitrc;
su - USERNAME -c 'startx' &
fi - if [ -f /boot/autopoweroff ]; then
/boot/autopoweroff &
fi
- if [ -f /boot/xinitrc ]; then
- Autologin: in /etc/inittab ändern und USERNAME einsetzen
- #1:2345:respawn:/sbin/getty --noclear 38400 tty1 (Zeile ausdokumentieren mit #)
- 1:2345:respawn:/bin/login -f USERNAME tty1 /dev/tty1 2>&1 (Zeile einfügen)
- Script xinitrc in /boot anlegen, wobei /boot die FAT32 Partition ist, die auch unter Windows erkannt wird und in der cmdline.txt und config.txt liegen
- Script autopoweroff in /boot anlegen und ausführbar machen (chmod +x autopoweroff)
Skripte
xinitrc
Unten bei chromium-browser kann man die URL angeben die geöffnet werden soll. Hierfür einfach "https://www.gooogle.de" ersetzen mit der gewünschen Seite
#!/bin/sh
while true; do
# Clean up previously running apps, gracefully at first then harshly
killall -TERM chromium 2>/dev/null;
killall -TERM matchbox-window-manager 2>/dev/null;
sleep 2;
killall -9 chromium 2>/dev/null;
killall -9 matchbox-window-manager 2>/dev/null;
# Clean out existing profile information
rm -rf ~/.cache;
rm -rf ~/.config;
rm -rf ~/.pki;
# Disable DPMS / Screen blanking
xset -dpms
xset s off
# Reset the framebuffer's colour-depth
fbset -depth $( cat /sys/module/*fb*/parameters/fbdepth );
# Hide the cursor (move it to the bottom-right, comment out if you want mouse interaction)
xwit -root -warp $( cat /sys/module/*fb*/parameters/fbwidth ) $( cat /sys/module/*fb*/parameters/fbheight )
# Start the window manager (remove "-use_cursor no" if you actually want mouse interaction)
matchbox-window-manager -use_titlebar no -use_cursor no &
CHROMIUM_TEMP=~/tmp/chromium
rm -Rf ~/.config/chromium/
rm -Rf $CHROMIUM_TEMP
mkdir -p $CHROMIUM_TEMP
chromium-browser --disable --ignore-certificate-errors --disable-translate --disable-infobars --disable-suggestions-service --disable-save-password-bubble --noerrdialogs --disk-cache-dir=$CHROMIUM_TEMP/cache/ --user-data-dir=$CHROMIUM_TEMP/user_data/ --start-maximized --kiosk "https://www.google.de" --incognito
sleep 5;
done;
Alles anzeigen
autopoweroff
Limit steht für die mindest Zeit in Sekunden die gewartet werden soll, bis der Raspberry herunterfährt. Hierbei gilt, dass der Fernseher diese Zeit am Stück aus sein muss, denn wenn er dazwischen wieder angeschaltet wird, wird der Timer zurückgesetzt.
#!/bin/sh
counter=0
#Time in sec the Tv has to be off continuously
limit=60
while true; do
sleep 5
if /opt/vc/bin/tvservice -s | grep -q "state 0x12001a"; then
#echo "Tv is on"
counter=0
continue
fi
counter=$(( $counter + 5 ))
#echo "Tv is off"
if [ $counter -gt $limit ];then
#echo "Timout reached"
break
fi
done
#echo "System shutdown"
/sbin/poweroff
Alles anzeigen