# Raspi 3

# 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.

```bash
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:

```bash
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:

```bash
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:

<table id="bkmrk-display-dokumentatio" style="border-collapse:collapse;width:100%;"><colgroup><col style="width:38.333333%;"></col><col style="width:61.547619%;"></col></colgroup><tbody><tr><td>Display Dokumentation:</td><td>[https://www.waveshare.com/wiki/3.5inch\_RPi\_LCD\_(B)](https://www.waveshare.com/wiki/3.5inch_RPi_LCD_(B))</td></tr><tr><td>Erklär-Video</td><td>[https://www.youtube.com/watch?v=qU6\_zLMUzLA](https://www.youtube.com/watch?v=qU6_zLMUzLA)</td></tr><tr><td>Erklär-Video als Text (Kurzform)</td><td>[https://github.com/TemporarilyOffline/WaveShare](https://github.com/TemporarilyOffline/WaveShare)</td></tr><tr><td>Kompilierungsproblem mit con2fbmap Lösung</td><td>[https://github.com/goodtft/LCD-show/issues/404](https://github.com/goodtft/LCD-show/issues/404)</td></tr><tr><td>con2fbmap Beschreibung</td><td>[https://manpages.debian.org/trixie/fbset/con2fbmap.1.en.html](https://manpages.debian.org/trixie/fbset/con2fbmap.1.en.html)</td></tr><tr><td>Service</td><td>[https://raspberry.tips/raspberrypi-einsteiger/raspberry-pi-autostart-von-skripten-und-programmen-einrichten](https://raspberry.tips/raspberrypi-einsteiger/raspberry-pi-autostart-von-skripten-und-programmen-einrichten)</td></tr><tr><td>Berrybase Gehäuse für Display</td><td>[https://www.berrybase.de/gehaeuse-fuer-raspberry-pi-3-3b-und-3-5-display-schwarz](https://www.berrybase.de/gehaeuse-fuer-raspberry-pi-3-3b-und-3-5-display-schwarz)</td></tr><tr><td>Berrybase Display</td><td>[https://www.berrybase.de/3-5-display-fuer-raspberry-pi-mit-resistivem-touchscreen](https://www.berrybase.de/3-5-display-fuer-raspberry-pi-mit-resistivem-touchscreen)</td></tr></tbody></table>