Links zum LCD-Display
Produkseite: https://joy-it.net/en/products/RB-TFT3.5
Treiberdownload:
https://joy-it.net/files/files/Produkte/RB-TFT3.5/joy-IT-Display-Driver-35a-overlay.zip
Anleitung mit Verwendung von LCD-Show:
https://www.lcdwiki.com/3.5inch_RPi_Display
Direktdownload von meiner Seite:
Gleich zur Anleitung -> nach unten springen
Problembeschreibung
Ich habe hier ein 3,5″-LCD-Display mit Touch-Funktion aus dem Jahre 2021 in Betrieb. Damals wurde es unter der Produktnummer 1553481 von https://www.joy-it.net vertrieben und ich hatte es unter der Produkt-Nummer 1322899-423 bei https://www.reichelt.de bestellt.
Dieses Display war damals unter Raspian-Stretch problemlos im Einsatz. Die Anleitung in der Version vom 04.08.2020 funktionierte für Raspian-Stretch.
In meinem Fall soll die Seite mit dem Anschluss zur Spannungsversorgung nach oben zeigen. Deshalb muss die Darstellung auf dem Display um 180 Grad gedreht werden (siehe Bild)
Das Display wird in einer neuen Version mit zusätzlichen Tasten auf der Platine noch von Joy-IT gefertigt. Es existiert eine neue Anleitung vom 28.03.2024 in der die Bibliothek LCD-Show verwendet wird.
Nun wollte ich meine alte Version des Displays unter Raspian-OS bookworm auf einem Raspberry 3B in Betrieb nehmen.
Ich ging nach der neuen Anleitung vom 28.03.2024 vor und verwendete die Library LCD-Show. Dies hatte zum Ergebnis, dass bei mir das Display zwar aktiv wurde aber einen schwarzen Bildschirm zeigt. Die Umschaltung zur auf den HDMI-Anschluß brachte am HDMI-Ausgang auch nur einen schwarzen Bildschirm zum Vorschein.
Der Grund liegt darin, dass in der Datei /boot/firmware/config.txt die Zeile mit dem Inhalt dtoverlay=vc4-kms-v3d auskommentiert war.
Bei meiner Konfiguration mussten die zwei Möglichkeiten wie folgt lauten:
HDMI-Ausgang aktiv: dtoverlay=vc4-kms-v3d
LCD-TFT an SPI aktiv: dtoverlay=vc4-fkms-v3d
Durch Einfügen oder Entfernen des Buchstabens „f“ konnte ich also zwischen LCD und HDMI-Ausgang umschalten. Ein Parallelbetrieb war zu diesem Zeitpunkt aber nicht möglich.
Ich beschreibe hier, wie unter Raspian Bookworm die Inbetriebnahme auch ohne die Verwendung von LCD-Show erfolgen kann.
Es wurde die, zum Zeitpunkt der Erstellung dieser Anleitung, aktuelle Version 2024-11-24-raspios-bookworm-arm64.img.xz unter Verwendung des Raspberry Pi – Imager auf einem PC mit dem Betriebssystem Ubuntu 24.04.1 LTS auf eine SD-Karte übertragen. Im Imager wurden dabei gleich die Daten für Hostname, User-Kennwort, WLAN und SSH-Freischaltung eingetragen.
Nach dem Hochfahren des Raspberry Pi mittels SSH annmelden:
ssh -X pi@[hostname]
[hostname] müssen Sie mit durch den von Ihnen vergebenen Rechnernamen für den Raspberry Pi ersetzen.
Hinweis: Die nachfolgend mit einem #-Zeichen beginnenden Zeilen dienen nur der Erläuterung und müssen nicht in der SSH-Sitzung am Raspberry Pi eingegeben werden
#Raspi-OS aktualisieren
sudo apt-get update
sudo apt-get full-upgrade
sudo apt-get autoremove
#Kalibrier-Tool für Touchscreen installieren
sudo apt-get install xinput-calibrator In Raspi-config müssen Sie nun Wayland aktivieren. Das geht mit der Auswahl von:
- 6 Advanced Options
- A6 Wayland
- W1 X11 Openbox window manager with X11 backend
- und schließlich reboot in raspi-config starten
sudo raspi-configDie Konfigurationsdatei /boot/firmware/config.txt muss angepasst werden. Fügen Sie am Ende folgendes hinzu:
#Treiber für LCD-Display
dtparam=spi=on
dtoverlay=piscreen,speed=18000000,drm,rotate=180
und fügen Sie in Zeile 26 den Buchstaben f ein:
alt: dtoverlay=vc4-kms-v3d
neu: dtoverlay=vc4-fkms-v3d
sudo nano /boot/firmware/config.txtAnzeige der kompletten Datei mit
sudo cat /boot/firmware/config.txt bringt folgendes Ergebnis
# For more options and information see
# http://rptl.io/configtxt
# Some settings may impact device functionality. See link above for details
# Uncomment some or all of these to enable the optional hardware interfaces
#dtparam=i2c_arm=on
#dtparam=i2s=on
#dtparam=spi=on
# Enable audio (loads snd_bcm2835)
dtparam=audio=on
# Additional overlays and parameters are documented
# /boot/firmware/overlays/README
# Automatically load overlays for detected cameras
camera_auto_detect=1
# Automatically load overlays for detected DSI displays
display_auto_detect=1
# Automatically load initramfs files, if found
auto_initramfs=1
# Enable DRM VC4 V3D driver
#dtoverlay=vc4-fkms-v3d
max_framebuffers=2
# Don't have the firmware create an initial video= setting in cmdline.txt.
# Use the kernel's default instead.
disable_fw_kms_setup=1
# Run in 64-bit mode
arm_64bit=1
# Disable compensation for displays with overscan
disable_overscan=1
# Run as fast as firmware / board allows
arm_boost=1
[cm4]
# Enable host mode on the 2711 built-in XHCI USB controller.
# This line should be removed if the legacy DWC2 controller is required
# (e.g. for USB device mode) or if USB support is not required.
otg_mode=1
[cm5]
dtoverlay=dwc2,dr_mode=host
[all]
#Treiber für LCD-Display
dtparam=spi=on
dtoverlay=piscreen,speed=18000000,drm,rotate=180Als nächstes noch die Drehung der Touch-Koordinaten um 180 Grad durch Systemd veranlassen:
sudo nano /etc/systemd/system/touchscreen.serviceund die Datei mit folgendem Inhalt füllen:
[Unit]
Description=Set Touchscreen Coordinate Transformation Matrix
Requires=lightdm.service
After=lightdm.service
[Service]
Type=oneshot
User=pi
ExecStart=/bin/sh -c "sleep 5; DISPLAY=:0 xinput --set-prop 'ADS7846 Touchscreen' 'Coordinate Transformation Matrix' -1 0 1 0 1 0 0 0 1"
Restart=on-failure
RemainAfterExit=yes
[Install]
WantedBy=lightdm.serviceJetzt muss diese Datei noch als ausführbar gekennzeichnet werden:
sudo chmod +x /etc/systemd/system/touchscreen.serviceund der Dienst aktiviert werden:
sudo systemctl enable touchscreen.servicedanach steht einem Neustart nichts mehr im Wege:
sudo rebootAllgemeine Hinweise und nützliche Kommandos
Nachdem Neustart können wir direkt am LCD-Bildschirm prüfen, ob X11 aktiv ist:
echo $GDMSESSION
#Bedeutung der Antworten:
# LXDE-pi-wayfire meint Wayland ist aktiv
# LXDE-pi-X meint X11 ist aktivAuch aus der ssh-Konsole heraus kann die Bildschirmeinrichtung auf dem LCD gestartet werden:
DISPLAY=:0.0 xinput_calibratorDas dort angezeigte Ergebnis muss dann in die Konfigurationsdatei übernommen werden:
sudo nano /etc/X11/xorg.conf.d/99-calibration.confBei mir hat die Datei /etc/X11/xorg.conf.d/99-calibration.con folgenden Inhalt:
Section „InputClass“
Identifier „calibration“
MatchProduct „ADS7846 Touchscreen“
Option „MinX“ „3777“
Option „MaxX“ „61485“
Option „MinY“ „3567“
Option „MaxY“ „62685“
Option „SwapXY“ „0“ # unless it was already set to 1
Option „InvertX“ „0“ # unless it was already set
Option „InvertY“ „0“ # unless it was already set
EndSection
Das manuelle Drehen der Touch-Koordinaten um 180 Grad gelingt mit dem Befehl
DISPLAY=:0 xinput --set-prop 'ADS7846 Touchscreen' "Coordinate Transformation Matrix" -1 0 1 0 1 0 0 0 1Die technischen Daten der angeschlossenen Bildschirme erfolgt durch die Eingabe von:
DISPLAY=:0.0 xrandrWenn Sie die Einrichtung der Bildschirme aus der SSH-Konsole heraus starten möchten um sie dann in der grafischen Oberfläche durchzuführen, geben Sie ein:
DISPLAY=:0.0 raindropÄnderungen an der Dienstdefiniton dem System bekanntgeben:
sudo systemctl daemon-reloadNeustart des Dienstes und Status oder Logeinträge des Dienstes anzuzeigen
sudo systemctl restart touchscreen.service
sudo systemctl stauts touchscreen.service
sudo journalctl -r
sudo journalctl -r grep Touchscreen