Xxv

Aus VDR Wiki
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Beschreibung

XXV steht für "Xtreme eXtension for VDR" und ist ein zentraler Dienst zur Administrierung des VDR und dessen Umgebung, bei dem verschiedene Ports offen sind und diese verschiedene Services bedienen können.

Einen zusätzlichen Port über ein Plugin einzurichten sollte genauso einfach sein, wie auch einen bestimmten Service bereitzustellen. Das Schreiben eines Plugins geht sehr schnell, da der Input (Vdr, DB usw) sowie der Output (Telnet, HTTP, ... ) generisch realisiert wurde. Es soll also z.B. möglich sein, mit einer TelnetConsole, HttpBrowser, WapTelefon, etc. einen Autotimer einzutragen. Dieser sollte wesentlich schneller die EPG-Daten durchsuchen können (MySQL-Datenbank) und über ein Interface dem VDR den neuen Timer mitteilen. Dabei wird natürlich auch dem singleModus des SVdrP Rechnung getragen und nur ein Befehl abgesendet. Danach wird der Port sofort wieder geschlossen, damit andere Programme wieder auf den svdrp zugreifen können.

Lange Rede kurzer Sinn, hier ein kleiner Überblick der derzeitigen Funktionen:

  • komplett in Perl realisiert
  • sehr generisches Frontend
  • Plugin system
  • Datenbank Unterstützung
  • Epg-Daten werden regelmäßig geparst und eingetragen
  • sehr einfaches Pluginkonzept für zukünftige Erweiterungen
  • mehrere Services aus einem Dienst (Telnet, HTTP, ...)
  • Dump-Interface fuer externe Programme

Bilder

Videotextscreen
Stone Skin
Remote
Main Screen
Autotimer
xxv-deltab.png xxv-stone.png xxv-snow.png xxv-blue.png

Softwareanforderungen

  • mysql-server
  • verschiedene Perl::Module (siehe Installation)
  • vdr2jpeg (optional)
  • mplayer (optional), Installation siehe mplayer-plugin

Installation

Subversion checkout

Wir unterstützen ab sofort Subversion, das heisst also für Euch, dass auf Eurem System Subversion installiert sein sollte. Wie Subversion-Clients auf Eurem System installiert werden könnt Ihr hier nachlesen:

 http://subversion.tigris.org/project_packages.html

Um einen Checkout zu machen (also sich das aktuelle xxv zu ziehen) ruft ihr einfach folgendes auf:

 cd $SOURCEDIR
 svn checkout http://bandt.dyndns.org/repos/XXV

Xxv entpacken

cd $SOURCEDIR
tar xvzf xxv-<VERSION>.tar.gz

Man page installieren

cd $SOURCEDIR
cp doc/xxvd.1 /usr/share/man/man1

Logrotate conf installieren

cd $SOURCEDIR
cp etc/logrotate.d/xxvd /etc/logrotate.d/xxvd

MySQL

per Source

cd $SOURCEDIR
tar xvzf mysql-<VERSION>.tar.gz
./configure --prefix=/usr/local \
            --libexecdir=/usr/local/bin \
            --without-extra-tools \
            --without-bench
make
make install
cd /usr/local/lib
ln -s mysql/libmysqlclient.so* .
groupadd mysql
useradd -g mysql mysql
chown -R mysql var
mysql_install_db --user=mysql &
ldconfig

Debian-spezifisch

apt-get install mysql-server

Perl Module

Nun folgen einige Perl Module, da gibt es wie 2 Wege:

per cpan

Der empfohlene Weg, falls man kein Debian System hat: Mittels "Bundle::Xxv" per CPAN, einfach in das $SOURCEDIR/lib Verzeichnis wechseln und das Bundle installieren. Dazu muss man LEIDER dem cpan das Modul unterschieben, es kann sein das bei den mkdir's Fehlermeldungen kommen das dieses Verzeichniss bereits schon existiert, das könnt ihr getrost ignorieren. Alle Module die benoetigt werden stehen in diesem Bundle und werden automatisch installiert:

cd $SOURCEDIR/xxv-<VERSION>/lib
mkdir -p ~/.cpan/Bundle
cp Bundle/Xxv.pm ~/.cpan/Bundle
perl -MCPAN -e 'install Bundle::Xxv'

Hinweis: Ich musste bei meiner SuSE distri:

 cd $SOURCEDIR/xxv-<VERSION>/lib
 mkdir -p /etc/perl/cpan/Bundle
 cp Bundle/Xxv.pm /etc/perl/cpan/Bundle
 perl -MCPAN -e 'install Bundle::Xxv'

verwenden.

per Source

Oder eine andere Möglichkeit via Source.

  • <NAME>-<VERSION>.tar.gz

