octoprint, waveshare display - bekomme sie nicht zusammen zum laufen

meav33

Lieutenant
Registriert
März 2014
Beiträge
919
Hallo,
ich habe einen pi 3 und folgendes Display: https://www.waveshare.com/wiki/3.5inch_HDMI_LCD
Das Display bekommt sein Bildsignal über HDMI und der Touchgscreen wird über die GPIO Leiste an den raspberry ausgegeben.

Ich möchte gerne meinen 3D Drucker via octoprint steuern und dazu das Display benutzen.
Das heißt ich möchte https://github.com/Z-Bolt/OctoScreen auf dem waveshare display benutzen.
Leider gerate ich dabei in ein Problem, von dem ich vermute das es mit dem xserver zusammenhängt.

Was ich bisher probiert habe:

1. Vorgehensweise:
-aktuelles octopi image (stretch)
-Installation von octoscreen via
->sudo apt-get install libgtk-3-0 xserver-xorg xinit x11-xserver-utils
->wget https://github.com/Z-Bolt/OctoScreen/releases/download/v2.2.1/octoscreen_2.2-2_armhf.deb
->sudo dpkg -i octoscreen_2.2-2_armhf.deb
nach einem Neustart wird die UI von octoscreen auch auf dem Display angezeigt, bis hier her funktioniert also alles.
- Installation des Touchscreen Treibers von waveshare via:
->
git clone https://github.com/waveshare/LCD-show.git
cd LCD-show/
./LCD35-HDMI-480x320-show
Ab jetzt funktioniert octoscreen nicht mehr. AUf dem Display erscheint nur die raspbian konsole.




2. Vorgehensweise:
-aktuelles Raspian (buster mit Desktop )
-installation des Waveshare Touchscreen Treibers wie oben
Der Pixel Deskop funktioniert jetzt so wie er soll mit Touchscreen
-Installation von octoscreen wie oben (octopi habe ich mir an der Stelle mal gespart, ich wollte nur wissen, ob octopscreen überhaupt startet)
-Leider bricht die Installation ab mit
->Failed to preset unit: File /etc/systemd/system/display-manager.service already exists and is a symlink to /lib/systemd/system/lightdm.service.
Nach einem reboot startet nun nicht mehr der pixel desktop, stattdessen erscheint wieder nur die raspbian konsole. Allerdings wird das Display alle paar sekunden immer kurz schwarz, als ob der xserver versuchen würde zu starten.
via startx kann ich den pixel Desktop immer noch starten, auch der Touchscreen geht.


Hat jemand ne Idee, woran es liegen könnte?
 
Auf https://github.com/Z-Bolt/OctoScreen steht doch unten oder in der README.md
It's a X application to be executed directly in the X Server without any windows manager or browser
Deshalb vermutlich die Fehlermeldung und der schwarze Bildschirm, weil er via system das normale Desktopziel (display-manager.service -> startet lightdm ) ausschaltet oder verändert und er dann stattdessen vermutlich ein eigenes Ziel als systemd unit hat.
Anscheinend klappt das nicht - vielleicht fehlen Abhängigkeiten oder etwas anderes.
Das sollte dann in der Xorg.0.log stehen.

Als Workaround kann vlt. vor der Installation der Displaymanager deaktiviert werden (systemctl zum Managen von systemd Service).
 
