(HDMI-)Displays mit dem Raspberry Pi

Mir scheint, als ob mit jeder Raspberry Pi OS Version die Ansteuerung von Displays komplett ändert. Ich habe gestern und heute viel Zeit damit verbracht, folgendes zu bewerkstelligen:

  • Raspberry Pi, wo ein Magic Mirror drauf läuft
  • HDMI-Display, welches hochkant steht
  • von 22:00 bis 06:00 ist das Display ausgeschaltet

Um mir und anderen zukünftig die Arbeit zu erleichtern, schreibe ich mir nun die Lessons Learned auf:

Mit „Bookworm“ und den G2 GL-Treibern gibt es keinen mit bekannten Weg, das Display am HDMI-Port auszuschalten. „tvservice“ und „vcgencmd“ funktionieren nicht mehr und „cec-ctl“ erkennt mein Display nicht. Deshalb habe ich auf den alten G1 GL-Treiber zurück gewechselt. Dazu startet man „raspi-config,“ geht zu den Advanced Options, dann GL-Driver und wählt den G1 Treiber aus.

Nach einem Reboot funktionieren „tvservice“ und „vcgencmd“ wieder. Aber die Bildschirmausrichtung (hochkant), welche ich zuvor in der Autostartdatei von LXDE konfiguriert habe, wird ignoriert. Der Eintrag „display_hdmi_rotate=3“ hat die Anzeige wieder auf die gewünschte Einstellung gebracht.

Nun kann ich via „vcgencmd display_power 0“ das Display aus, mit mit „vcgencmd display_power 1“ wieder einschalten.

Noch alles schön in der Crontab verpackt und Abends um 22:00 geht das Display aus, und am 06:00 wieder an.

MagicMirror Update

Es ist bereits schon fast ein Jahr her, als ich begonnen habe, den MagicMirror zu bauen. Hier habe ich damals darüber geschrieben. Ein Grund dafür ist, dass ich den Spiegel erst für unser neues Haus fertig haben möchte. Aber ich habe mich auch davor gescheut, den Monitor zu zerlegen. Heute habe ich mich dessen angenommen und es war einfacher als gedacht.

Nachdem das Display zerlegt war, habe ich das Betriebssystem und die Software auf den neusten Stand gebracht und wollte die Ausrichtung der Anzeige ändern, so dass ich das Display hochkant stellen kann. Gemäss Raspberry Pi Dokumentation reicht dazu ein Eintrag in /boot/config.txt, was aber bei mir nicht funktioniert hat. Nach langem hin und her habe mich dazu entschieden, die Ausrichtung via Desktopumgebung zu drehen. Folgender Eintrag in ~/.config/lxsession/LXDE-pi/autostart war dazu notwendig:

@xrandr --orientation left

Bin ich froh, dass ich die häufigsten Kommandos und Verzeichnisse in motd gespeichert habe:

Mein Plan ist, morgen die Halterung für den Spiegelrahmen zu bauen. Wenn alles rund läuft, kommt das nächste Update nicht erst in 11 Monaten 😉

Ich baue mir einen MagicMirror

Mein „MagicMirror“, noch ohne Spiegel. Im „Endausbau“ auf dem grossen Display werde ich noch einen Familienkalender einblenden.

Bei einem MagicMirror verbaut man ein Display hinter einem Zwei-Weg-Glasspiegel und kann so eine Vielzahl von Informationen anzeigen. Standardmässig ist die Uhrzeit, das Datum, ein Kalender und ein Wetterbericht dabei. Natürlich kann man die gesamte Anzeige vollständig an die eigenen Bedürfnisse anpassen und so noch weitere Informationen anzeigen. Hier findest Du eine Auflistung von weiteren Modulen, welche hinzugefügt werden können.

Im Moment geht es mir vor allem darum, ob ich die Software nach meinen Ansprüchen konfigurieren kann und verwende noch das Original 7″ Raspberry Pi Display. Später werde ich auf ein grösseres Display umsteigen, welches ist noch offen.

Die Installation ist unter diesem Link gut beschrieben. Zum Verwalten des Dienstes (Start, Stop, Automatischer Start nach Reboot) verwende ich PM2. Zur Installation von zusätzlichen Modulen verwende ich MMPM. Ein cooler Nebeneffekt von diesem ist, dass man damit MagicMirror und alle Module aktuell halten kann.

Folgende Punkte bereiteten mir Probleme während der Installation:

Als ich den Raspberry zum ersten mal mit dem aktuellen Raspberry Pi OS (Raspian 11.2) gestartet habe, blieb der Bildschirm weiss, nachdem X gestartet wurde. Das Hinzufügen von dtparam=i2c_vc_baudrate=50000 zu /boot/config.txt löste das Problem.

Die nächste Schwierigkeit war, dass das Display nach 10 Minuten schwarz wird. In der Raspberry Pi Doku wird beschrieben, dass man den Xscreensaver installieren und anschliessend über die Einstellungen deaktivieren soll. Das funktioniert, aber nur bis zum nächsten Reboot. Um den Screensaver dauerhaft zu deaktivieren, habe ich folgende Linie zu ~/.config/lxsession/LXDE-pi/autostart hingefügt: @xscreensaver -no-splash hinzugefügt.

Soweit funktioniert alles einwandfrei. Mein nächster Schritt wird sein, ein passendes Display und Spiegel zu besorgen. Und zu guter Letzt muss ich noch einen Rahmen für das Ganze bauen. Je nach Verlauf des Projekts werde ich natürlich darüber berichten.