Die Installation ist für die meisten Pakete identisch:

cd $SOURCEDIR
tar xvzf <NAME>-<VERSION>.tar.gz
cd <NAME>-<VERSION>
perl Makefile.PL
make
make install
cd -

Debian-spezifisch

woody
apt-get install libdbi-perl \
                libevent-perl \
                libtimedate-perl \
                libtime-hires-perl \
                libmime-base64-perl \
                libproc-process-perl \
                liblocale-gettext-perl \
                libgd-perl \
                libwww-mechanize-perl \
                libwww-mechanize-formfiller-perl \
                libproc-process-perl \
                liblog-log4perl-perl \
                libio-zlib-perl \
                libxml-simple-perl
Sarge
apt-get install libdbi-perl \
                libevent-perl \
                libgd-gd2-noxpm-perl \
                libgd-graph-perl \
                libgd-graph3d-perl \
                libgd-text-perl \
                libhtml-parser-perl \
                libhtml-tagset-perl \
                libhtml-template-perl \
                libhtml-tree-perl \
                liblocale-gettext-perl \
                libnet-telnet-perl \
                libterm-readkey-perl \
                liburi-perl \
                libwww-mechanize-perl \
                libwww-mechanize-formfiller-perl \
                libwww-perl \
                liblog-log4perl-perl \
                libxml-simple-perl \
                libproc-process-perl \
                libio-zlib-perl \
                libnet-xmpp-perl \
                libterm-readline-gnu-perl \
                libxml-rss-perl \
                libtemplate-perl

Gentoo-Spezifisch

Für das Paket WWW-Mechanize-FormFiller muss der Deutsche Overlay der Ebuilds eingebunden sein. Eine Anleitung hierfür gibt es unter http://www.gentoo.de/main/de/downloads.xml

Gegebenenfalls muss ausserdem das Paket Log-Log4perl in /etc/portage/package.keywords un-maskiert werden:

dev-perl/Log-Log4perl ~x86


Installation der Pakete mit

emerge dev-perl/DBI \
       dev-perl/Event \
       dev-perl/GDGraph \
       dev-perl/GD \
       dev-perl/GDTextUtil \
       dev-perl/GDGraph \
       dev-perl/GD \
       dev-perl/GDTextUtil \
       dev-perl/GD-Graph3d \
       dev-perl/HTML-Parser \
       dev-perl/HTML-Tagset \
       dev-perl/HTML-Template \
       dev-perl/HTML-Tree \
       dev-perl/Locale-gettext \
       dev-perl/Net-Telnet \
       dev-perl/TermReadKey \
       dev-perl/URI \
       dev-perl/WWW-Mechanize \
       dev-perl/WWW-Mechanize-FormFiller \
       dev-perl/libwww-perl \
       dev-perl/Log-Log4perl \
       dev-perl/XML-Simple \
       dev-perl/Proc-ProcessTable \
       dev-perl/Compress-Zlib \
       dev-perl/Net-XMPP \
       dev-perl/Term-ReadLine-Perl \
       dev-perl/XML-RSS \
       dev-perl/TimeDate \
       dev-perl/Template-Toolkit

vdr2jpeg

Um aus den Aufnahmen Bilder für Xxv zu extrahieren, gibt es zwei Möglichkeiten, mplayer oder vdr2jpeg, letzteres hat bedeutend weniger Abhängigkeiten, setzt lediglich ffmpeg-0.4.9-pre1 voraus. (Näheres in der Readme).

cd $SOURCEDIR
wget http://www.deltab.de/vdr/vdr2jpeg-0.0.8b.tgz
tar [...] vdr2jpeg-0.0.8b.tgz
cd vdr2jpeg-0.0.8b

oder den aktuellen Stand per subversion

cd $SOURCEDIR
svn checkout http://bandt.dyndns.org/repos/vdr2jpeg
cd vdr2jpeg

Im Makefile sollten noch das Verzeichnis von ffmpeg angepasst werden und kompiliert wird mit

make

Zur Installation unter /usr/local/bin genügt folgender Befehl

make install

ein abweichender Installationsort kann per folgenden Befehl make install INSTALLBINDIR=/usr/bin" angegeben werden.

Danach muss die Previewerstellung mit vdr2jpeg aktiviert werden. Dazu ist im Browser, unter Konfigurations Punkt Aufnahmen / RECORDS > previewbinary/previewcommand anzupassen. Es ist aber auch möglich die Datei xxvd.conf direkt zu editieren.

[RECORDS]
previewbinary=/usr/local/bin/vdr2jpeg
previewcommand=vdr2jpeg

Konfiguration

Starten des MySQL Servers mit:

mysqld_safe --user=mysql &

