Hi zusammen,
da ich noch ein altes SIMpad herumliegen hatte, dem ich einen Sinn geben wollte und mir das genial SIGTS-Tool durch den benötigten tomcat zu kompliziert war, habe ich dem graphtft Plugin einen VNC-Server spendiert. Dadurch ist es möglich sich mit einem beliebigen VNC-Client zu graphtft zu verbinden und das Bild anzuzeigen. Anregung hierzu war der im ffnetdev Plugin integrierte VNC-Server und das touchtft Plugin.
Features:
- Anzeige des graphtft-Screens auf beliebigen VNC-Clients im Netz (auch mehreren)
- Bedienung des graphtft im Stil von touchtft über die Maus/Touchpanel/etc. am VNC-Client
- Bedienung des vdr über die Tastatur am VNC-Client
- VNC-Server kann beliebige Auflösung haben
- Kein Framebuffer/DirectFrameBuffer o.Ä. nötig
- Es werden effizient die tatsächlichen Änderungen am graphtft verfolgt, um mit VNC so sparsam wie möglich mit dem Netzwerk umzugehen. Das ist besonders bei WLAN-Clients nötig.
- Passwort-Authentifizierung. Man kann im config Verzeichnis des Plugins zwei Passwort-Datei anlegen um den Zugriff auf das VNC zu schützen. Eine Datei legt das control-Password fest, mit dem auch die Bedienung des VDR möglich ist. Die zweite Datei enthält das view-Passwort, mit dem man zwar sehen, aber nicht bedienen kann. (siehe unten bei Bedienung)
Installation:
- graphtft-0.0.16 wie gewohnt entpacken
- Patch im Anhang mit gunzip -c graphtft-vnc.diff.gz | patch -p1 anwenden
- libvncserver isntallieren (Gentoo: emerge libvncserver, verfügbar unter http://libvncserver.sourceforge.net/). Beim Übersetzen von libvncserver ist es auf 64-bit Systemen eventuell nötig, das Compiler-Flag "-fPIC" anzugeben, siehe dazu Post von Frank weiter unten.
- Im Makefile HAVE_VNC=1 einkommentieren und alle anderen Optionen wie gewohnt einstellen
- Plugins wie gewohnt übersetzen
- Beim vdr-start das Plugin laden und VNC-Server starten. Den VNC-Server aktiviert man mit -v <port>. Ein Beispiel mit Framebuffer wäre also vdr -P"graphtft -v 20000 -d /dev/fb0". Wenn man das Plugin rein zum Betrieb mit dem VNC-Server verwenden will, muss man -d dummy mit angeben, um die device-autodetection zu unterdrücken, also zum Beispiel vdr -P"graphtft -v 20000 -d dummy". Um die Fernbedienungs-Funktion über die VNC-Client-Tastatur zu aktivieren, ist die Option -r zusätzlich mit anzugeben, siehe auch unten unter Bedienung.
- mit vnc-client auf den Port verbinden, z.B: vncviewer localhost::20000
[/list=1]
Bedienung:
- Die linke Maustaste ist klick, mittlere ist "Menü", rechte ist "Back" und das Scrollrad "Up" bzw. "Down".
- Im graphtft-Plugin-Setup die gewünschte Auflösung für den Server einstellen. Danach ist jeweils ein vdr-Neustart fällig, weil der vnc-Server dabei nicht neu gestartet wird.
- Zusätzlich gibt es die Möglichkeit über VNC den VDR mittels Tastatur zu steuern. Dazu muss man als Kommandooption -r mit angeben. Beim ersten Start fordert VDR dann zum Lernen der Fernbedienung auf. Man muss also als erstes VDR starten, dann einen VNC-Client und von dort aus die Tasten anlernen (des geht allerdings nur, wenn man das Original-OSD sieht, z.B. über den Fernseher oder den ffnetdev VNC Server, da die Lern-Meldungen nicht auf dem graphtft landen). Die Tastenbelegung landet in der remote.conf als graphtftvnc.KEY. Dort kann man sie auch per Hand editieren oder komplett löschen, wenn man neu lernen möchte.
- Die Passwort-Dateien heißen control.pass und view.pass und man kann sie mit dem beim libvncserver enthaltenen Tool storepasswd <passwd> <pfad> erzeugen. Unter gentoo wird das tool mit installiert und steht im Pfad zur Verfügung, bei der libvncserver source-Distribution ist es im Verzeichnis examples enthalten. Ein Beispielaufruf zum Erzeugen der Passwörter wäre storepasswd ctrlPasswd /video/plugins/control.pass bzw. storepasswd viewPasswd /video/plugins/view.pass. Leider überträgt VNC die Passwörter im Netz im Klartext, das ist also hächstens im lokalen Netz zu empfehlen. Wenn Ihr das VNC übers Internet zugänglich machen wollt, solltet ihr unbedingt über ssh o.Ä. tunneln, da weder der VNC-Server noch das Protokoll ausreichend sicher sind.
TODOS:
[list] - Neustart nach Änderung der Auflösung abschaffen
Credits:
ffnetdev für die VNC-Idee, TouchTFT für die Klick-Idee, libvncserver für den Server und natürlich allen graphtft Entwicklern. TightVNC für die Idee und ein bisschen Code für die effizientere VNC Netzwerk Übertragung.
Dieses Patch ist als Beta zu sehen und ich freue mich über jegliche Art von Lob und Tadel. Bitte meldet auch den (hoffentlich) erfolgreichen Einsatz!
Viele Grüße,
Markus
PS.: Ich hab gerade gemerkt, dass ich Euch versehentlich noch einen anderen Patch für graphtft mit unterjuble: Eine neues Log-Device um auch vom graphtft aus den "standart" - vdr Log-Weg zu benutzen (im Setup-Menü, Log Device = vdr).