Zuletzt bearbeitet:
Ich habe noch ein bischen damit rumgespielt aber bin leider nicht weitergekommen.
in der Xorg.0.log steht:
Code:
[    14.069]
X.Org X Server 1.19.2
Release Date: 2017-03-02
[    14.072] X Protocol Version 11, Revision 0
[    14.073] Build Operating System: Linux 4.9.41-v7+ armv7l Raspbian
[    14.075] Current Operating System: Linux octopi 4.19.66-v7+ #1253 SMP Thu A$
[    14.075] Kernel command line: coherent_pool=1M 8250.nr_uarts=1 bcm2708_fb.f$
[    14.084] Build Date: 18 October 2017  04:55:30PM
[    14.086] xorg-server 2:1.19.2-1+rpt1+deb9u2 (https://www.debian.org/support$
[    14.087] Current version of pixman: 0.34.0
[    14.089]    Before reporting problems, check http://wiki.x.org
        to make sure that you have the latest version.
[    14.089] Markers: (--) probed, (**) from config file, (==) default setting,
        (++) from command line, (!!) notice, (II) informational,
        (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
[    14.099] (==) Log file: "/var/log/Xorg.0.log", Time: Sat Oct 12 23:56:39 20$
[    14.106] (==) Using system config directory "/usr/share/X11/xorg.conf.d"
[    14.115] (==) No Layout section.  Using the first Screen section.
[    14.115] (==) No screen section available. Using defaults.
[    14.115] (**) |-->Screen "Default Screen Section" (0)
[    14.115] (**) |   |-->Monitor "<default monitor>"
[    14.121] (==) No device specified for screen "Default Screen Section".
        Using the first device section listed.
[    14.121] (**) |   |-->Device "Allwinner A10/A13 FBDEV"
[    14.121] (==) No monitor specified for screen "Default Screen Section".
        Using a default monitor configuration.
[    14.121] (==) Automatically adding devices
[    14.121] (==) Automatically enabling devices
[    14.121] (==) Automatically adding GPU devices
[    14.127] (==) Max clients allowed: 256, resource mask: 0x1fffff
[    14.128] (WW) The directory "/usr/share/fonts/X11/misc" does not exist.
[    14.128]    Entry deleted from font path.
[    14.129] (WW) The directory "/usr/share/fonts/X11/cyrillic" does not exist.
[    14.129]    Entry deleted from font path.
[    14.129] (WW) The directory "/usr/share/fonts/X11/100dpi/" does not exist.
[    14.129]    Entry deleted from font path.
[    14.129] (WW) The directory "/usr/share/fonts/X11/75dpi/" does not exist.
[    14.129]    Entry deleted from font path.
[    14.129] (WW) The directory "/usr/share/fonts/X11/Type1" does not exist.
[    14.129]    Entry deleted from font path.
[    14.129] (WW) The directory "/usr/share/fonts/X11/100dpi" does not exist.
[    14.129]    Entry deleted from font path.
[    14.129] (WW) The directory "/usr/share/fonts/X11/75dpi" does not exist.
[    14.129]    Entry deleted from font path.
[    14.129] (==) FontPath set to:
        built-ins
[    14.129] (==) ModulePath set to "/usr/lib/xorg/modules"
[    14.129] (II) The server relies on udev to provide the list of input device$
        If no devices become available, reconfigure udev or disable AutoAddDevi$
[    14.131] (II) Loader magic: 0x1fbf40

irgendetwas aus dem waveshare script muss sich wohl mit dem x-server beißen. leider reichen meine linux kenntnisse da nicht aus um den Fehler zu finden :/

Vielleich fällt ja noch jemandem was ein. Das hier ist der Inhalt des waveshare scripts, dass den Fehler verursacht:
Code:
i=1
for lines in `cat ./boot/mark`
do
  case ${i} in
  1) var1=${lines};;
  esac
  i=`expr ${i} + 1`
done
#echo "$var1"

j=$(uname -n)
if test "$var1" = "0" -a "$1" != "lite" -a "$2" != "lite";then

if test "$j" != "retropie" ;then
sudo apt-get install xserver-xorg-input-evdev
sudo cp -rf /usr/share/X11/xorg.conf.d/10-evdev.conf /usr/share/X11/xorg.conf.d/45-evdev.conf
fi

if test "$j" = "retropie" ;then
sudo cp -rf ./nes /home/pi/RetroPie/roms/
fi

echo "1" > ./boot/mark
sudo dpkg -i -B ./xinput-calibrator_0.7.5-1_armhf.deb

sudo apt-get install cmake -y
cd ./rpi-fbcp/build/
sudo cmake ..
sudo make
sudo install fbcp /usr/local/bin/fbcp
cd ../../
sudo mkdir -p /usr/share/X11/xorg.conf.d

elif test "$var1" = "0" -a "$1" = "lite" ;then
echo "1" > ./boot/mark
echo "No touch driver installled"
echo "No fbcp driver installled"
sudo mkdir -p /usr/share/X11/xorg.conf.d

fi

sudo cp -rf ./etc/rc.local /etc/rc.local
sudo cp -rf ./usr/share/X11/xorg.conf.d/99-fbturbo.conf-HDMI  /usr/share/X11/xorg.conf.d/99-fbturbo.conf
if test "$j" = "kali" ;then
sudo cp ./usr/share/X11/xorg.conf.d/99-fbturbo.conf-kali-HDMI /usr/share/X11/xorg.conf.d/99-fbturbo.conf
fi

if test "$1" = "0" -o "$#" = "0" -o "$2" = "0"; then
sudo cp -rf ./etc/X11/xorg.conf.d/99-calibration.conf-35H  /usr/share/X11/xorg.conf.d/99-calibration.conf
sudo cp ./boot/config-35H-480x320.txt /boot/config.txt
echo "LCD configure 0"
elif test "$1" = "lite" -a  "$#" = "1"; then
sudo cp -rf ./etc/X11/xorg.conf.d/99-calibration.conf-35H  /usr/share/X11/xorg.conf.d/99-calibration.conf
sudo cp ./boot/config-35H-480x320.txt /boot/config.txt
echo "LCD configure 0"
elif test "$1" = "90" -o "$2" = "90"; then
sudo cp -rf ./etc/X11/xorg.conf.d/99-calibration.conf-5-90  /usr/share/X11/xorg.conf.d/99-calibration.conf
sudo cp ./boot/config-35H-480x320.txt-90 /boot/config.txt
echo "LCD configure 90"
elif test "$1" = "180" -o "$2" = "180";then
sudo cp -rf ./etc/X11/xorg.conf.d/99-calibration.conf-5-180  /usr/share/X11/xorg.conf.d/99-calibration.conf
sudo cp ./boot/config-35H-480x320.txt-180 /boot/config.txt
echo "LCD configure 180"
elif test "$1" = "270" -o "$2" = "270";then
sudo cp -rf ./etc/X11/xorg.conf.d/99-calibration.conf-5-270  /usr/share/X11/xorg.conf.d/99-calibration.conf
sudo cp ./boot/config-35H-480x320.txt-270 /boot/config.txt
echo "LCD configure 270"
fi

#sudo cp -rf ./usr/share/X11/xorg.conf.d/99-fbturbo.conf-HDMI /usr/share/X11/xorg.conf.d/99-fbturbo.conf
if [ -b /dev/mmcblk0p7 ]; then
sudo cp ./cmdline.txt-noobs /boot/cmdline.txt
else
sudo cp ./cmdline.txt /boot/
fi

sudo cp ./inittab /etc/

if test "$#" = "0" -o "$1" = "0" -o "$1" = "90"  -o "$1" = "180" -o "$1" = "270" -o "$2" = "0" -o "$2" = "90"  -o "$2" = "180" -o "$2" = "270" -o "$1" = "lite" -o "$2" = "lite"; then
sudo reboot
echo "reboot now"
else
echo "Invalid parameter,Usage:LCD35-HDMI-480x320-show [0] [90] [180] [270] [lite]"
fi
 
Xorg Log steht so richtig nix drin - aber den waveshare config scheint er zu laden weil er "Allwinner...." im Namen sagt und das als Name in der X config datei steht, die kopiert wird (und vlt. zum nicht funktionieren führt)

- Nach dem LCD Touchscreen script hast du restartet ?

meav33 schrieb:
sudo cp -rf ./usr/share/X11/xorg.conf.d/

Alle diese Befehle können potentiell etwas überschreiben und damit die funktionierende Konfiguration stören.
also Potentielle Fehlerquelle 1


Potentielle Fehlerquelle 2:
meav33 schrieb:
xinput-calibrator_0.7.5-1_armhf.deb
Das Programm ist ein X-Programm und dient wohl zur Kalibrierung des Touchscreens.
Da dein Octo Programm den X-Server exklusiv nutzt, kann das Kalibrierungsprogramm vielleicht nicht starten. Oder es blockiert das Octo Programm.

Fehlerquelle 3:
meav33 schrieb:
cp ./boot/config-35H-480x320.txt /boot/config.txt
Die Konfiguration wird einfach überschrieben.
Keine Ahnung ob OctoScreen da auch etwas ändert und deshalb das Interface nicht mehr geht.
Die Zeile wird aber benötigt, da der Touchscreencontroller so eingebunden wird - via Zeile mit "dtoverlay=ads7846" usw. in der .txt Datei

Warum die Inittab in /etc kopiert wird ? Keine Ahnung - systemd, dass bei dir installiert ist braucht diese wohl nicht - eventuell kann das den Start von UI beeinflussen

Vermutlich nicht bei dir die Fehlerursache:
Das script scheint das Display mit rpi-fbcp zu nutzen zw. zu installieren. Dort steht im Issuetracker dass es auf dem neuesten Raspian Buster nicht funktioniert. Wenn ich die Funktionsweise korrekt verstehe, dann braucht man dieses Programm/Feature aber nur bei Displays OHNE HDMI (also mit SPI Anschluss zB). Das Programm kopiert den "Framebuffer" also die Grafik, die ausgegeben wird auf dem Ausgang in einen anderen Bereich = zweiter Grafikanschluss/Screen.

PS:
meav33 schrieb:
leider reichen meine linux kenntnisse da nicht aus um den Fehler zu finden :/
Ja - viel Konfigurationsarbeit bei "Entwicklerboards" - sonst wären es ja bereits fertige PC/Softwarelösungen
 
Habs jetzt gelöst.
Das Waveshare script scheint echt kaputt zu sein. ich habe die wichtigsten Konfigurationswerte aus den Dateien manuall reinkopiert und jertzt läuft es.

Danke nochmal für die Hilfe
 
  • Gefällt mir
Reaktionen: wuuz
Hi Meav33,

Ich stehe gerade vor dem ähnlichen Problem nur mit einem 5"-Zoll HDMI Display. Kannst du deine Vergehensweise kurz schildern. Danke
 
Hi,
Ich bin quasi Schritt für Schritt durch das Schritt gegangen und habe die Werte manuell eingetragen wo sie Sinn machten.
Ich glaube das Problem an dem Script ist, dass es die boot/config.txt überschreibt.
 
Zurück
Oben