Autor Thema: Manjaro KDE auf Raspberry Pi 4b und x11vnc server - kein zugriff ohne Monitor  (Gelesen 157 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline MarkusMNT

  • Neuling
  • *
  • Beiträge: 10
  • Dankeschön: 2 mal
  • Karma: +0/-0
  • Desktop: KDE
  • Grafikkarte: Verschiedene
  • Grafikkartentreiber: Verschiedene
  • Prozessor: Verschiedene
  • Skill: Durchschnitt
  • Zweig: stable
Hallo,

ich habe auf meinem Raspberry Pi 4B Manjaro KDE installiert,
und will ausser über SSH auch über VNC darauf zugreifen. Installiert habe ich
den x11vnc server auf dem Pi, der je nach bedarf per Befehl
sudo x11vnc -display :0 -noxdamage -forever -bg -rfbauth /home/rpi4user/.vnc/passwd -auth /home/rpi4user/.Xauthority
gestartet wird.

Es funktioniert alles so wie es soll, ich kann mich verbinden
und bekomme den KDE Desktop vom Pi auf meinem anderen Rechner über KRDC angezeigt.

PROBLEM :

Das alles funktioniert auch nur wenn am Pi ein Monitor angeschlossen ist,
was ja nicht sinn und zweck der sache ist.
Der Pi soll auch OHNE angeschlossenen Monitor erreichbar/steuerbar sein.
Wenn kein Monitor angeschlossen ist, startet X11/KDE auf dem Pi nicht.
Das wird aber benötigt, da sonst der x11vnc server auch nicht funktioniert.

Was muss ich wo einstellen, dass das X System auf dem Pi trotzdem startet,
auch wenn HDMI nicht verbunden ist ?
Auf einem normalen Rechner funktioniert das ja auch.

Offline MarkusMNT

  • Neuling
  • *
  • Beiträge: 10
  • Dankeschön: 2 mal
  • Karma: +0/-0
  • Desktop: KDE
  • Grafikkarte: Verschiedene
  • Grafikkartentreiber: Verschiedene
  • Prozessor: Verschiedene
  • Skill: Durchschnitt
  • Zweig: stable
Ich habe jetzt nach langem herumprobieren einen Weg gefunden, den Pi mit x11vnc "Headless" über vnc zum laufen zu bekommen.

Hardware : Raspberry Pi 4b (8GB RAM Version) mit aktueller Firmware.
Software : Manjaro-ARM KDE 21.04, Kernel 5.10.35

Hier die Schritte von Anfang an :

1.) In den KDE Systemeinstellungen > Starten und Beenden > Verhalten > "Automatisch Anmelden" aktivieren
und den Benutzer auswählen.

2.) Den x11vnc Server installieren :
sudo pacman -S x11vnc

3.) Einen versteckten Ordner für x11vnc im Benutzerverzeichnis anlegen :
(Im Dolphin Dateimanager kann man über die Tastenkombination STRG+H
versteckte Dateien/Ordner sichtbar machen oder wieder ausblenden)
mkdir ~/.x11vnc

4.) Eine leere Datei erstellen, in die x11vnc später das Log protokolliert :
touch ~/.x11vnc/x11vnc.log

5.) Das x11vnc Zugriffs-passwort erstellen :
x11vnc -storepasswd ~/.x11vnc/passwd

6.) Mit einem beliebigen Editor die Datei
/etc/systemd/system/x11vnc.service
mit folgendem Inhalt erstellen :
[Unit]
Description=x11vnc Server
Requires=display-manager.service
After=display-manager.service

[Service]
Type=forking
ExecStart=/usr/bin/x11vnc -display :0 -noxdamage -shared -forever -bg -rfbport 5900 -rfbportv6 5900 -rfbauth /home/BENUTZERNAME/.x11vnc/passwd -auth /home/BENUTZERNAME/.Xauthority -o /home/BENUTZERNAME/.x11vnc/x11vnc.log
Restart=on-failure
RestartSec=10
User=BENUTZERNAME

[Install]
WantedBy=multi-user.target
Den BENUTZERNAME entsprechend anpassen.

7.) Den x11vnc über systemctl starten :
sudo systemctl start x11vnc.service
und prüfen, ob er läuft :
sudo systemctl status x11vnc.service
Wenn er beendet werden soll :
sudo systemctl stop x11vnc.service

Beim nächsten neustart des Rechners den x11vnc automatisch mitstarten :
sudo systemctl enable x11vnc.service
Wenn der automatische start vom x11vnc wieder deaktiviert werden soll :
sudo systemctl disable x11vnc.service

8.) Wenn der Pi zukünftig immer OHNE Monitor
(an beiden HDMI Ports ist NICHTS angeschlossen) betrieben werden soll,
dann den Dummy Monitor Treiber installieren :
sudo pacman -S xf86-video-dummy

9.) Mit einem beliebigen Editor die Datei
/etc/X11/xorg.conf.d/10-headless.conf
mit folgendem Inhalt erstellen :
Section "Monitor"
        Identifier "dummy_monitor"
        HorizSync 28.0-80.0
        VertRefresh 48.0-75.0
        Modeline "1920x1080" 172.80 1920 2040 2248 2576 1080 1081 1084 1118
EndSection

Section "Device"
        Identifier "dummy_card"
        VideoRam 256000
        Driver "dummy"
EndSection

Section "Screen"
        Identifier "dummy_screen"
        Device "dummy_card"
        Monitor "dummy_monitor"
        SubSection "Display"
        EndSubSection
EndSection
Bei Modeline "1920x1080" die gewünschte Auflösung eintragen.

Nicht wundern : wenn man damit den Pi neu startet und ein Monitor angeschlossen ist, bekommt man ein leeres Bild.
Will man einen Monitor nebenher nutzen, muss man die /etc/X11/xorg.conf.d/10-headless.conf
manuell wieder entfernen :
sudo rm /etc/X11/xorg.conf.d/10-headless.conf
und danach neustarten.
Will man den Pi dann wieder ohne Monitor nur über vnc steuern, muss man die Datei wieder selbst
erstellen, wie oben beschrieben.

Das ist leider etwas schlecht gelöst.
Automatische umschaltung von Headless-modus auf betrieb mit Monitor wäre gut. In abhängigkeit davon,
ob an einem oder beiden HDMI Ports ein Monitor angeschlossen ist oder nicht.
Ich hoffe, das wird noch gefixt von den Entwicklern.

Zur Performance-verbesserung habe ich auf dem Pi in den
KDE Systemeinstellungen > Anzeige und Monitor > Compositor > "Compositor beim Start aktivieren" deaktiviert.
Um von einem anderen PC auf den Pi zuzugreifen, nutze ich KRDC als Viewer und bei Verbindungsart "Niedrige Qualität".
Denn der Pi ist leider bekanntlich etwas begrenzt, was CPU und Grafikleistung betrifft. Eine vnc Verbindung
in FullHD oder höher macht dem Pi ordentlich zu schaffen. Auf einem normalen PC ist das alles kein Thema.

Ich nutze vnc im LAN, hinter einem Router/Firewall. Daher verzichte ich auf
eine Verbindung über einen SSH Tunnel. Will man von Aussen zugreifen, dann
aufjedenfall NUR über SSH Tunnel und den vnc Standard Port 5900 sollte man auch ändern.