Control-plugin

Aus VDR Wiki
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Beschreibung

Autor: Jan Rieger

Stellt das OSD in einer Telnet-Session dar. Damit kann der VDR von jedem telnet-fähigen Rechner aus ferngesteuert werden.

Patch gegen Absturz beim Beenden des VDR

[Link]

diff -Nru control-0.0.2a-kw3/control.c control-0.0.2a-kw3_0/control.c
--- control-0.0.2a-kw3/control.c	2008-09-26 16:19:29.000000000 +0200
+++ control-0.0.2a-kw3_0/control.c	2012-08-04 12:17:08.000000000 +0200
@@ -32,6 +32,7 @@
 class cPluginControl : public cPlugin {
 private:
   // Add any member variables or functions you may need here.
+  cCtrlState* _pState;
   cCtrlGateways* _pReceivers;
   cCtrlGateway*  _pTerminal;
 
@@ -67,6 +68,7 @@
 cPluginControl::~cPluginControl()
 {
   // Clean up after yourself!
+  delete(_pState);
   delete(_pReceivers);
   delete(_pTerminal);
 }
@@ -120,7 +122,7 @@
   // Start any background activities the plugin shall perform.
 
   if (glParPort || glParTerminal && *glParTerminal)
-    new cCtrlState();
+    _pState = new cCtrlState();
 
   if (glParPort) {
     _pReceivers = new cCtrlGateways();

Bilder

Telnet - Kanäle
Telnet - EPG

Softwareanforderungen

  • telnet (Aufruf z. B.: telnet localhost 2002) oder jedes andere telnet-fähige Programm, z. B. PuTTY.

Installation

Das Kompilieren und Installieren erfolgt auf den üblichen Weg der Plugin Installation.

Patches

  • vdr >= 1.3.18

Konfiguration

svdrphosts.conf

Es muss noch in der Datei $VDRCONFIG/svdrphosts.conf der Rechner oder das Subnetz freigeschaltet werden, von dem aus die Telnet-Session eröffnet werden soll, z. B. durch Einfügen von 192.168.0.76 für einen Rechner mit dieser IP. Andernfalls erscheint lediglich die Meldung "access denied" im Telnet-Client.


Parameter

Parameter (kurz) Parameter (lang) Beschreibung
-t <TTY> --terminal=<TTY> VDR über ein virtuelles Terminal steuern (Standard: keins)
-p <PORT> --port=<PORT> TCP-Port auf dem die Verbindungen ankommen sollen (Standard: 2002)

Sonstiges

Probleme

  • Speicherzugriffsfehler beim Beenden einer Session
Beendet man die Sitzung per Ctrl+C, stürzt VDR nach der nächsten OSD-Aktion mit einem Speicherzugriffsfehler ab (weil ein Thread hart beendet wurde, und bei der nächsten OSD-Aktion wird ein nicht mehr existierendes Objekt aufgerufen).
Beendet man die Sitzung hart durch Beenden des Telnet-Programms, bleibt die Verbindung formal bestehen, es kommt also 'nur' zu einer Endlosschleife, so daß die CPU-Last des zugehörigen VDR-Prozesses auf knapp 100% ansteigt.
Siehe Sauberes Beenden einer "Control-plugin"-Telnet-Session ?. Eine von diesen Problemen bereinigte Pluginversion findet sich unten unter "Links"

Tipps

  • Zugriff mit PuTTY
Beim Zugriff auf die Konsole mittels PuTTY muss beachtet werden, dass die Funktionstasten im Linux-Format gesendet werden. Die benötigten Einstellungen finden sich im Konfigurationsdialog der Verbindung unter Terminal -> Keyboard und dort "The Function keys and keypad" auf "Linux" stellen.
  • Wenn man normale Kommandos von einer Shell aus (also ohne SVDRP) an den vdr senden will, kann man cat > /proc/`pidof vdr`/fd/0 verwenden. Siehe auch Artikel im englischen VDRWiki


Aktuelle Version

Version für vdr 1.4.7 und 1.6.0 empfohlener Patch

Links

  1. Homepage des Plugins
  2. Bereinigte Version der Plugins für vdr 1.4.7 und 1.6.0
In anderen Sprachen