Anlegen der Datenbank xxv per mitgeliefertem Script, für den von xxv genutzten mysql-Account vorher in 'contrib/create-database.sql' den Username und dessen Passwort den persönlichen Vorlieben anpassen.

cd $XXVDIR
cat contrib/create-database.sql | mysql -u root

oder alternativ in einzelen Schritten :

mysql -u root -e "create database xxv;"
mysql -u root -e "grant all privileges on xxv.* to username@localhost IDENTIFIED BY 'password';"
mysql -u root -e "flush privileges;"

Die Datenbankverbindung und der mysql-Account ist in $HOMEDIR/.xxvd.cfg einzutragen:

[General]
DSN=DBI:mysql:database=xxv;host=localhost;port=3306
PWD=password
USR=username

Xxv starten

Damit xxv bei jedem Systemstart als Dienst gestartet werden kann, haben wir ein Startskript unter etc/xxvd gespeichert, das man in seinem System installieren sollte. Vorher sollte man aber noch den Pfad eingeben, wo sich Euer xxv befindet:

cd $SOURCEDIR/xxv-<VERSION>
nano etc/xxvd

Anstelle von nano könnt ihr natürlich auch einen anderen Editor verwenden. In den ersten Zeilen einfach das $SOURCEDIR eintragen und mit ctrl-o (bei nano) abgespeichern.

# -------------------------------------------

# In welchem Ordner befindet sich bin/xxvd
# Where is bin/xxvd
FOLDER="/root/XXV" 

# -------------------------------------------


Unter SuSE ergänzt ihr noch am Anfang der Datei, z.B. nach '# xxvd Start/Stop the xxvd daemon':

### BEGIN INIT INFO
# Provides:       xxvd
# Required-Start: vdr
# Required-Stop:
# Default-Start: 3 5
# Default-Stop:  0 1 2 6
# Description:   telnet/http config server, for the DVB Settop box vdr program
### END INIT INFO

Dann gebt ihr (bei SuSE):

cp etc/xxvd /etc/init.d/.
cd /etc/init.d/
insserv xxvd

ein. Damit wird XXV bei jedem Booten des Rechners nach vdr gestartet. Wenn Ihr kein SuSE verwendet, gehts weiter mit:


Damit ihr wisst, in welchem Runlevel ihr gerade lauft, solltet ihr runlevel aufrufen:

runlevel

Den Level merkt ihr Euch und erstellt im dem Verzeichnis /etc/rc[runlevelnummer].d einen symbolischen Link auf xxvd. Bei meinem Beispiel in Level 2:

cd $SOURCEDIR/xxv-<VERSION>
cp etc/xxvd /etc/init.d/.
chmod 775 /etc/init.d/xxvd
ln -s /etc/init.d/xxvd /etc/rc2.d/S90xxvd  

Starten von xxv:

cd $SOURCEDIR/xxv-<VERSION>
./bin/xxvd --configfile=./xxvd.cfg && tail -f /var/log/xxvd.log

oder als Dienst:

/etc/init.d/xxvd restart 

Dann einen Browser aufrufen mit folgender URL:

 http://ip_deines_vdrs:8080

oder per Telnet

 telnet [ip deines vdrs oder localhost] 8001
User:     xxv
Password: xxv

Plugins

General

General ist eigentlich kein Plugin. Da es aus Sicht von xxv so aussieht, sollte es der Vollständigkeit halber hier aufgelistet werden. Hier werden globale Einstellungen wie Logfilepfad, Datenbankserver usw. aufgelistet.

Manual: http://www.xpix.de/downloads/xxv/doc/General.html

  • Fast alle Module können in Ihrer Funktion deaktiviert werden (Einstellungen -> ModName -> Active = 'no').
  • Die Templates sind jetzt ebenfalls lokalisiert und übersetzbar, das heisst der Skinprogrammierer kann über die gettext Routine auf die Übersetzungsdatenbank zugreifen.

Autotimer

Hier werden die EPG Daten nach Sendungen mit einem bestimmten Text in title, subtitle und text durchsucht und diese als Timer programmiert.

Manual: http://www.xpix.de/downloads/xxv/doc/AUTOTIMER.html

  • Autotimer können bestimmen ob Timer mit VPS und eigenem Vor- und Nachlauf angelegt werden.
  • Bei einem Update werden jetzt zusätzlich auch die Channelnamen der gefundenen Events angezeigt.
  • Autotimer - Einstellung - exclude: Generelles Ausschliessen von Kanälen, um Kanäle ab eine Position in der Kanalliste von der Suche nach Events auszuschliessen.

Suchbegriffe können per Komma als logisch UND verkettet werden bzw. per Minuszeichen ausgeschlossen werden.

Folgende Beispiel sollten dies verdeutlichen :

