Raspi OS Trixi lite: Waveshare 3,5'' Display im Terminal Mode
Ausgangslage
An einem Raspberry PI 3B (R3) soll das "3.5 inch Resistive Touch Display (B) V2" mit einer Auflösung von 480×320 Pixeln angeschlossen werden. Das IPS Display für die SPI-Schnittstelle soll an diesem Rechner nur die Standard-Console anzeigen, da der Raspi mit seinen mageren 1GB Speicher mit einem grafischen Desktop überfordert ist.
Wird die Möglichkeit, das Display auch als Terminal zu benutzen, schon nur versteckt beschrieben, ist dummerweise ein dafür benötigtes Framebuffer-Tool nicht mehr kompilierbar. Selbst eine mit allen Patches versehene Betriebssystemversion, auf dem die Beispiele beruhen, kann das Tool nicht mehr starten.
Installation
Basis ist die 64 Bit Lite Version von Debian Trixi. Das Linux Betriebssystem wird mit dem Raspberry PI Imager auf eine Micro SD Speicherkarte (oder ein USB-Device wie z. B. eine externe SSD) geschrieben. Beim Erstellen des Image sollte darauf geachtet werden, dass der Username dem Default pi entspricht.
Der R3 wird mit der Karte (oder dem USB-Device) gebootet und anschließend mit dem üblichen Zweiklang auf den neuesten Stand gebracht. Und um sicher zu gehen, dass auch alle Aktualisierungen geladen sind, sollte der R3 neu gestartet werden.
sudo apt-get update && sudo apt-get upgrade -y
sudo rebtot
Nun ist der R3 bereit für die Installation der für das Display benötigten Software. Zuerst wird der eigentliche Display-Treiber vom Wavershare Fileserver geholt und in das Raspi-OS Treiberverzeichnis kopiert. Da es sich bei der Datei um eine zip-Datei handelt, muss sie vor dem kopieren entpackt werden. Beide Aktionen erledigt unzip elegant in einem Befehl:
wget https://files.waveshare.com/upload/1/1e/Waveshare35b-v2.zip
sudo unzip ./Waveshare35b-v2.zip -d /boot/overlays
Der Treiber muss noch richtig eingebunden und das HDMI-Interface auch dann aktiviert werden, wenn kein HDMI-Kabel angeschlossen ist. Dazu ist die Firmware Konfiguration zu bearbeiten:
sudo nano /boot/firmware/config.txt
In dieser Datei sind folgende zwei Aktionen durchzuführen:
#--------------------------------------------
# First step: Comment out following two lines
#--------------------------------------------
# dtoverlay=vc4-kms-v3d
# max_framebuffers=2
#--------------------------------------------
# Second step: Add following lines to the end
#--------------------------------------------
dtparam=spi=on
dtoverlay=waveshare35b-v2
hdmi_force_hotplug=1
max_usb_current=1
hdmi_group=2
hdmi_mode=1
hdmi_mode=87
hdmi_cvt 480 320 60 6 0 0 0
hdmi_drive=2
display_rotate=0
Durch die geänderte Konfiguration ist nun sichergestellt, dass beim Systemstart die Devices für die Framebuffer (/dev/fb0 und /dev/fb1) angelegt werden. Um der Standard-Konsole (tty1) nun den passenden Framebuffer (/dev/fb1) zuzuweisen, kann das Tool con2fbmap genutzt werden. Da diese Zuordnung bei jedem Bootvorgang automatisch vorgenommen werden soll, erstellen wir einen neuen Service:
sudo nano /etc/systemd/system/console-display.service
Diese Datei füllen wir mit folgendem Inhalt:
[Unit]
Description=Framebuffer /dev/fb1 für Console tty1 aktivieren
After=network.target
[Service]
Type=simple
User=pi
ExecStart=/usr/bin/con2fbmap 1 1
Restart=on-failure
[Install]
WantedBy=multi-user.target
Den neu erstellten Service müssen wir noch aktivieren, damit er bei jedem Boot ausgeführt wird:
sudo systemctl enable console-display.service
Jetzt nur noch das Auto-Login setzen und dann den R3 neu starten:
sudo raspi-config nonint do_boot_behaviour B2 # auto-login
sudo reboot
Nach einer gewissen Zeit - ein R3 ist nicht der schnellste Rechner - sollte das Display die für ein Linux-System üblichen Konsole-Ausgaben anzeigen.
Quellen:
| Display Dokumentation: | https://www.waveshare.com/wiki/3.5inch_RPi_LCD_(B) |
| Erklär-Video | https://www.youtube.com/watch?v=qU6_zLMUzLA |
| Erklär-Video als Text (Kurzform) | https://github.com/TemporarilyOffline/WaveShare |
| Kompilierungsproblem mit con2fbmap Lösung | https://github.com/goodtft/LCD-show/issues/404 |
| con2fbmap Beschreibung | https://manpages.debian.org/trixie/fbset/con2fbmap.1.en.html |
| Service | https://raspberry.tips/raspberrypi-einsteiger/raspberry-pi-autostart-von-skripten-und-programmen-einrichten |
| Berrybase Gehäuse für Display | https://www.berrybase.de/gehaeuse-fuer-raspberry-pi-3-3b-und-3-5-display-schwarz |
| Berrybase Display | https://www.berrybase.de/3-5-display-fuer-raspberry-pi-mit-resistivem-touchscreen |