From VDR Wiki
XXV means "Xtreme eXtension for VDR" and is a central service is for the administration of the VDR and its environment, with which different of haven are open and these different services can serve.
An additional haven over a Plugin to construct should be just as simple, to make available as also a certain service. The letter of a Plugins goes very fast, there the input (Vdr, Database etc.) as well as the output (telnet, HTTP...) generically was realized. It should be e.g. possible thus to register with a telnet CONSOLE, HttpBrowser, Wapphone, etc. an autotimer. This should substantially faster the EPG data to scan be able (MySQL data base) and over an interface the VDR the new timer communicate. Naturally also is considered to the single mode of the SVdrP and only one instruction is mailed. Afterwards the haven is again closed immediately, so that other programs can access again svdrp.
Long speech short sense, here a small overview of the present functions:
- completely in Perl realizes
- very generic front-end
- Plugin system
- Data base support
- Epg data are regularly parsed and registered
- very simple Plugin concept for future extensions
- several services from a service (Telnet, HTTP, ...)
- Dump interface for external programs
- mysql-server (version!?)
- different Perl::Module (see installation)
- vdr2jpeg (optionally)
- mplayer optionally), installation see mplayer-plugin
For the installation the download of the last version is necessary. Important information is located in the file README.txt contained in archives .
After the Download the archive file, must this archives unpacked :
cd $SOURCEDIR tar xvzf xxv-<VERSION>.tar.gz cd xxv-<VERSION>
If MySQL is not yet installed, this can take place on one this way:
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
apt-get install mysql-server
Now some perl modules follow , there give it like 2 ways:
The recommended way, if you don't have a Debian system: By means of "Bundle::Xxv" via CPAN, simply change into the $SOURCEDIR/lib folder and the Bundle install. In addition one must UNFORTUNATELY put underneath cpan the module, it can be that with mkdir's the error messages to come the this draw-eats already already existed, which can ignore you confidently. All modules to be needed to stand in this Bundle and are installed automatically:
cd $SOURCEDIR/xxv-<VERSION>/lib mkdir -p ~/.cpan/Bundle cp Bundle/Xxv.pm ~/.cpan/Bundle perl -MCPAN -e 'install Bundle::Xxv'
Note: I had with my SuSE distri use:
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'
Or another possibility via SOURCE.
The installation is identical for most packages:
cd $SOURCEDIR tar xvzf <NAME>-<VERSION>.tar.gz cd <NAME>-<VERSION> perl Makefile.PL make make install cd -
#> apt-get install \ perl \ perl-base \ perl-modules \ libcgi-perl \ libio-zlib-perl \ libconfig-tiny-perl \ libdate-manip-perl \ libdbd-mysql-perl \ libdbi-perl \ libmd5-perl \ libdigest-hmac-perl \ libevent-perl \ libgd-gd2-noxpm-perl libgd-graph-perl libgd-graph3d-perl libgd-text-perl \ txt2html \ libhtml-tree-perl \ libjson-perl libwww-perl \ liblocale-gettext-perl \ libmp3-info-perl \ libnet-amazon-perl \ libnet-telnet-perl \ libnet-xmpp-perl \ libproc-process-perl \ libsoap-lite-perl \ libtemplate-perl \ libhtml-template-perl \ liburi-perl \ libxml-rss-perl \ libxml-simple-perl
View recordings with preview images
To view recordings in XXV with preview images, give it to two possibilities, mplayer or vdr2jpeg, which has fewer dependence. vdr2jpeg need only ffmpeg. By the example of vdr2jpeg the installation is described here. Details for installation are always located in the file README contained in archives.
After the Download the archive file, must this archives unpacked :
cd $SOURCEDIR tar xzvf vdr2jpeg-0.0.8.tgz cd vdr2jpeg-0.0.8
or get the current deloveper state by subversion
cd $SOURCEDIR svn co http://svn.berlios.de/svnroot/repos/xxv/vdr2jpeg/trunk vdr2jpeg/ cd vdr2jpeg
In the contained Makefile should be adapted still the listing of ffmpeg. Subsequently, the program can be compiled by means of the Makefile and the following instruction :
If lasting compiling no error messages appear, the following instruction is sufficient for installation under /usr/local/bin:
a deviating installation place can be indicated as an additional parameter like make install INSTALLBINDIR=/usr/bin.
Afterwards the preview production with vdr2jpeg must be activated. For that is in the Browser, with adjust configuration point RECORDS / previewbinary,previewcommand. It also possible to edit file xxvd.conf directly.
[RECORDS] previewbinary=/usr/local/bin/vdr2jpeg previewcommand=vdr2jpeg
Install the man-page, which can be viewed later with man xxvd.
cd $SOURCEDIR cp doc/xxvd.1 /usr/share/man/man1
And don't forgot to activate the rotate of the log files.
cd $SOURCEDIR cp etc/logrotate.d/xxvd /etc/logrotate.d/xxvd
Start the MySQL of server also:
mysqld_safe --user=mysql &
Use the provided script, to create the xxv database. Adapt before username and its password on 'contrib/create-database.sql', for a xxv used mysql account, with your personal preferences.
cd $XXVDIR cat contrib/create-database.sql | mysql -u root
same can do alternatively in follow individually steps:
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;"
Now register the data base connection and the mysql account in $HOMEDIR/.xxvd.cfg:
[General] DSN=DBI:mysql:database=xxv;host=localhost;port=3306 PWD=password USR=username
Starting of Xxv
So that xxv with each system start as service can be started, to have we an example starting script under 'etc/xxvd' stored, because one in its system to install can. This should be adapted to the own system conditions, on case of each should one the path adapt, at which xxv one installed. (In place of nano can you naturally also another editor use.)
cd $SOURCEDIR/xxv-<VERSION> nano etc/xxvd
Under FOLDERS, into which first lines register simply that defined $SOURCEDIR.
# In welchem Ordner befindet sich bin/xxvd # Where is bin/xxvd FOLDER="/usr/local/XXV"
So that XXV with each boats of the computer after vdr one starts. It is necessary the current to determine run level. And in the appropriate starting listing To put on run level /etc/rc<RUNLEVEL>.d a symbolic left on the initialization program of the xxvd service /etc/init.d/xxvd. Here by the example run 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
Instead with SuSE you should alternatively at the beginning of the file etc/xxvd, after '# xxvd Start/Stop the xxvd daemon' the following lines add
### 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
announce then xxvd as service
cp etc/xxvd /etc/init.d/. cd /etc/init.d/ insserv xxvd
On all system then afterwards the activated service with the following command can be started.
For the sake of the completeness since stopping and starting the xxvd service again mention :
/etc/init.d/xxvd stop /etc/init.d/xxvd restart
The following parameters could be handed over /etc/init.d/xxvd to the service program bin/xxvd.
|--verbose=LEVEL||3||Output level in the log file, 0 - quiet, 1 - only errors, 3 - warning... 5 everything|
|--version||-||Output of the used version of xxvd|
|--kill||-||stop current current xxvd process, in accordance with xxvd.pid|
|--nofork||-||xxvd when starting do not send into the background, necessarily for debugging.|
|--configfile=DATEI||~/.xxvd.cfg||Name of the used configuration file|
|--logfile=DATEI||/var/log/xxvd.log||Name of the used log file|
The following parameters are interesting particularly for package builder, which advise xxv-files on other folder.
|--htmldir=DIR||./||Folder with HTTPD/WAPD Skins|
|--pidfile=DATEI||/var/run/xxvd.pid||To store file around the current prozess id|
|--localedir=DIR||./locale||Folder with the translations|
|--newstmpl=DIR||./share/news||Folder with output templates for the XXV NEWS plugins|
|--newsmods=DIR||./lib/XXV/OUTPUT/NEWS||Module folder with the XXV NEWS plugins|
|--moduledir=DIR||./lib/XXV/MODULES||Module folder with the XXV plugins|
|--docudir=DIR||./doc||Folder with the documentation (NEWS, CHANGELOG ...)|
|--poddir=DIR||./doc||Folder with the self documentation of the XXV plugins|
|--fontdir=DIR||./share/fonts/ttf-bitstream-vera||Folder for ttf character sets for the overlay functions of the remote screen display|
|--vtxdir=DIR||./share/vtx||Folder with the graphic font of the symbols for the teletext plugin|
|--contrib=DIR||./contrib||Folder with additional script files|
Manual starting of xxv
xxvd can be started also manually without activation as service, in addition serves the following command combination, which indicates the log file after the start also /var/log/xxvd.log. The announcement of the log file is broken off with keystroke Strg-C.
cd $SOURCEDIR/xxv-<VERSION> ./bin/xxvd --configfile=./xxvd.cfg && tail -f /var/log/xxvd.log
for manual stopping of xxvd the following instruction serves
cd $SOURCEDIR/xxv-<VERSION> ./bin/xxvd --kill --configfile=./xxvd.cfg
Handle with xxv
The operation of XXV takes place on a Browser. In addition the URL must on your XXV installation refers to be entered in the address line. This takes place according to the pattern protocol://network address:port The port number for the Web entrance is the 8080. This can be adapted by configuration parameters in xxvd.cfg. Here by the example of the IP address 192.168.0.100.
The port number for the Telnet entrance is the 8001.
telnet 192.168.0.100 8001
The port number for the WAP entrance is the 8085.
Required with a new installation will for the entrance the following logon data, these attitudes should after the installation the personal preferences be naturally adapted. Over these attitudes it is also possible the user inquiry switches off or to certain Network clients to limit.
User: xxv Password: xxv
General actually is no Plugin. Since it looks in such a way from view of xxv, it should be listed for the sake of the completeness here. Here global attitudes are listed such as log file path, data base server etc..
- Nearly all modules can be deactivated in your function (Configuration -> ModName -> Active = 'no').
- The Templates is now likewise located and translatable, i.e. the skin programmer can access over the gettext routine the translation data base.
Here the EPG data is scanned for transmissions with a certain text into title, subtitle and text and programmed these as timers.
- Autotimers can determine whether timers with VPS and own pre and wake are put on.
- With an update now additionally also the Channelnamen of the found Events is indicated
- Autotimer - Configuration - exclude: General excluding from channels, in order to exclude channels starting from a position in the channel list from the search to Events.
Search words can be concatenated by comma as logical AND and/or excluded by minus signs.
The following example should this clarify :
|docu,astronomy||--> Search for docu AND astronomy|
|Ryan,-Hanks||--> Search for Ryan AND NOT Hanks|
Tip: This functionality is available also in the normal EPG fulltext search.
This module permits the deletion, a providing and an editing of the new timers, as well as their representation.
- Timers referencing now on its EPG entry, if this is present.
- Inactive timer now deleted if these more than one month in the future to lie. It seemed repeatedly, which a timer was programmed by autotimers, to this because of lack of interest was deactivated. If the timer had run off, it emerged automatically exactly one month later again in the list. These "timer corpses" had to be deleted then always laboriously by hand. Happened now automatically if TIMER - configuration - the Deactive is set on 'yes'.
Here those becomes epg.data read in and their entries in a database stored.
- Events are separately marked, if these are noted as timers.
Here ' ' channels.conf one reads in and their entries in a database one stores.
This module puts a server to HTTP as well as a Web interface at the disposal, in order to be able to serve xxv by Browser.
- A Processbar indicated if processes to be started somewhat longer to last (music to read in again, getCovers)
- Now a starting side under Preferences - httpd - can be individually specified starting PAGE, (now, program, runs autotimer...)
This module puts a server to telnet at the disposal, in order to be able to serve xxv by "telnet localhost port".
This module puts a server to data at the disposal, in order to be able to serve xxv with other GUIs.
This module makes a WapD available server, in order to be able to serve xxv by means of Wap Browser (mobile telephone).
At present still without really function.
The MusicPlugin makes a medium library as well as a Icecast available Streamserver.
- GetCovers: This function is a bonus with xxv by means of module the Robot once on the day the Covers of the albums as image files from the InterNet to download can. For it the Perl module WWW::Mechanize which must be installed additionally, is used. This module emulates the normal operation in a Browser, with which a search word (album name, feature year) on the search side of a music portal is entered and suppl.-smooth-eat then scanned for the wished Albumcover. And this Coverbild is then stored in the preview listing and indicated in the album list.
This Plugin represents all recordings clearly and permits different actions on the individual records.
- The cut marks are represented now graphically in the record overview.
- Many characteristics of the record are now capable for editing. (Marks, Lifetime, Priority,...)
- Andreas took care of the leidigen and substantially unperformanten way of the Preview picture production and a very slim C program named 'vdr2jpeg' wrote. This program does nothing different one than Preview of pictures in the reason with certain marks to provide. This we naturally also supported of xxv and can by "svn co http://bandt.dyndns.org/repos/vdr2jpeg" are gotten. Closer data for installation can reread you in the README file of the program complex.
- Series, or recordings into a group file are summarized, in rlist as files are indicated.
Configuration the Plugin makes it possible to change and store at run time different parameters of the interface (HTTP, telnet,..).
Grab makes the live picture available of the VDR as JPEG image file.
- grab ow is able to fade in additional information (e.g. the channel) into the gegrabbte live picture.
This Plugin represents a remote maintenance and in connection with grave also a live picture. Thus the VDR can be served by interfaces rudimentarily.
Status represents all system information in the interfaces as clear representation.
- A particularly nice feature, it now graphs provided which the memory extent of utilization as well as the load of a certain period (configuration - status - history) to represent. The special to it, which become diagrams from the Templates provided, thus each bent ski programmer its own diagrams if necessary to provide can. In the HTML Skin one can see that very beautiful under status.
This Plugin makes all instructions available svdrp of the interface of the VDR.
User authentication, which queries users in all interfaces identification and password and makes a level administration available.
Effectively come at xxvd three different account levels to carry :
- The normal level of the operating system (Linux)
In this account xxvd executed. The account becomes in the variable RUNAS in /etc/init.d/xxvd defined. So that xxvd within unprivileged accounts can be executed, this account needs reader-genuine in xxv-folder, and write rights to the cfg file, pid file, log files and write rights in the preview folder of the Skins.
- The Mysql Account
This entrance we only needs around the data in mySQL the data base to respond, therefore it needs reading and write rights within the active xxv-data base (mySQL:DATABASE) (GARANT SELECT, INSERT, UPDATE, CREATE, DROP, usw.)
- And then there is the xxv-account within XXV the user administration.
It serves only for it individual xxv-commands to de-energise or close. Momentarily this is possible only in the three groups guest, user, admin.
- guest, may data such as EPG data or Recordings regard
- user, such as autotimers, timer may change data
- admin, user may administer
The standard entrance after new installation has the following Login and should over the xxv-user administration when de-energising in InterNet be deleted or changed.
Login:xxv Passwort: xxv
If XXV only in the local area network one uses, the xxv-user administration can be switched off also completely in the preferences.
- Certain parameters can be stopped now with the user. We use a generic system, if for example the user liked to see xpix only the Skin Snow can one in the user attitudes under 'Prefs' with 'HTTPD::HtmlRoot=snow' adjust very beautifully. Naturally one can assign also all other parameters of the modules to the user, e.g. we would like additional, which the user xpix only timer may define, whose priority is only with 30. That would look in such a way then:
The syntax reads thus 'Modulname::Parameter=Value, Modulname::Parameter=Value...'... if the user xpix also only as Level=User is adjusted, can one thus prevent the this its attitudes changes.
- The user can make also a Logout now.
This module indicates teletext sides.
The Web interface can diplay with a completely different appearance. The necessary skin package will unpack generally in the installation folder. But this skins folder can also move to a other folder by command line parameters, like --htmldir /var/lib/xxv/skins/.
Here by the example of the Skins stone.
cd /var/lib/xxv/skins/ tar zxvf xxv-stone-0.60.tgz
With unpacking, you should get a new folder, with name from Skin. this folder contains data of the skin.
Subsequently, one calls the Web interface (http://ip_deines_vdrs:8080) and selects the Skin under Preferences -> HTTPD -> Option HtmlRoot. But do not forget to activate the changed preferences with Apply.
It can be necessary to execute a complete reloading of the xxv-web page, so that buffered files by the Browser to update.
The current developer state are available by subversion under
cd $SKINDIR svn co http://svn.berlios.de/svnroot/repos/xxv/XXV-Skins/trunk XXV-Skins/
XXV keep current
We go of it out of which you xxv with you had already installed and to point you as you to a new version to be updated can. As the first we must stop the service:
vdr:~# /etc/init.d/xxvd stop
... with Subversion
Most simply an update with subversion is to be made, the update script and start again afterwards xxv call:
cd $SOURCEDIR svn update
... as Download
Naturally it will give also further the possibility of getting themselves from the existing download server current packages and of unpacking these then. But, these packages are made available only in irregular distances. Are thus not always current:
cd $SOURCEDIR tar xvzf xxv-<VERSION>.tar.gz
Database structure adapt
New or extended xxv-functions involve often also a change of the data base structure. After the installation of an update, should you therefore first always the script contrib/update xxv call. XXV may be started at this time not yet.
In the simplest case must transfer no parameters to her to the script. This presupposes however that MySQL on the local computer is installed that the data base is called 'xxv' and the database administrator 'root' does not possess a password.
cd $SOURCEDIR/contrib ./update-xxv
Beyond that can to the script a set of parameters hand over, which also steer a few extended functions apart from the access to the data base you. An overview of all parameters receive you with:
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
With the parameter -b is accomplished before the update a Backup of the data base. In addition the name of the backupfile (without the ending gz) must be indicated. The parameters -H (hostname) and -P (haven) steer the access to the MySQL server. This ' localhost' and haven are according to standard 3306. If the database should not be called 'xxv', then can you with -D another name select.
The data base user can specify you with -u and its password with -p. In order to be able to accomplish the update, the data base user needs FILE of rights. Usually only the administrator 'root' is this right.
Database updates are accomplished by update xxv only if you are really necessary. Should times somewhat inclined run or if you would like on an old data base structure ' down degrees ', then can you the update with -f force.
With a successful data base update a list of the accomplished actions spends update xxv:
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
In the event of an error "error:..." messages spent. The most probable cause for an error is the data base access. You should examine first thus username, password, data base name and host.
After the update can you XXV again start:
Subsequently, control the log file:
tail -f /var/log/xxvd.log
If any error messages should emerge because of missing Perl modules in the log file, then should install these for her. Who does not go to no more white as, this Wiki will be help you ...
- Does XXV have a memory leak? Memory consumption approx. doubles in 6 hours.
Unfortunately the EventModul had a memory leakage, which with the version >= 1.05 has been fixed. Please install your Eventmodul again:
perl -MCPAN -e shell; install Event
- I use vdr 1.3.26 - 27 and xxv V0.42. I can see no more recordings in the interface
In these versions Klaus had something at the SVDRP interface screwed, thus XXV nothing more thereby to begin could. Either you update your XXV by subversion or you use a Patch which we on the following URL published:
If you should c't distribution to use, then update your xxv package by apt-get, afterwards the error should not arise any longer.
- My Samba path shows amusing indications with umlauts in the paths of the recordings and the Liveplayer does not play this recording
- The password for the user xxv changed. And do not come now any longer to Admin rights.
The fast solution for your problem, in mysql log in and the user table delete:
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
Then xxv restart again:
vdr:~# /etc/init.d/xxvd restart Stop bin/xxvd: xxvd with pid 744 killed Start bin/xxvd: xxvd started with pid 3563.
Afterwards you should be able yourself to log in with xxv:xxv normally.
- No Preview image is provided:
The following check list should help you:
* the path is correct to mplayer in the RECORDS Config * is mplayer switched on under Records->config->mplayercommand? * correct version under Records->config->mplayercommand? * the path is correct to the video folder? * the preview folder is writable for xxvd?
Consider also, the preview pictures in the background are generated. That means only after a small while is the first Previews to see (approx. 2min).
- No Previewimages is provided and in xxvd_mplayer.log stands:
Unknown option on the command line: jpeg
Starting from mplayer-1.0pre6 the calling command line must be adapted, xxv make this for you. (Configuration -> RECORDS -> mplayercommand). Adjust simply the appropriate Player, which is installed on your system. MPlayer1.0pre5 and older as well as MPlayer1.0pre6 and more again. You get the version number of yours mplayers with mplayer v to see:
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 ...
- in the log file the following warning emerges:
11 (10305) [03:27:27 03.02.2005] [Fatal] Cannot build telnet initial socket.
You must specify another port number for the telnet server in ~/.xxvd.cfg. The port which you used want, is probably already occupied.
- in the log file from time to time the following warnings emerge:
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.
These messages can be ignored. Perl tries to call by eval a method.
- When starting the following warning appears:
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").
A cause is, which bring along xxvd appropriate located texts, but on the computer no system localization of the same name is present. Suppressing this message goes with "export PERL_BADLANG=1", but more meaningfully it is to be likewise installed the system localization in the selected language.
Special problems with installation of the packages of the c't edition
- In the log file is error that the file was not found ' ' docu.tmpl .
A start from xxv is via
possible, PID is assigned, but the Web interface (bspw.) is not attainable. The start also /etc/init.d/vdr-xxv start does not produce output for expenditure:
Starting XXV - Xtreme eXtension for VDR: xxvd started with pid 12345. xxv.
Solution: In the file /etc/default/vdr-xxv register: ENABLED=1.
cd $SOURCEDIR svn co http://svn.berlios.de/svnroot/repos/xxv/XXV/trunk XXV/