Doku,Astronomie --> Suche nach Doku UND Astronomie
Ryan,-Hanks --> Suche nach Ryan UND NICHT Hanks


Tipp: Diese Funktionalität ist auch in der normalen EPG-Volltextsuche verfügbar.

Timers

Dieses Modul erlaubt das Löschen, Erstellen und Editieren der neuen Timer, sowie deren Darstellung.

Manual: http://www.xpix.de/downloads/xxv/doc/TIMERS.html

  • Timer referenzieren jetzt auf Ihren EPG Eintrag, falls dieser vorhanden ist.
  • Inactive Timer werden jetzt gelöscht falls diese mehr als einen Monat in der Zukunft liegen. Es kam öfters vor, das ein Timer per Autotimer programmiert wurde, dieser wurde wegen Desinteresse deaktiviert. Wenn der Timer abgelaufen war, tauchte er automatisch genau einen Monat später wieder in der Liste auf. Diese "Timerleichen" mussten dann immer mühsam von Hand gelöscht werden. Das passiert jetzt automatisch wenn TIMERS -> Einstellungen -> Deactive auf 'yes' gesetzt ist.

EPG

Hier wird die epg.data eingelesen und deren Einträge in einer Datenbank abgespeichert.

Manual: http://www.xpix.de/downloads/xxv/doc/EPG.html

  • Events werden gesondert gekennzeichnet, wenn diese als Timer aufgezeichnet werden.

Channels

Hier wird die channels.conf eingelesen und deren Einträge in einer Datenbank abgespeichert.

Manual: http://www.xpix.de/downloads/xxv/doc/CHANNELS.html

HTTPD

Dieses Modul stellt einen HTTP Server sowie ein Webinterface zur Verfügung, um xxv per Browser bedienen zu können.

Manual: http://www.xpix.de/downloads/xxv/doc/HTTPD.html

  • Eine Processbar wird angezeigt wenn Prozesse gestartet werden die etwas länger dauern (Musik neu einlesen, getCovers)
  • Es kann jetzt eine Startseite unter Preferences -> HTTPD -> StartPage individuell festgelegt werden, (Jetzt läuft, Programm, Autotimer, ...)

Telnet

Dieses Modul stellt einen Telnet Server zur Verfügung, um xxv per "telnet localhost portnummer" bedienen zu können.

Manual: http://www.xpix.de/downloads/xxv/doc/TELNET.html

Interface

Dieses Modul stellt einen Daten-Server zur Verfügung, um xxv mit anderen GUIs bedienen zu können.

Manual: http://www.xpix.de/downloads/xxv/doc/INTERFACE.html

Wapd

Dieses Modul stellt einen WapD Server zur Verfügung, um xxv mittels Wap Browser (Mobiltelefon) bedienen zu können.

Zur Zeit noch ohne wirkliche Funktion.

Manual: http://www.xpix.de/downloads/xxv/doc/WAPD.html

Music

Das MusicPlugin stellt eine Medienbibliothek sowie einen Icecast Streamserver zur Verfügung.

Manual: http://www.xpix.de/downloads/xxv/doc/MUSIC.html

  • WebInterface: Viele User hatten ja mehr als 1000 MP3 Titel auf ihrem vdr rumlungern, so das damit das Javascript Konzept absolut nicht damit klar kam. Das neue Interface ist nun reines html und zum Glück auch wesentlich schneller im Seitenaufbau.
  • GetCovers: Diese Funktion ist ein Bonus bei der xxv mittels des Modul Robot einmal am Tag die Covers der Alben als Bilddateien aus dem Internet herunterladen kann. Genutzt wird dafür das Perlmodul WWW::Mechanize, welches zusätzlich installiert werden muss. Dieses Modul emuliert die normale Bedienung in einem Browser, bei der ein Suchbegriff (Albumnamen, Erscheinungsjahr) auf der Suchseite eines Musikportals eingegeben wird und das Ergebniss wird dann nach den gewüschten Albumcover durchsucht. Und dieses Coverbild wird dann im Vorschauverzeichnis gespeichert und in der Albumliste angezeigt.

Records

Dieses Plugin stellt alle Aufnahmen übersichtlich dar und erlaubt verschiedene Aktionen auf den einzelnen Records.

Manual: http://www.xpix.de/downloads/xxv/doc/RECORDS.html

  • Es werden jetzt die Schnittmarken grafisch in der Recordübersicht dargestellt.
  • Viele Eigenschaften des Records sind jetzt editierbar. (Marks, Lifetime, Priorität,...)
  • Andreas hat sich dem leidigen und wesentlich unperformanten Weg der Previewbilderstellung angenommen und ein sehr schlankes C Programm namens 'vdr2jpeg' geschrieben. Dieses Programm tut im Grunde nichts anderes als Previewbilder bei bestimmten Marken zu erstellen. Dieses wir natürlich auch von xxv unterstützt und kann per "svn co http://bandt.dyndns.org/repos/vdr2jpeg" geholt werden. Nähere Angaben zur Installation könnt ihr in der README Datei des Programmpaketes nachlesen.
  • Serien, oder Aufnahmen die in einen Gruppenordner zusammengefasst sind, werden in rlist als Ordner angezeigt.

