Watch digital TV with VDR and a streaming client
Contents
- 1 Introduction
- 2 SUSE Linux 12.1
- 3 SUSE Linux 11.4
- 3.1 The setup as basic for this article
- 3.2 Setup Procedure
- 3.3 UNSORTED STUFF
- 4 TroubleShooting
- 5 See also
Introduction
This article describes some aspects to setup an enviroment with a VDR server and a xine stream client.
Here typically should be the obligatory screenshot of my desktop showing the running stream - I add that later on :)
To proceed, find out your distribution and proceed accordingly:
SUSE Linux 12.1
The setup as basic for this article
We need some Hardware - I my case:
- a laptop Dell Latitude 2100
- an external digital TeraTec Cinergy S2 USB with remote control
And of course some software repositories - in my case:
- Base OS is openSUSE 12.1
We setup the following componets
- VDR (http://www.vdr-portal.de/)
- XINE
Setup Procedure
Installing VDR and XINE
Installation channels
- Set up installation channels
zypper ar http://packman.inode.at/suse/openSUSE_12.1/Essentials packman-essentials zypper ar http://packman.inode.at/suse/openSUSE_12.1/Multimedia packman-multimedia
- Now the command
zypper lr -u
must contain
| packman-essentials | packman-essentials | Yes | No | http://packman.inode.at/suse/openSUSE_12.1/Essentials | packman-multimedia | packman-multimedia | Yes | No | http://packman.inode.at/suse/openSUSE_12.1/Multimedia
Installation
Now install the software:
yast -i xine-ui vdr-plugin-xine
Configuration
Now configure the software. In /etc/sysconfig/vdr, replace
VDR_PLUGINS=""
by
VDR_PLUGINS="remote xine" VDR_PLUGIN_ARGS_remote="-i /dev/input/ir" VDR_PLUGIN_ARGS_xine=""
and restart the video disk recorder:
/etc/init.d/vdr restart
Test
Now connect the USB device to your computer and to the satelite cable. open a console and enter
xine vdr://
I get:
The stream 'vdr://' uses an unsupported codec: (null)Audio Codec: MPEG layer 2/3 (0x0) Start playback anyway ?
If that happens please try to deinstall libxine2 libarries and retry with only installed libxine1:
zypper install --repo download.opensuse.org-oss xine-ui
And verify it got installed correctly:
# ldd /usr/bin/xine | grep libxine libxine.so.1 => /usr/lib64/libxine.so.1 (0x00007f2b85ebe000) # rpm -q xine-ui xine-ui-0.99.5-239.1.2.x86_64
SUSE Linux 11.4
The setup as basic for this article
We need some Hardware - I my case:
- a laptop DELL D620
- an external USB S2 digtital HD device TeVii S660
- a TechnoTrend remote control (because unfortunately the remote control support of TeVii S660 is buggy in my setup)
And of course some software repositories - in my case:
- Base OS is openSUSE 11.4
- Additional package repositories: TBD
We setup the following componets
- VDR (http://www.vdr-portal.de/)
- LIRC
- XINE
Setup Procedure
Installing VDR and XINE
Installation channels
- Set up installation channels
zypper ar http://packman.inode.at/suse/openSUSE_11.4/Essentials packman-essentials zypper ar http://packman.inode.at/suse/openSUSE_11.4/Multimedia packman-multimedia
- Now the command
zypper lr -u
must contain
| packman-essentials | packman-essentials | Yes | Yes | 99 | rpm-md | http://packman.inode.at/suse/openSUSE_11.4/Essentials | packman-multimedia | packman-multimedia | Yes | Yes | 99 | rpm-md | http://packman.inode.at/suse/openSUSE_11.4/Multimedia
- libxine2 removed; xine-ui from other vendor. Install VDR and xine packages - sou might need also some dependent packages so use zypper to resolve dependencies
- Remark: 2012-07-18: Updated List
- removed package libxine2
- xine-ui from openSUSE not packman.links2linux.de
- downgraded vdr-plugin-xine to version 0.9.3
- To query the packages in this format:
printf " %-22s | %-22s | %-30s | %s\
" "Name" "Version" "Vendor" "Project URL"
printf " -----------------------+------------------------+--------------------------------+-------------------------------\
"
rpm -qa --queryformat ' %-22{name} | %-22{version} | %-30{vendor} | %{url} \
' | egrep '(vdr|xine)'
Name | Version | Vendor | Project URL -----------------------+------------------------+--------------------------------+------------------------------- libxine1-pulse | 1.1.20.1 | http://packman.links2linux.de | http://www.xine-project.org/home xine-ui | 0.99.5 | openSUSE | http://xine.sourceforge.net libxine1-codecs | 1.1.20.1 | http://packman.links2linux.de | http://www.xine-project.org/home vdr-plugin-streamdev | 0.0_CVS20080716080048 | openSUSE | http://streamdev.vdr-developer.org/ libdvdread3 | 0.9.7 | http://packman.links2linux.de | http://www.dtek.chalmers.se/groups/dvd/index.shtml libxine1 | 1.1.20.1 | http://packman.links2linux.de | http://www.xine-project.org/home vdr | 1.6.0 | openSUSE | http://www.tvdr.de/ xine-skins | 1.0.3 | Packman | http://xinehq.de/index.php/skins vdr-plugin-epgsearch | 0.9.24 | obs://build.opensuse.org/vdr | http://winni.vdr-developer.org/epgsearch/downloads/vdr-epgsearch-0.9.24.tgz kdebase4-runtime-xine | 4.6.0 | openSUSE | http://www.kde.org/ libdvdread4 | 4.1.3 | openSUSE | http://www.mplayerhq.hu/ xinetd | 2.3.14 | openSUSE | http://www.xinetd.org/ phonon-backend-xine | 4.4.4 | openSUSE | http://phonon.kde.org/ vdr-plugin-cutalot | 0.0.3 | openSUSE | http://www.vdr-wiki.de/wiki/index.php/Cutalot-plugin libxine1-gnome-vfs | 1.1.20.1 | http://packman.links2linux.de | http://www.xine-project.org/home vdr-plugin-xine | 0.9.3 | openSUSE | http://home.vr-web.de/~rnissl/
- Install optional VDR packages
vdr-plugin-cutalot 0.0.3 openSUSE http://www.vdr-wiki.de/wiki/index.php/Cutalot-plugin vdr-plugin-epgsearch 0.9.24 obs://build.opensuse.org/vdr http://winni.vdr-developer.org/epgsearch/downloads/vdr-epgsearch-0.9.24.tgz vdr-plugin-streamdev 0.0_CVS20080716080048 openSUSE http://streamdev.vdr-developer.org/
Remark: Using the xine plugin (from repository PackMan) you could use xine for a complete VDR client (with full control over all menus).
- Adapt plugin configuration /etc/sysconfig/vdr (the plugin "remote" is optional and can be dropped, if you use lirc)
# # With plugin remote plugin: # VDR_PLUGINS="remote xine" VDR_PLUGIN_ARGS_remote="-i /dev/input/ir" VDR_PLUGIN_ARGS_xine="" # # Without plugin remote plugin: # VDR_PLUGINS="remote xine" VDR_PLUGIN_ARGS_remote="-i /dev/input/ir" VDR_PLUGIN_ARGS_xine=""
- Restart VDR
/etc/init.d/vdr restart
- start watching VDR: - You should get a OSD message from VDR that tells you to train VDR to understand your remote control or keyboard sequences
xine vdr://
In this setup we proceed to integrate the Technotrend Remote control to be able to send signals to LIRCD and than configure VDR to understand LIRCD commands...
TechnoTrend USB Remote-Control
Low Level Test with mode2
To test, if the IR keys are recognized on a very low level test using command mode2. This works also without lircd.
furka:~ # mode2 -d /dev/lirc0 space 3508766 pulse 806 space 744 pulse 806
lircd configuration =
In openSUSE 11.4 lircd is configured via
/etc/sysconfig/lirc
## Description: lirc (infrared remote control) configuration ## Type: string ## Default: "660" ## ServiceRestart: lirc # # permissions for /dev/lircd # LIRCD_DEV_PERMISSIONS="660" ## Type: string ## Default: "root:video" # # owner and group for /dev/lircd # LIRCD_DEV_OWNER="root:video" ## Type: string ## Default: "" # # use given driver # LIRCD_DRIVER="" ## Type: string ## Default: "" # # read from given device # LIRCD_DEVICE="/dev/lirc0" ## Type: string(lirc_bt829,lirc_gpio,lirc_i2c,lirc_it87,lirc_parallel,lirc_sir,ir-kbd-i2c,ir-kbd-gpio) ## Default: "" # # load given lirc driver module # LIRC_MODULE="lirc_ttusbir" ## Type: string ## Default: "" # # listen for network connections on specified port. # WARNING: don't use this on a machine with an internet # connection as lircd is running as root! # LIRCD_LISTENPORT= ## Type: string ## Default: "" # # connect lircd to specified host # LIRCD_CONNECT=
/etc/lirc/lircd.conf
/etc/lirc/lircd.conf (enthaelt die definition der Fernbedienungstasten)
# # this config file was automatically generated # using lirc-0.8.3(default) on Wed Jul 2 21:51:15 2008 # # contributed by # # brand: Technotrend # model no. of remote control: # devices being controlled by this remote: TV-Card # begin remote name Technotrend bits 6 flags RC5|CONST_LENGTH eps 30 aeps 100 one 889 889 zero 889 889 plead 889 pre_data_bits 7 pre_data 0x55 gap 113792 toggle_bit 2 frequency 36000 duty_cycle 50 begin codes Power 0x01 Mute 0x18 1 0x03 2 0x04 3 0x05 4 0x06 5 0x07 6 0x08 7 0x09 8 0x0A 9 0x0B 0 0x0C Audio 0x1A Repeat 0x02 vol- 0x26 vol+ 0x25 Text 0x19 ch- 0x24 ch+ 0x23 Exit 0x13 OK 0x0F Up 0x0D Down 0x11 Left 0x0E Right 0x10 Red 0x14 Green 0x15 Yellow 0x16 Blue 0x17 Record 0x3A Play 0x3B Stop 0x3C Info 0x12 Rew 0x3D Pause 0x3E Fwd 0x3F EPG 0x22 end codes end remote
lircd start and start at boot time
furka:~ # rclirc start Starting lircd (/dev/lirc0) done furka:~ # chkconfig lirc on
lircd-client Connection Test
To test, if a client of lircd could recognize key presses use command irw. This command is part of package lirc.
furka:~ # irw 000000000000154c 00 0 Technotrend 000000000000154c 01 0 Technotrend 000000000000154c 00 0 Technotrend 000000000000154c 01 0 Technotrend
Trouble-Shooting
- If you do NOT have a valid config file for your remote you might create one interactive using irrecord
irrecord -d /dev/lirc0 file
- Remarks
- "file" is the output file
- You should prefer to fetch a config file from http://www.lirc.org/remotes/
- I successfully tried http://lirc.sourceforge.net/remotes/technotrend/TV-Card
lirc to talk with vdr
- VDR automatically tries to get signals/commands from LIRC, but you need to help VDR to understand whoat to do, if a special LIRC command is received. You could either "train" VDR and press keys in the training mode, or provide a ready-to-go definition file. File /etc/vdr/remote.conf needs to contain those additional entries for accepting lircd keys:
LIRC.Up Up LIRC.Down Down LIRC.Menu Repeat LIRC.Ok OK LIRC.Back Exit LIRC.Left Left LIRC.Right Right LIRC.Red Red LIRC.Green Green LIRC.Yellow Yellow LIRC.Blue Blue LIRC.0 0 LIRC.1 1 LIRC.2 2 LIRC.3 3 LIRC.4 4 LIRC.5 5 LIRC.6 6 LIRC.7 7 LIRC.8 8 LIRC.9 9 LIRC.Info Info LIRC.Play Play LIRC.Pause Pause LIRC.Stop Stop LIRC.Record Record LIRC.FastFwd Fwd LIRC.FastRew Rew LIRC.Power Power LIRC.Channel+ ch+ LIRC.Channel- ch- LIRC.Volume+ vol+ LIRC.Volume- vol- LIRC.Mute Mute
- Restart VDR again to activate the new configuration
UNSORTED STUFF
Auf dem Laptop Latitude D820 habe ich einen vdr installiert mit einer externen USB-Box TVii 660
Installation of the DVB-S2 USB-Box
<TBD>
Plugins, plugins, plugins ...
Why are there so much differetn plugins for VDR to provide video streams? They all have different feature sets and use cases. While in the use case to watch TV on a Laptop where the TV-Card/Box is connected is matching to the plugine xine, there are other usescases for network streaming.
TBD We need / explain the following VDR plugins:
- xine
- streamdev
- libxineoutput
Video clients
Remote Streaming: vdr-plugin-streamdev
vlc - What is already running is that you can watch TV and also switch the programm. But you do not have full control over VDR using that method.
vlc http://127.0.0.1:3000/PES/1
URL in general:
http://<hostip>:<port>/[PES|xx]/<prognummer>
You need to setup the file /etc/vdr/streamdev.conf:
# streamdev.conf: <TBD>
Passender /etc/sysconfig/vdr Auszug
VDR_PLUGINS="streamdev"
vdr-plugin-xineliboutput
With xineliboutput
vlc tcp://localhost:37890
But how to switch the program using this connection?
==== Best practice local access with <html><acronym title="On Screen Display">OSD</acronym></html>: vdr-plugin-xine ==== This is the recommended way if you want to watch TV on the computer where VDR is running.
Using the xine plugin (from repository PackMan) you could use xine for a complete VDR client (with full control over all menus).
- install it:
yast -i vdr-plugin-xine
- Matching line in /etc/sysconfig/vdr (the plugin "remote" is optional and can be dropped, if you use lirc)
VDR_PLUGINS="remote xine" VDR_PLUGIN_ARGS_remote="-i /dev/input/ir" VDR_PLUGIN_ARGS_xine=""
- Restart VDR
/etc/init.d/vdr restart
- start watching TV:
xine vdr://
Remote Control
TBD: translate de->en
TeVii S660 remote control is a bit painfull for me
Translation: <TBD>
- Mit dem Update von c.a. Mitte März auf den Herstellerseiten (auf Simplon Download/Tevii) geht nun die Erkennung der Fernbedienung
- Kleiner Patch in ./v4l/dw2102.c die Ausgaben von "query RC..." auskommentiert (also nicht aktiv), weil sonst der syslog voll läuft
- VDR meldet (ohne Config s.u.) beim Starten, dass er kein lirc findet, allerdings scheint die Fernbedienung als Tastatur zur funktionieren:
- Test mit fb bringt messages im syslog (kann ggf später entfallen)
- xev zeigt tastaturreaktion, wenn man fb bedient
- KDE lautstärke regler funktioniert bereits :)
- Cursorbewegungen (auf/ab/rechts/links) funktinieren u.a. hier im wiki :)
- war jetzt nach einigen Eingaben nicht stabil - prüfen!
In den VDR bindet man die Fernbedienung mit dem plugin remote ein. Passender Auszug aus der /etc/sysconfig/vdr
VDR_PLUGINS="remote" VDR_PLUGIN_ARGS_remote="-i /dev/input/ir
Die Berechtigungen für das IR-device (/dev/input/ir) müssen so eingestellt werden, dass der VDR (Benutzer vdr) darauf Zugreifen darf.
chown vdr:users /dev/input/ir
Die FB muss beim ersten Benutzen im VDR trainiert werden, wenn die Datei /etc/vdr/remote.conf nicht angepasst wird (Datei stelle ich bei Bedarf zur Verfügung :).
openSUSE 11.2 package list sorted by "vendor"
rpm -qa --queryformat "%{NAME} %{VENDOR}\ " | egrep '(vdr|xine)' | sort -k2
- Packman
gxine Packman gxine-browser-plugin Packman xine-browser-plugin Packman xine-skins Packman
libdvdread3 http://packman.links2linux.de libdvdread4 http://packman.links2linux.de libxine1 http://packman.links2linux.de libxine1-codecs http://packman.links2linux.de libxine1-gnome-vfs http://packman.links2linux.de libxine1-pulse http://packman.links2linux.de vdr-plugin-xine http://packman.links2linux.de xine-ui http://packman.links2linux.de
- obs://build.opensuse.org/vdr
vdr-plugin-xineliboutput obs://build.opensuse.org/vdr
- openSUSE
phonon-backend-xine openSUSE vdr openSUSE vdr-plugin-cutalot openSUSE vdr-plugin-epgsearch openSUSE vdr-plugin-remote openSUSE vdr-plugin-streamdev openSUSE xinetd openSUSE
TroubleShooting
no input plugin available
- Symptom
- When calling
xine vdr://
you get the error message
- xine engine error - There is no input plugin available to handle 'vdr'. Maybe MRL syntax is wrong or file/stream source doesn't exist.
- Solution
- In /etc/sysconfig/vdr, have
VDR_PLUGINS="remote xine" VDR_PLUGIN_ARGS_remote="-i /dev/input/ir" VDR_PLUGIN_ARGS_xine=""