Ein Raspberry Pi ist ein toller, preiswerter PC, der für seine kleine Grösse sehr leistungsstark ist. Deswegen ist es so gut für viele verschiedene Projekte geeignet. Es ist jedoch nicht einfach, zutreffende und vollständige Informationen darüber zu finden. In der Code Clinic haben wir viel Zeit darin investiert einen funktionierenden VNC Server einzurichten, damit wir das Pi “headerless” – also ohne eine angeschlossene Tastatur oder Maus – nutzen können.
Wir haben viele Lernprogramme angesehen und unzählige Foren abgeklappert, um dafür zu sorgen, dass VNC funktioniert – alles erfolglos. Und jetzt, wo wir ein gutes und verlässliches Set-Up laufen haben, wollten wir gerne unser Wissen mit anderen teilen.
Den richtigen VNC Server auswählen
Es gibt verschiedene Software Projekte die VNC unterstützen. Aber welches das passende für Deine Bedürfnisse ist hängt davon ab, was Du über VNC machen willst und, letztendlich, von Deinem Pi. Wenn Du mit genau dem gleichen Desktop arbeiten musst, der auf dem an das Pi angeschlossenen Monitor angezeigt wird, kann es sein, dass Du Dich schwer tun wirst zutreffende Anleitungen dafür zu finden. Glücklicherweise haben wir genau so eine Anleitung zusammengestellt.
Solltest Du einfach eine Verbindung zum Pi benötigen, um allgemeine Aufgaben auszuführen und das alles völlig “headerless”, dann empfehlen wir TightVNC zu nutzen, da dies eine kostenlose Open Source Software ist und durch Kompression auch auf langsameren Netzwerken (Internet) gut funktioniert, und es ist einfach in den Softwarequellen verfügbar. Ausserdem, scheint es von allen das verlässlichste zu sein. Um TightVNC zu installieren, musst Du nur hier weiterlesen.
Ein Client Server Modell
VNC entspricht einem traditionellen Client Server Modell. Die Server Software laeuft auf dem Pi und Zugriff erfolgt dort. Die Client Software läuft auf dem Computer der den Hostrechner kontrollieren soll. Der Server und der Client müssen nicht ein und derselbe Computer sein (z.B. kann der Client RealVNC sein obwohl der Server Tight VNC ist), aber einige Eigenschaften funktionieren eventuell nur dann wenn der gleiche Client und Server genutzt werden.
Die TightVNC Server Software Installieren
Zuerst die Software Repository Information auffrischen und zwar so:
sudo apt-get update && apt-get upgrade
So werden die Repository Daten aktualisiert und entsprechende, bereits installierte Software erhalten einen Upgrade. Das ist besonders dann wichtig, wenn Du gerade erst das Operating System installiert hast, da die Repository Information nicht vollständig sein kann.
Als nächstes müssen wir TightVNC von den Repositories installieren:
sudo apt-get install tightvncserver
Den VNC Server starten und ein Passwort konfigurieren
Bei erster Nutzung des Servers wird von Dir verlangt ein Passwort zu erstellen. Dies ist das Passwort zur Remote Verbindung.
/usr/bin/tightvncserver
Es ist nicht nötig ein “view only” Passwort zu erstellen, es sei denn Du hast einen bestimmten Grund dafür. Sobald der Server startet wird Dir mitgeteilt welcher virtueller Desktop eingerichtet wurde. Hier war es:
- New ‘X’ desktop is raspberrypi:1
Der Anhang macht kenntlich, dass es der Virtuelle Desktop 1 ist. Um eine Verbindung herzustellen fügst Du :1 am Ende der IP Adresse im Client hinzu, oder die entsprechende Port Nummer 5901. Wir werden das später noch detaillierter erklären. Du kannst dies mehrfach machen. Jedesmal wenn tightvncserver gestartet wird, nutzt es den als nächstes verfügbaren Desktop, aber im Normalfall brauchst Du nur einen.
Tightvnc zum Startup hinzufügen
Meistens willst Du wahrscheinlich dass der VNC Server automatisch beim Boot up des Pi startet. Obwohl dies eigentlich recht einfach erscheint, ist es oft das erste Hindernis wenn man diese Einrichtung vornimmt. Es gibt verschiedene Tutorials, die es alle ein wenig anders erklären. In allen Fällen ist die Anleitung entweder falsch oder sie funktioniert nicht bei jedem. Als erstes solltest Du überprüfen, dass Du das richtige Terminal Window nutzt. Da man normalerweise automatisch in das Default Pi einloggen, ist es wichtig “commands” über den Standard Terminal zu schicken und nicht den RootTerminal. Glücklicherweise sind die folgenden Anweisungen nicht davon abhängig welchen Terminal Du nutzt.
Damit Tightvnc automatisch startet müssen wir eine neue Init Datei erstellen. Hier unten ist der Code, den wir hinzufügen:
#!/bin/sh ### BEGIN INIT INFO # Provides: tightvncserver # Required-Start: $local_fs # Required-Stop: $local_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start/stop tightvncserver ### END INIT INFO # More details see: # https://codeclinic.de/2014/01/raspberry-pi-tutorial-setting-vnc-default-desktop ### Customize this entry # Set the USER variable to the name of the user to start tightvncserver under export USER='pi' ### End customization required eval cd ~$USER case "$1" in start) su $USER -c '/usr/bin/tightvncserver :1' echo "Starting TightVNC server for $USER " ;; stop) pkill Xtightvnc echo "Tightvncserver stopped" ;; *) echo "Usage: /etc/init.d/tightvncserver {start|stop}" exit 1 ;; esac exit 0
Um den vollständigen Code herunterzuladen nutze die folgenden commands, um den Code durch Penguin Tutors Repository zu bekommen:
wget http://www.penguintutor.com/otherfiles/tightvncserver-init.txt sudo mv tightvncserver-init.txt /etc/init.d/tightvncserver
Zeile 16 nutzt im Moment den Default Username ‘pi’. Falls nötig kannst Du das ändern, aber meistens wirst Du als Default Nutzer einloggen. Auf keinen Fall die “Root” als Nutzer setzen.
Die Datei muss aktualisiert werden, so dass sie zur “Root” gehört (dies ist nicht unbedingt notwendig, ist aber die Standardeinstellung fuer init Dateien). Dieser Schritt fehlt oft von den Tutorials, die wir gesehen haben und die haben bei uns nicht funktioniert. Also würden wir wirklich empfehlen, dieses command auszuführen:
sudo chown root:root /etc/init.d/tightvncserver
Die Datei ausführbar machen indem Du durch führst:
sudo chmod 755 /etc/init.d/tightvncserver
Füge das Script zu den Default runlevels mit dem command:
sudo update-rc.d tightvncserver defaults
TightVNC startet nun wenn Dein (LXDE) Desktop startet. Wir empfehlen jetzt einen Neustart, um sicherzugehen, dass es funktoniert, aber Du kannst auch aufhören ohne neu zu starten. Man kann das ganze manuell starten und stoppen:
sudo /etc/init.d/tightvncserver start
und
sudo /etc/init.d/tightvncserver stop
Anmerkung: Diese Anleitung gilt nur dafür einen TightVNC auf dem Computer laufen zu lassen. Falls Du bestimmte TightVNCs starten und stoppen willst, dann musst Du das Startup Script entsprechend ändern. Für mehr Info über VNC auf Raspbian Desktop lese Teil 2.
14 Kommentare
Bei mir trat folgender Fehler während “sudo apt-get update && apt-get upgrade” auf:
E: Could not open lock file /var/lib/dpkg/lock – open (13 Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
Das lässt sich lösen, indem auch dem “upgrade” root Rechte gewährt werden:
> sudo apt-get update
> sudo apt-get upgrade
Lg
Zu: Den VNC Server starten und ein Passwort konfigurieren
Bei erster Nutzung des Servers wird von Dir verlangt ein Passwort zu erstellen. Dies ist das Passwort zur Remote Verbindung.
–hier müsste meiner Meinung nach stehen: Raspi vorher abschalten und wieder einschalten….
/usr/bin/tightvncserver
–Erst dann konnte ich das Passwort definieren; ansonsten läuft tightVNCserver mit UltraVNC Viewer einwandfrei.
Vor dem reboot muss das Kommando vncpasswd ausgefuehrt werden (unter dem user, unter dem der Server spaeter laufen soll). Dabei wird die Passwortdatei fuer vnc in dessen Home-Verzeichnis angelegt, ohne die der Server spaeter nicht starten wird. Das wird bei der Beschreibung haeufig uebersehen, weil die Datei auch bereits angelegt wird, wenn der Server zum ersten Mal (als Funktionstest) interaktiv gestartet wird. Wenn man diesen Test aber nicht macht oder unter einem anderen Benutzer, hat man spaeter ein Problem.
Alles schritt für schritt befolgt, und dann das:
sh: 1: Syntax error: “(” unexpected
sh: 1: Syntax error: “(” unexpected
sh: 1: Syntax error: “(” unexpected
sh: 1: Syntax error: “(” unexpected
Couldn’t start Xtightvnc; trying default font path.
Please set correct fontPath in the tightvncserver script.
sh: 1: Syntax error: “(” unexpected
sh: 1: Syntax error: “(” unexpected
Couldn’t start Xtightvnc process.
wenn ich die VNC – Session starte, spricht er nur in Englisch mit mir. Was kann der Grung sein?
Ich habe ein anderes Problem. Wenn ich den VNC Viewer starte, dann sehe ich einen leeren Desktop mit einem Papierkorb in der oberen linken Ecke. Keine anderen Symbole, nichts …
Normalerweise arbeite ich über ein SSH Terminal mit dem RasPi.
Muss ich da erst eine grafische Shell starten, und wenn ja, wie stelle ich sicher dass der richtige Bildschirm (:1) addressiert wird?
Schon mal vielen Dank & VG
Cool, läuft direkt so auf dem Pi 2. Und die Grundinstallation mit Noobs geht inzwischen auch via VNC, siehe https://raspberrypi.stackexchange.com/questions/28609/is-it-possible-to-interact-with-the-noobs-install-remotely-vnc-ssh-or-other (Allerdings musste ich verschiedene VNC Viewer durchprobieren bis die Verbindung stand)
Dankeschön.
Verständlich, nützlich und tut 🙂
Vielleicht ergänzt ihr die prima Anleitung noch um den Hinweis wie die Bildschirmauflösung beim Start des VNC servers auf dem pi eingestellt werden kann:
In der ‘/etc/init.d/tightvncserver ‘
mit dieser Anpassung auf 1280 x 720:
su $USER -c ‘/usr/bin/vncserver :1 -geometry 1280×720 -depth 24’
Sehr gutes Tutorial! Genau das wonach ich gesucht habe, vielen Dank für die Mühe!
Anmerkung: Ich hatte mir den Script Code kopiert und hatte einige Fehlermeldungen bei der Registrierung. Es hat sich herausgestellt, dass der Code genau so formatiert und eingerückt seien muss wie hier angegeben (sonst hagelt es Fehler).