Config

Das Konfigurations Plugin erlaubt es, während der Laufzeit verschiedene Parameter der Interfaces (HTTP, Telnet, ..) zu verändern und abzuspeichern.

Manual: http://www.xpix.de/downloads/xxv/doc/CONFIG.html

Grab

Grab stellt das Livebild des VDR als JPEG Bilddatei zur Verfügung.

Manual: http://www.xpix.de/downloads/xxv/doc/GRAB.html

  • grab ist jetzt in der Lage, zusätzliche Informationen (wie z.B. den Kanal) in das gegrabbte Livebild einzublenden.

Remote

Dieses Plugin stellt eine Fernbedienung und in Verbindung mit Grab auch ein Livebild dar. Somit lässt sich der VDR per Interface rudimentär bedienen.

Manual: http://www.xpix.de/downloads/xxv/doc/REMOTE.html

Status

Status stellt alle Systeminformationen in den Interfaces als übersichtliche Darstellung dar.

Manual: http://www.xpix.de/downloads/xxv/doc/STATUS.html


  • Ein besonders nettes Feature, es werden jetzt Graphen erstellt welche die Speicherauslastung sowie die Last eines bestimmten Zeitraumes (Einstellungen -> Status -> History) darstellen. Das Besondere daran, die Grafiken werden aus den Templates heraus erstellt, so das jeder geneigte Skinprogrammierer seine eigenen Grafiken bei Bedarf erstellen kann. In dem HTML Skin kann man das sehr schön unter Status sehen.

SVDRP

Dieses Plugin stellt alle Befehle der svdrp Schnittstelle des VDR zur Verfügung.

Manual: http://www.xpix.de/downloads/xxv/doc/SVDRP.html

User

Eine Userauthentifikation, die in allen Interfaces Kennung und Passwort des Users abfragt und eine Levelverwaltung zur Verfügung stellt.

Effektiv kommen bei xxvd drei verschiedene Accountebenen zu tragen :

  • Die normale Ebene des Betriebsystems (Linux)

In diesem Account wird xxvd ausgeführt. Der Account wird in der Variable RUNAS in /etc/init.d/xxvd definiert. Damit xxvd innerhalb eines unprivilegierten Accounts ausgeführt werden kann, benötigt dieser Account Leserechte in xxv-Verzeichnis, und Schreibrechte auf die cfg-Datei, pid-Datei, log-Dateien und Schreibrechte im Preview-Verzeichnis des Skins.

  • Den Mysql Account

Dieser Zugang wir nur benötigt um die Daten in der mySQL Datenbank anzusprechen, deshalb benötigt er Lese- und Schreibrechte innerhalb der aktiven XXV-Datenbank (mySQL:DATABASE) (GARANT SELECT, INSERT, UPDATE, CREATE, DROP, usw.)

  • Und dann gibt es den XXV-Account innerhalb der XXV Benutzerverwaltung.

Er dient nur dazu einzelnen xxv-Kommandos freizuschalten oder zu sperren. Momentan ist dies nur in den drei Gruppen gast,user,admin möglich.

  • gast, darf Daten wie EPG-Daten oder Aufnahmen betrachten
  • user, darf Daten wie Autotimer, Timer verändern
  • admin, darf User verwalten

Der Standardzugang nach Neuinstallation hat folgendes Login und sollte über die XXV-Benutzerverwaltung bei Freischaltung in Internet gelöscht oder verändert werden.

Login:xxv 
Passwort: xxv

Wenn XXV nur im lokalen Netz verwendet wird, kann die XXV-Benutzerverwaltung auch komplett in den Präferenzen abgeschaltet werden.

[USER]
Active=n

Manual: http://www.xpix.de/downloads/xxv/doc/USER.html

  • Bestimmte Parameter können jetzt bei dem User eingestellt werden. Dabei nutzen wir ein generisches System, wenn zum Beispiel der User xpix nur den Skin Snow sehen möchte kann man das in den Usereinstellungen unter 'Prefs' mit 'HTTPD::HtmlRoot=snow' sehr schön einstellen. Natürlich kann man auch alle anderen Parameter der Module dem User zuteilen, z.B. möchten wir zusätzlich, das der User xpix nur Timer definieren darf, deren Priorität lediglich bei 30 liegt. Das würde dann so aussehen:
   HTTPD::HtmlRoot=snow, TIMERS::Priority=30

