VNC-Clients
Um übers Netzwerk per VNC auf den Raspberry Pi zugreifen zu können, benötigt man einen VNC-Client. Es gibt sehr viele davon. In der Regel reicht einer mit einem geringen Funktionsumfang, der in der Regel kostenlos zu haben ist. Deshalb hier nur eine kleine Auswahl.
- Windows: z. B. TightVNC
- Mac OS X: z. B. Chicken
- Linux: z. B. vncviewer (tigervnc) oder andere
Aufgabe
- Besorgen Sie sich einen geeigneten VNC-Client für ihren Client-PC.
- Installieren Sie einen VNC-Server auf dem Raspberry Pi.
- Richten Sie den VNC-Server so ein, dass er beim Booten automatisch startet.
Vorbereitungen
Um den Desktop per VNC fernsteuern zu können, muss der Raspberry Pi natürlich den Desktop automatisch starten. Dazu stellt man mit „raspi-config“ den Start-Modus auf „Enable Boot to Desktop/Scratch“. Wahlweise mit oder ohne automatischer Anmeldung durch den Benutzer „pi“.
Außerdem empfiehlt es sich den Grafikspeicher in „raspi-config“ unter „Advanced Options > Memory Split“ auf den Wert 64 (MByte) zu stellen.
Damit die Einstellungen übernommen werden muss der Raspberry Pi neu gestartet werden.
Lösung: VNC-Server für virtuelle Desktops installieren
Hinweis: Achten Sie darauf, dass Sie nicht mehrere VNC-Server gleichzeitig installiert haben und beim Booten automatisch starten. Bevor Sie TightVNCServer installieren, machen Sie vorhergehende VNC-Server-Installation und -Konfigurationen rückgängig.
Den VNC-Server TightVNCServer installieren:
sudo apt-get update
sudo apt-get install tightvncserver
Dann richten wir ein Passwort für den VNC-Client ein (empfohlen):
vncpasswd
Hier muss man ein Passwort eingeben und anschließend noch mal bestätigen. Dieses Passwort wird später für den VNC-Client auf dem entfernten Rechner benötigt. Es ist selbst auszuwählen und hat nichts mit dem Benutzer-Passwort zu tun. Es ist das VNC-Server-Passwort.
Die Nachfrage nach einem Readonly-Password kann man verneinen.
Danach können wir den VNC-Server manuell starten.
Kommando zum Starten einer VNC-Session:
vncserver :1
Anschließend kann man sich mit einem VNC-Client mit dem Raspberry Pi verbinden. Hierbei muss man beachten, dass man neben dem Hostnamen oder der IP-Adresse des Raspberry Pi auch den Port 5901 angeben muss (z. B. 192.168.1.2:5901).
Hinweis: Der Parameter „:1“ bezieht sich auf den ersten virtuellen Desktop. Der hat den Port „5901“. Möchte man weitere virtuelle Desktops per VNC betreiben, dann erhöht man auf „:2“ usw. und wählt entsprechend auch den Port „5902“ usw.
Parameter von TightVNCServer
Kommando zum Starten einer VNC-Session mit zusätzlichen Parametern (optional):
vncserver :1 -geometry 1920x1080 -depth 16 -name raspi -localhost
Kommando zum Beenden der VNC-Session:
vncserver :1 -kill
-geometry: Mit diesem Parameter legt man die Auflösung des Desktops fest, die an den VNC-Client übertragen werden soll. Prinzipiell kann man hier beliebige Werte angeben. Sinn machen aber nur Auflösungen, die auf dem Client darstellbar sind. Wenn die Werte zu groß sind, dann sind Teile des Desktops verdeckt und dann muss man im Fenster des VNC-Clients scrollen.
Wenn man auf dem VNC-Client mit Vollbild arbeiten möchte, dann muss man hier die Auflösung des Clients eintragen. Aber, je höher die Auflösung, desto größer ist auch das zu übertragende Datenvolumen. Im lokalen Netzwerk ist das sicherlich kein Problem. Beim Übertragen über das Internet schon.
-depth: Mit diesem Parameter legt man die Farbtiefe in Bit der zu übertragenden Bilder fest. Die beste, farblich detaillierte Darstellung bekommt man mit den Werten von 24 bzw. 32. Allerdings erfordert das eine entsprechend hohe Bandbreite bzw. Übertragungsgeschwindigkeit, um das dabei entstehende Datenvolumen übertragen zu können. In der Regel erreicht man das nur im lokalen Netzwerk. Ein Wert von 16 ist mit Sicherheit auch akzeptabel. Ein Wert von 8 das Minimum. Je geringer der Wert, desto geringer ist das Datenvolumen und desto höher ist die notwendige Bandbreite.
-name: Mit diesem Parameter legt man den Namen fest, der im VNC-Client angezeigt werden soll. Interessant ist das dann, wenn man mit mehreren VNC-Sessions zu unterschiedlichen Systemen arbeitet und die Fenster voneinander unterscheiden möchte.
-localhost: Mit diesem Parameter verhindert man, dass die VNC-Session über das Internet ungesichert aufgebaut werden kann. Die Idee ist hierbei, dass man zuerst eine sichere SSH-Verbindung herstellt und darüber die VNC-Session betreibt.
-kill: Mit diesem Parameter kann man die VNC-Session beenden.
Erweiterung: VNC-Server-Autostart auf dem Desktop
Möchte man den VNC-Server automatisch beim Booten des Raspberry Pis starten lassen, dann muss man dazu noch eine Autostart-Datei anlegen.
nano /home/pi/.config/autostart/tightvnc.desktop
In diese Datei fügen wir folgende Zeilen ein:
[Desktop Entry]
Type=Application
Name=TightVNC
Exec=vncserver :1
StartupNotify=false
Dann die Datei speichern und schließen: Strg + O, Return, Strg + X.
Jetzt muss man den Raspberry Pi einmal neu starten.
sudo reboot
Anschließend sollte, wenn der Desktop gestartet wurde, auch eine VNC-Verbindung zum Raspberry Pi möglich sein.
Erweiterung: Autostart von TightVNCServer per systemd-Service
Es gibt noch eine zweite Variante, um den TightVNCServer beim Booten automatisch zu starten. Und zwar nicht über die Autostart-Einstellungen des grafischen Desktops, sondern über eine systemd-Service. Diese zweite Variante hat den Vorteil, dass man ihn etwas feiner steuern kann, sofern man sich das über die Kommandozeile zutraut.
Zuerst erstellen wir eine neue Datei im systemd-Systemverzeichnis:
sudo nano /etc/systemd/system/vncserver@.service
Der Inhalt der Datei sieht wie folgt aus:
[Unit]
Description=VNC mit TightVNCServer
After=syslog.target network.target
[Service]
Type=forking
User=pi
PAMName=login
PIDFile=/home/pi/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :%i
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target
In der Zeile, die mit „ExecStart…“ beginnt gibt es die VNC-Parameter „-depth“ und „-geometry“, die man nach eigenen belieben anpassen kann.
Dann die Datei noch speichern und schließen: Strg + O, Return, Strg + X.
Dann muss man systemd noch mitteilen, dass es einen neuen Service/Daemon gibt.
sudo systemctl daemon-reload
Die folgenden Kommandos erläutern, wie man diesen VNC-Dienst auf der Kommandozeile steuert.
VNC-Dienst starten:
sudo systemctl start vncserver@1.service
Laufenden VNC-Dienst stoppen:
sudo systemctl stop vncserver@1.service
Status des VNC-Dienstes anzeigen:
sudo systemctl status vncserver@1.service
Automatisches Starten beim Booten einschalten:
sudo systemctl enable vncserver@1.service
Automatisches Starten beim Booten ausschalten:
sudo systemctl disable vncserver@1.service
Anzeigen, ob der VNC-Dienst beim Booten automatisch gestartet wird:
sudo systemctl is-enabled vncserver@1.service
- 1. Raspberry Pi Grundinstallation
- 10. Raspberry Pi von USB-Laufwerk booten
- 2. ioBroker Grundinstallation / Visualisierung
- 3. ioBroker OpenWeather integrieren und Visualisieren
- 4. ioBroker Installation influxDB, Grafana
- 5. ioBroker Backup Restor nach Spannungsausfall / ioBroker läuft nicht mehr
- 6. Raspberry Pi online Backup komplettes Image der SD Karte
- 7. ESP32 Cam in ioBroker integrieren
- 8. Raspberry Pi VNC Server installieren, für grafischen Fernzugriff
- 9. ioBroker Smartmeter Zähler auslesen