Zum Hauptinhalt springen
Menü

14.02.2025 Workaround: altes Modell 3 1/2-Zoll LCD-Display von You-IT unter Bookworm funktinierte nicht mehr

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


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 funktonierte 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 wurde.

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-19-raspios-bookworm-arm64.img 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 


#Wayland einschalten
sudo raspi-config

# 6 Advanced Options
# A6 Wayland
# W1 X11 Openbox window manager with X11 backend
# reboot in raspi-config starten

#Bearbeitung der Konfigurationsdatei
sudo nano /boot/firmware/config.txt


#Am Ende hinzufügen:

#Treiber für LCD-Display
dtparam=spi=on
dtoverlay=piscreen,speed=18000000,drm,rotate=180


#Zeile 26 abändern (f vor kms hinzufügen)

#alt: dtoverlay=vc4-kms-v3d

#neu: #dtoverlay=vc4-fkms-v3d


#Die Datei hatte dann folgenden Inhalt

sudo cat /boot/firmware/config.txt 


# 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=180



#Nun Systemd zum Drehen der Touch-Koordinaten um 180 Grad verwenden

sudo nano /etc/systemd/system/touchscreen.service

#und folgenden Inhalt eintragen:

[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.service

#Die Datei als ausführbar kennzeichnen
sudo chmod +x /etc/systemd/system/touchscreen.service

#und den Dienst aktivieren
sudo systemctl enable touchscreen.service

#und letztlich einen Neustart durchführen
sudo reboot


#prüfen, ob X11 aktiv ist (direkt am LCD-Bildschirm):
echo $GDMSESSION

#Bedeutung der Antworten:
# LXDE-pi-wayfire meint Wayland ist aktiv
# LXDE-pi-X meint X11 ist aktiv

#Auch aus der Konsole heraus kann die Bildschirmeinrichtung auf dem LCD gestartet werden.
DISPLAY=:0.0 xinput_calibrator

#Das Ergebnis in die Konfigurationsdatei übernehmen
sudo nano /etc/X11/xorg.conf.d/99-calibration.conf


#Bei mir sah das Ergebnis dann so aus:
sudo cat /etc/X11/xorg.conf.d/99-calibration.conf

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

#Man kann die Touch-Koordinaten auch manuell um 180 Grad drehen:
DISPLAY=:0 xinput --set-prop 'ADS7846 Touchscreen' "Coordinate Transformation Matrix" -1 0 1 0 1 0 0 0 1

#Die technischen Angaben der angeschlossenen Bildschirme anzeigen lassen:
DISPLAY=:0.0 xrandr

#Man kann die Einrichtung der Bildschirme aus der SSH-Sizung starten, um dann in der grafischen Oberfläche das Display zu aktivieren
DISPLAY=:0.0 raindrop

#Änderungen an der Dienstdefinition dem System bekanntgeben:
sudo systemctl daemon-reload

#Neustart und Status des Dienstes anzeigen:
sudo systemctl restart touchscreen.service
sudo systemctl stauts touchscreen.service
sudo journalctl -r
sudo journalctl -r  grep Touchscreen