Der Syntax lautet also 'Modulename::Parameter=Wert, Modulename::Parameter=Wert, ...' ... wenn der User xpix auch nur als Level=User eingestellt ist, kann man somit verhindern das dieser seine Einstellungen ändert.

  • Der User kann jetzt auch einen Logout vornehmen.

Vtx

Diese Modul zeigt Videotextseiten an.

Manual: http://www.xpix.de/downloads/xxv/doc/VTX.html

Skins installieren

Es ist möglich das Webinterface in einem völlig anderem Aussehen sich darstellen zu lassen. Dafür muss man sich nur den gewünschten Skin herunterladen und das Paket im $SOURCEDIR entpacken:

cd $SOURCEDIR
wget http://www.deltab.de/vdr/xxv-stone-0.40.tgz
tar zxvf xxv-stone-0.40.tgz

oder den aktuellen Stand per subversion

cd $SOURCEDIR
svn checkout http://bandt.dyndns.org/repos/XXV-Skins

Durch das Entpacken sollte ein neues Verzeichnis mit dem Namen stone mit den Daten des Skin entstanden sein. Anschliessend ruft man das Webinterface auf (http://ip_deines_vdrs:8080) und stellt den neuen Namen des Skin unter Preferences -> HTTPD -> HtmlRoot ein. Nur noch mit SendData den geänderten Skin aktivieren. Und mit eine vollständigen Neuladen der xxv-Webseite im Browser (IE - Taste F5), die Darstellung und den Cache des Browser aktualiseren.

Natürlich kann man auch die Konfigurationsdatei direkt editieren und xxv danach neu starten:

cd $HOMEDIR
nano .xxvd.cfg
[HTTPD]
Clients=5
HtmlRoot=stone
Port=8080

XXV aktuell halten - Update von einer älteren Version

Wir gehen davon aus das du schon ein xxv bei dir installiert hattest und zeigen dir wie du auf eine neue Version updaten kannst. Als erstes müssen wir den Dienst stoppen:

 vdr:~# /etc/init.d/xxvd stop

... mit Subversion

Am einfachsten ist ein Update mit Subversion zu machen, das update Skript aufrufen und danach xxv neu starten:

 cd $SOURCEDIR
 svn update

... als Download

Natürlich wird es auch weiterhin die Möglichkeit geben, von dem vorhandenen Download Server http://xpix.dieserver.de/downloads/xxv/?M=D sich aktuelle Pakete zu holen und diese dann zu entpacken. Aber(!), diese Pakete werden nur in unregelmässigen Abständen zur Verfügung gestellt. Sind also nicht immer aktuell:

 cd $SOURCEDIR
 wget http://xpix.dieserver.de/downloads/xxv/xxv-<VERSION>.tgz
 tar xvzf xxv-<VERSION>.tar.gz

Datenbankstruktur anpassen

Neue oder erweiterte XXV-Funktionen ziehen oft auch eine Änderung der Datenbankstruktur nach sich. Nach der Installation eines Updates, solltet ihr daher zunächst immer das Skript contrib/update-xxv aufrufen. XXV darf zu diesem Zeitpunkt noch nicht gestartet sein.

Im einfachsten Fall müsst ihr keinerlei Parameter an das Skript übergeben. Dies setzt jedoch voraus, dass MySQL auf dem lokalen Rechner installiert ist, dass die Datenbank 'xxv' heisst und der Datenbankadministrator 'root' kein Passwort besitzt.

 cd $SOURCEDIR/contrib
 ./update-xxv 

Darüber hinaus könnt ihr dem Skript eine Reihe von Parametern übergeben, die neben dem Zugriff auf die Datenbank auch ein paar erweiterte Funktionen steuern. Einen Überblick über alle Parameter erhaltet ihr mit:

 cd $SOURCEDIR/contrib
 ./update-xxv -h
 
 update-xxv
 ----------
 
 Usage: update-xxv [-b] [-h hostname] [-P port] [-d database]
                   [-u user] [-p password]
 
 -b <target>    : Make a backup first to <target>.gz
 -H <hostname>  : Host name of the MySQL server (default: localhost)
 -P <port>      : Port number of MySQL server
 -d <database>  : XXV database name (default: xxv)
 -u <user>      : Username (default: root)
 -p <password>  : Password (default: no password)
 -a             : Ask for password
 -f             : Force upgrade, do not check version
 -h             : Help

Mit dem Parameter -b wird vor dem Update ein Backup der Datenbank durchgeführt. Dazu muss der Name der Backupdatei (ohne die Endung .gz) angegeben werden. Den Zugriff auf den MySQL-Server steuern die Parameter -H (Host-Name) und -P (Port). Standardmäßig sind dies 'localhost' und Port 3306. Sollte die Datenbank nicht 'xxv' heissen, so könnt ihr mit -d einen anderen Namen wählen.

Den Datenbanknutzer könnt ihr mit -u und sein Passwort mit -p spezifizieren. Um das Update durchführen zu können, benötigt der Datenbanknutzer FILE -Rechte. In der Regel hat nur der Administrator 'root' dieses Recht.

Sicherheitshinweis:
Mit der Übergabe des Passwortes in den Kommandozeilenparametern wird das Passwort für einen Moment für alle anderen User des lokalen Systems sichtbar ('ps -fA' zeigt alle Prozesse mit ihren Parametern an!). Alternativ habt ihr daher die Möglichkeit, mittels -a das Update-Skript nach dem Passwort fragen zu lassen. Allerdings wird das Passwort mehrmals abgefragt, da verschiedene Datenbankoperationen notwendig sind.

Datenbankupdates werden von update-xxv nur dann durchgeführt, wenn Sie wirklich notwendig sind. Sollte mal etwas schief laufen oder ihr möchtet auf eine alte Datenbankstruktur 'downgraden', so könnt ihr das Update mit -f erzwingen.

Bei einem erfolgreichen Datenbankupdate gibt update-xxv eine Liste der durchgeführten Aktionen aus:

 update-xxv
 ----------
 
 Info: Checking Server
 Info: Checking Database
 Info: Retrieving current version
 Info: current database version: 0
 Info: new database version: 1
 Info: Starting update...
 Info: Saving Data
 Info: Updating Database
 Info: Restoring Data
 Info: Updateing Version
 Info: Update successful


Im Fehlerfall werden "Error:..." -Meldungen ausgegeben. Die wahrscheinlichste Ursache für einen Fehler ist der Datenbankzugriff. Ihr solltet zunächst also Username, Passwort, Datenbankname und Host überprüfen.

Nach dem Update könnt ihr XXV wieder starten:

 /etc/init.d/xxvd start

Anschliessend die Log-Datei kontrollieren:

 tail -f /var/log/xxvd.log

Sollten im Logfile irgendwelche Fehlermeldungen wegen fehlender Perl-Module auftauchen, so solltet ihr diese installieren. Wer nicht mehr weiss wie das geht, dieses Wiki wird Dir helfen ...

Probleme

  • Fehlermeldung wenn ich versuche XXV mit subversion zu aktualisieren.
 '/lab/vdr-1.3.34_new/tools/xxv-0.50' is not a working copy

Logisch, du versuchst eine nicht ausgecheckte Version mit subversion zu aktualisieren. Die Version die ich zum Download anbiete ist eine exportierte aber keine originale subversion version ;)

