Der Rasperry Pi ist ein netter kleiner Linux-Rechner, der zum "Spielen" mit der Hardware einlädt. Gerade Programme wie Scratch oder Minecraft PI sprechen auch junge Nutzer an. Am lokalen Desktop funktioniert alles wunderbar. Wenn man sich per ssh inkl. X11 Forwarding anmeldet, funktioniert vieles. Beim Zugriff per RDP oder VNC funktioniert etwas weniger. Bei Programmen wie der PiCamera per Python oder Minecraft PI bleibt aber bei jeglichem Remote-Zugriff das Fenster schwarz.
UPDATE Februar 2017: Das Problem scheint behoben zu sein:
- https://www.raspberrypi.org/blog/get-back-to-my-pi-from-anywhere-with-vnc-connect/
-
https://www.realvnc.com/docs/raspberry-pi.html#raspberry-pi-setup
Ursache der schwarzen/leeren Fenster
(Soweit ich es bisher verstanden habe!)
Die Fenster bei Minecraft PI oder ähnlichen Programmen auf den normalen remote-Verbindungen (RDP, X11, VNC) bleiben schwarz, da die Programme die Grafik direkt selber rendern und als grafisches "Overlay" auf den Bildschirm platzieren. Dieser Ansatz erlaubt es, aus den doch recht schwachen Ressourcen des PI eine akzeptable Grafikperformance herauszukitzeln.
Die "Overlay"-Technik kam schon vor 30 Jahren bei den ersten Homecomputern zum Einsatz und die damit erzielte Grafikleistung hat mich als Jugendlicher viel zu viele Stunden vor dem Bildschirm gebannt. Der Ansatz ist ein dedizierter RAM-Bereich, der für die Grafiken reserviert wird. Dieser Bereich wird vom Programm gefüllt. Hier lassen sich erstklassig Grafik-Prozessoren (VideoCore) und andere Features ausnutzen. Da die Rechenoperationen nur zwischen CPU/GPU und RAM stattfinden, sind sie entsprechend schnell. Das Bild ist nur im RAM - nicht auf dem Bildschirm. Hierfür muss das Bild im Anschluss zwischen RAM und Grafikausgang kopiert werden. Auch dies sind nahezu atomare und performante Operationen.
So perfekt die Overlay-Lösung am lokalen Arbeitsplatz ist, so hat sie doch unschöne Auswirkungen auf den Remote-Zugriff. Das kopieren des Overlays auf die Remote-Verbindung ist bei weitem nicht so performant, wie der lokale Zugriff (ich würde schätzen: ca. 10 - 100mal langsamer). Daher wird er standardmäßig bei VNC oder RDP nicht aktiviert und die Fenster bleiben schwarz.
Lösungsansatz
RealVNC hat eine Alpha-Version eines VNC-Servers entwicklet, der in der Lage ist, mit Overlays zu arbeiten. Die Software ist kommerziell, bietet aber auch eine kostenlose Lizenz ohne Support an. Der Zugriff per VNC ist mit der neuen Version nicht mehr ganz zu schnell, wie vorher oder gar lokal, aber die Overlay-Fenster sind auch remote sichtbar. Wichtig ist bei der Installation auch die Optimierung des VNC-Viewers, wie in der Anleitung beschrieben.
Zur Installation auf dem Raspberry Pi:
- (siehe auch https://www.realvnc.com/docs/raspberry-pi.html)
- per raspi-config muss die GPU-Memory-Allocation auf mindestens 128MB eingestellt werden (Advanced options -> Memory Split)
- Download des Pakets
- tar xzvf VNC-5.3.2-Linux-ARM-DEB.tar.gz
- apt-get remove tightvncserver
- dpkg -i VNC-Server-5.3.2-Linux-ARM.deb
- Erwerben einer Lizenz (die kostenfreie Lizenz ohne Support reicht aus)
- vnclicense -add XXXXX-XXXXX-XXXXX-XXXXX-XXXXX
- systemctl start vncserver-x11-serviced.service
- systemctl enable vncserver-x11-serviced.service
- vncpasswd -service
- Download der alpha-Version (https://github.com/RealVNC/raspi-preview)
- dpkg -i VNC-Server-5.3.1-raspi-alpha1.deb
- systemctl restart vncserver-x11-serviced.service
Installation auf dem PC
- Download und Installation des Real-VNC-Viewers
-
Einstellungen:
-
Optionen -> Expert -> Advanced
- AutoSelect: False
- ColorLevel: full
- PreferredEncoding: JPEG
-
Optionen -> Expert -> Advanced
Tipps und Tricks
- Wenn die VNC-Versbindung besteht, kann man per F8 das Einstellungsmenu aufrufen und das "Relative Pointer Movement" aktivieren/deaktivieren.
- Falls man von X-Windows auf die Konsole des PI wechseln will (Ctrl-Alt-F2), muss man Ctrl und Alt per F8-Menu aktivieren
- Die Bildschirmauflösung des PI ist per VNC sehr gering. RealVNC bietet dafür folgenden Knowledgebase-Artikel an: https://support.realvnc.com/knowledgebase/article/View/523
Fazit
Wenn man per Shell oder lokal auf dem Rasperry arbeitet, ist man schnelleres gewohnt. Der remote Zugriff mit der alpha-Version von RealVNC auf die Overlay-Grafiken kostet Performance und es "backt" ein wenig. Täglich möchte ich nicht über so eine Verbindung arbeiten müssen. Es ist aber ein guter Anfang und der Zugang lässt sich gerade zum Testen oder Demonstrieren sehr gut einsetzen.
Quellen:
- https://www.raspberrypi.org/blog/minecraft-pi-and-more-over-vnc/
- https://github.com/RealVNC/raspi-preview
- https://www.realvnc.com/docs/raspberry-pi.html
- http://www.winkleink.com/2016/05/minecraft-running-over-realvnc-from.html
- http://www.winkleink.com/2016/05/minecraft-on-raspberry-pi-zero-using.html