Also, das alte löschen. Dann mit svn eine frische Version holen und später einfach nur noch updaten:

checkout:

 cd $SOURCEDIR
 rm -rf xxv-0.XX
 svn co http://sonne.bandt.net/repos/XXV

update:

 svn up

Beim update unbedingt darauf achten das kein File mit einem 'C' gekennzeichnet wird. Sollte das der Fall sein, dann einfach altes Dir löschen und einen neuen Checkout machen. Das passiert wenn man selbst änderungen in dem sources macht und svn dann darüber stolpert.


  • Hat XXV ein Memory Leak? Bei mir steigt der Speicherverbrauch in ca. 6 Stunden um das doppelte.

Leider hatte das EventModul ein Speicherleck, das mit der Version >= 1.05 gefixt wurde. Bitte installiere dein Eventmodul neu:

 perl -MCPAN -e 'install Event'

  • Ich habe meinen vdr auf 1.3.26 - .27 aktualisiert und benutze xxv V0.42. Ich kann keine Aufnahmen mehr im Interface sehen

In diesen Versionen hatte Klaus etwas am SVDRP Interface rumgeschraubt, so das XXV nichts mehr damit anfangen konnte. Entweder du aktualisierst dein XXV per subversion oder du benutzt einen Patch den wir auf folgender URL veröffentlicht haben:

http://www.vdr-portal.de/board/thread.php?postid=322895#post322895

Solltest du die c't Distribution benutzen, dann aktualisiere dein xxv Paket per apt-get, danach sollte der Fehler nicht mehr auftreten.



  • Meine Sambapfade zeigen komische Zeichen bei Umlaute in den Pfaden der Aufnamen und der Liveplayer spielt diese Aufnahmen nicht ab

Schau hier: http://www.vdr-wiki.de/wiki/index.php/Samba#Probleme


  • Hab das Passwort für den user xxv geändert. Und komm jetzt nicht mehr an Admin-Rechte.

Die schnelle Lösung für dein Problem, in mysql einloggen und die Usertabelle löschen:

vdr:~# mysql -u root -p           
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8 to server version: 3.23.49-log
 
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
 
mysql> use xxv;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
 
Database changed
mysql> drop table USER;
Query OK, 0 rows affected (0.12 sec)
 
mysql> quit

Dann xxv neu restarten:

vdr:~# /etc/init.d/xxvd restart                                                 
Stop bin/xxvd: xxvd with pid 744 killed
Start bin/xxvd: xxvd started with pid 3563.

Danach solltest du dich mit xxv:xxv normal einloggen können.



  • Es werden keine Previewimages erstellt:

Folgende Checkliste sollte dir helfen:

* stimmt der Pfad zum mplayer in der RECORDS Config
* ist der mplayer eingeschaltet unter Records->config->mplayercommand?
* richtige Version unter Records->config->mplayercommand?
* stimmt der Pfad zum Videoverzeichnis?
* ist das Previewverzeichnis schreibbar für xxvd?

Bedenke auch, die Vorschaubilder werden im Hintergrund generiert. Das heisst erst nach einer kleinen Weile sind die ersten Previews zu sehen (ca. 2min).



  • Es werden keine Previewimages erstellt und in der xxvd_mplayer.log steht:
Unknown option on the command line: jpeg

Ab mplayer-1.0pre6 muss die aufrufende Kommandozeile angepasst werden, xxv macht das für dich. (Konfigurieren -> RECORDS -> mplayercommand). Stell einfach den entsprechenden Player ein, der auf deinem System installiert ist. MPlayer1.0pre5 und älter sowie MPlayer1.0pre6 und neuer. Du bekommst die Versionsnummer deines mplayers mit mplayer -v zu sehen:

vdr:~/XXV# mplayer -v
MPlayer 1.0pre5-2.95.4 (C) 2000-2004 MPlayer Team

CPU: IDT/Centaur/VIA C3 Samuel 2 (WinChip C5B core)/C3 Ezra 600.9 MHz (Family: 6,    Stepping: 3)
Detected cache-line size is 32 bytes
3DNow supported but disabled
CPUflags:  MMX: 1 MMX2: 0 3DNow: 0 3DNow2: 0 SSE: 0 SSE2: 0
Compiled for x86 CPU with extensions: MMX
...



  • im Logfile taucht folgende Warnung auf:
11 (10305) [03:27:27 03.02.2005] [Fatal] Cannot build telnet initial socket.

Du musst eine andere Portnummer fuer den Telnetserver in der ~/.xxvd.cfg festlegen. Den Port den du benutzten willst, ist wahrscheinlich schon belegt.



  • im Logfile tauchen ab und zu folgende Warnungen auf:
 37 (805) [12:01:34 02/02/05] Can't locate object method "timers" via package    "XXV::MODULES::EPG" (perhaps you forgot to load "XXV::MODULES::EPG"?) at   /root/XXV/bin/../lib/Template/Stash.pm line 650.

Diese Meldungen können ignoriert werden. Perl versucht per eval eine Methode aufzurufen.



  • Beim Starten erscheint folgende Warnung:
 Start bin/xxvd: perl: warning: Setting locale failed.
 perl: warning: Please check that your locale settings:
 LANGUAGE = (unset),
 LC_ALL = (unset),
 LANG = "de_DE@euro"
 are supported and installed on your system.
 perl: warning: Falling back to the standard locale ("C").

Ursache ist, das xxvd zwar entsprechende lokalisierten Texte mitbringt, aber auf dem Rechner keine gleichnamige Systemlokalisierung vorhanden ist. Eine Unterdrücken dieser Meldung geht mit "export PERL_BADLANG=1", aber sinnvoller ist es die Systemlokalisierung in der gewählten Sprache ebenfalls zu installieren.

Spezielle Probleme bei Installation der Pakete der c't-Edition

  • xxv startet nicht automatisch

oder bei einem manuellem Start findet sich im Logfile folgende Fehlermeldung

Die Datei docu.tmpl wurde nicht gefunden.

Lösung: In der Datei /etc/default/vdr-xxv eintragen: ENABLED=1.

Wunschliste

Links

[1] www.mysql.org mySQL
[2] xpix.dieserver.de/content Homepage
[3] xpix.dieserver.de/downloads/xxv Downloads
[4] xpix.dieserver.de/content/vdr/xxv/tutorials Tutorial zum Schreiben eines Plugins für xxv
[5] www.deltab.de/vdr/xxv.html Skins für xxv
[6] screenshots Etwas ältere Screenshots
[7] xxv für ct-vdr Thread aus vdr-portal
[8] Documentation Dokumentation zu xxv
[9] English wiki English version of this wiki