Introduction
Since September 2008 certain developers started a extension of the 4vl repository to add support for the second generation of DVB-api's which includes DVB-S2 support. This new extension is called S2API and has been included in v4l since October 2008 and is now also included in Linux kernel 2.6.28 and with Xubuntu 9.04 as well.
For those who don't want to use Google, I made a tutorial how I setup VDR in combination with my DVB budget card. I use the following hardware configuration:
- Enclosure : Antec NSK2480 (PSU included)
- Motherboard: Abit A-N78HD with the Geforce 8200 IGP
- CPU : AMD Athlon(tm) 64 X2 Dual Core Processor 4200+
- Memory : Kingston ValueRAM 2 GB DDR2-800 Kit (CL5)
- DVD-drive : LG GGC-H20LRB (DVD-RW, Blu-Ray and HDDVD)
- Harddisk : Samsung SpinPoint T 500GB
- Budgetcard : Hauppauge WinTV NOVA-HD-S2
All this, is connected to a Panasonic plasma using the onboard HDMI connector with the nvidia closed sources drivers.
DISCLAIMER: First I want to make one thing very clear. While this HOWTO allows you to get VDR running, I won't go into detail how you can install the compilation suite or other programs or Linux itself. I personally think that Linux knowledge is important before you continue to use Linux as your OS or as your primary DVB frontend.
I use Xubuntu 9.04 X86 myself and network, sound and video was working before starting the use of VDR. For dependencies, I use Ubuntu based apt-get install commands to get it compiled. Be sure to check your own distribution for the correct locations and additional depencies. Furthermore, I use the location /usr/local/src as the default directory. You can offcourse use an other location.
Before starting with this tutorial, make sure your DVB-S or DVB-S2 card is up and running (read: detected by Linux). For the people who use a Hauppauge NOVA-S2-HD or HVR-4000, you can use my other tutorial for that. Also, Igor's repo seems to support S2-3200 based cards as well.
WARNING! When using VDR 1.7.8, you require the S2API drivers and they must be downloaded installed! I use Igor's repo myself and this works with VDR 1.7.8. This tutorial works for DVB-S and DVB-S2 based budget cards and also DVB-S budget cards require S2API, even if they don't use it!
All commands which are used here, can be run from a Terminal Session within XFCE, KDE or Gnome or through a SSH connection. With all commands posted here, make sure you are using sudo -s so that your are the user root.
My Xubuntu 9.04 Desktop installation is the X86 edition. While my CPU can run the AMD64 edition, I decided not to do this. Mainly since certain optimalisation isn't entirely complete. So I would reccommend to install the X86 edition for the time being.
1. Xine and FFMpeg
Currently there does not exist a Full DVB-S2 card. Because of this we need to use a software based output plugin with VDR. Since we're going to use xineliboutput, we need additional software up-and-running before we're going to compile VDR and the additional plugins. We're going to use FFMpeg and Xine for this.
FFMpeg:
Code:
cd /usr/local/src
apt-get install build-essential
apt-get install mercurial cvs subversion git-core libncurses-dev
apt-get install autoconf libtool automake pkg-config gettext
apt-get install liba52-0.7.4-dev libmp3lame-dev libvorbis-dev zlib1g-dev libpng12-dev libx11-dev libxv-dev libxvmc-dev libasound2-dev libmpcdec-dev
apt-get install yasm
apt-get build-dep ffmpeg
git clone git://git.videolan.org/x264.git
cd x264
./configure --prefix=/usr --enable-pic --enable-shared --enable-pthread --enable-asm --extra-cflags="-mtune=native -march=native -mfpmath=sse -O4 -pipe"
make
make install
ldconfig -v
cd /usr/local/src
svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
cd ffmpeg/
./configure --prefix=/usr --enable-shared --enable-gpl --enable-postproc --enable-libmp3lame --enable-libvorbis --enable-pthreads --enable-libx264 --extra-cflags="-mtune=native -march=native -mfpmath=sse -O4 -pipe"
make
make install
ldconfig –v
Code:
cd /usr/local/src
apt-get install libcdio-dev libvcdinfo-dev
hg clone http://hg.debian.org/hg/xine-lib/xine-lib-1.2
wget http://www8.mplayerhq.hu/MPlayer/releases/codecs/essential-20071007.tar.bz2
tar xivf essential-20071007.tar.bz2
mv essential-20071007 /usr/lib/win32
ln -s /usr/lib/win32 /usr/lib/codecs
cd xine-lib-1.2
./autogen.sh --prefix=/usr --with-external-ffmpeg --disable-dxr3 --enable-w32dll --with-w32-path=/usr/lib/win32
make
make install
ldconfig -v
Xine-VDPAU can only be used when you have a NVidia based GPU with Pure VideoHD capabilities. Als your GPU should have a minimum of 256MB of memory and you need to use v180.44 of de propriarty NVidia driver.
Code:
cd /usr/local/src
cd xine-lib-1.2
make uninstall
cd ..
mv xine-lib-1.2 xine-lib-1.2-non-vdpau
wget http://www.jusst.de/vdpau/files/xine-lib-1.2/xine-lib-1.2-vdpau-r273.diff.bz2
bzip2 -d xine-lib-1.2-vdpau-r273.diff.bz2
hg clone http://hg.debian.org/hg/xine-lib/xine-lib-1.2
cd xine-lib-1.2
patch -p1 < ../xine-lib-1.2-vdpau-r273.diff ./autogen.sh --prefix=/usr --with-external-ffmpeg --disable-dxr3 --enable-w32dll --with-w32-path=/usr/lib/win32 make make install ldconfig -v
Code:
cd /usr/local/src
apt-get install libxt-dev
# WARNING! We're going to install LIRCD and with this you can configure your remote if you want it used through LIRCD
apt-get install lirc lirc-modules-source lirc-x liblircclient-dev
wget http://home.vrweb.de/~rnissl/xine-ui-cvs-20090617220000.tar.bz2
tar xivf xine-ui-cvs-20090617220000.tar.bz2
cd xine-ui
./autogen.sh --prefix=/usr --enable-vdr-keys
make
make install
2. VDR and plugins
Now that Xine and FFmpeg have been installed. We can start with VDR 1.7.0 and the plugins.
VDR 1.7.8
Code:
cd /usr/local/src
apt-get install libfreetype6-dev libfontconfig1-dev libjpeg62-dev libcap-dev libncurses5-dev libncursesw5-dev
git clone git://projects.vdr-developer.org/vdr.git
wget http://www.thetick.de/vdr-1.7.8-extensions.tar.bz2
tar xivf vdr-1.7.8-extensions.tar.bz2
cd vdr/
patch -p1 < ../vdr-1.7.8_extensions.diff cp Make.config.template Make.config
Code:
#
# User defined Makefile options for the Video Disk Recorder
#
# Copy this file to 'Make.config' and change the parameters as necessary.
#
# See the main source file 'vdr.c' for copyright information and
# how to reach the author.
#
# $Id: Make.config.template 2.1 2009/01/18 10:46:13 kls Exp $
### The C compiler and options:
CC = gcc
CFLAGS = -g -O2 -Wall
CXX = g++
CXXFLAGS = -g -O2 -Wall -Woverloaded-virtual -Wno-parentheses
ifdef PLUGIN
CFLAGS += -fPIC
CXXFLAGS += -fPIC
DEFINES += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
endif
### The directory environment:
DVBDIR = /usr/local/src/s2-liplianin/linux
MANDIR = /usr/man
BINDIR = /usr/bin
LOCDIR = /usr/share/locale
PLUGINDIR= ./PLUGINS
PLUGINLIBDIR= /usr/lib/vdr/plugins
VIDEODIR = /media/video
CONFDIR = /etc/vdr
### The remote control:
LIRC_DEVICE = /dev/null
RCU_DEVICE = /dev/ttyS1
## Define if you want vdr to not run as root
VDR_USER = root
### VDR-Extensions:
# Comment the patches you don't need
# DVDCHAPJUMP needs DVDARCHIVE enabled
# DVDARCHIVE needs LIEMIEXT enabled
# SORTRECORDS needs LIEMIEXT enabled
# you can only enable MENUORG or SETUP
#ANALOGTV = 1
#ATSC = 1
#CHANNELSCAN = 1
CMDRECCMDI18N = 1
CMDSUBMENU = 1
#CUTTERLIMIT = 1
#CUTTERQUEUE = 1
CUTTIME = 1
DDEPGENTRY = 1
#DELTIMESHIFTREC = 1
DOLBYINREC = 1
#DVBSETUP = 1
#DVDARCHIVE = 1
#DVDCHAPJUMP = 1
#DVLFRIENDLYFNAMES = 1
#DVLRECSCRIPTADDON = 1
#DVLVIDPREFER = 1
#EM84XX = 1
#GRAPHTFT = 1
#HARDLINKCUTTER = 1
#JUMPPLAY = 1
LIEMIEXT = 1
#LIRCSETTINGS = 1
#LNBSHARE = 1
#MAINMENUHOOKS = 1
#MENUORG = 1
#NOEPG = 1
#OSDMAXITEMS = 1
#PARENTALRATING = 1
#PINPLUGIN = 1
PLUGINAPI = 1
PLUGINMISSING = 1
#PLUGINPARAM = 1
ROTOR = 1
SETTIME = 1
#SETUP = 1
#SOFTOSD = 1
#SOURCECAPS = 1
#SORTRECORDS = 1
STREAMDEVEXT = 1
#TIMERCMD = 1
#TIMERINFO = 1
#TTXTSUBS = 1
#VALIDINPUT = 1
#VOLCTRL = 1
WAREAGLEICON = 1
YAEPG = 1
### You don't need to touch the following:
ifdef DVBDIR
INCLUDES += -I$(DVBDIR)/include
endif
ifdef ANALOGTV
DEFINES += -DUSE_ANALOGTV
endif
ifdef ATSC
DEFINES += -DUSE_ATSC
endif
ifdef CHANNELSCAN
DEFINES += -DUSE_CHANNELSCAN
endif
ifdef CMDRECCMDI18N
DEFINES += -DUSE_CMDRECCMDI18N
endif
ifdef CMDSUBMENU
DEFINES += -DUSE_CMDSUBMENU
endif
ifdef CUTTERLIMIT
DEFINES += -DUSE_CUTTERLIMIT
endif
ifdef CUTTERQUEUE
DEFINES += -DUSE_CUTTERQUEUE
endif
ifdef CUTTIME
DEFINES += -DUSE_CUTTIME
endif
ifdef DDEPGENTRY
DEFINES += -DUSE_DDEPGENTRY
endif
ifdef DELTIMESHIFTREC
DEFINES += -DUSE_DELTIMESHIFTREC
endif
ifdef DOLBYINREC
DEFINES += -DUSE_DOLBYINREC
endif
ifdef DVBSETUP
DEFINES += -DUSE_DVBSETUP
endif
ifdef DVDARCHIVE
ifdef LIEMIEXT
DEFINES += -DUSE_DVDARCHIVE
endif
endif
ifdef DVLRECSCRIPTADDON
DEFINES += -DUSE_DVLRECSCRIPTADDON
endif
ifdef DVLVIDPREFER
DEFINES += -DUSE_DVLVIDPREFER
endif
ifdef DVLFRIENDLYFNAMES
DEFINES += -DUSE_DVLFRIENDLYFNAMES
endif
ifdef EM84XX
DEFINES += -DUSE_EM84XX
endif
ifdef GRAPHTFT
DEFINES += -DUSE_GRAPHTFT
endif
ifdef HARDLINKCUTTER
DEFINES += -DUSE_HARDLINKCUTTER
endif
ifdef JUMPPLAY
DEFINES += -DUSE_JUMPPLAY
endif
ifdef LIEMIEXT
DEFINES += -DUSE_LIEMIEXT
endif
ifdef LIRCSETTINGS
DEFINES += -DUSE_LIRCSETTINGS
endif
ifdef LNBSHARE
DEFINES += -DUSE_LNBSHARE
endif
ifdef MAINMENUHOOKS
DEFINES += -DUSE_MAINMENUHOOKS
endif
ifdef MENUORG
DEFINES += -DUSE_MENUORG
else
ifdef SETUP
DEFINES += -DUSE_SETUP
endif
endif
ifdef NOEPG
DEFINES += -DUSE_NOEPG
endif
ifdef OSDMAXITEMS
DEFINES += -DUSE_OSDMAXITEMS
endif
ifdef PARENTALRATING
DEFINES += -DUSE_PARENTALRATING
endif
ifdef PINPLUGIN
DEFINES += -DUSE_PINPLUGIN
endif
ifdef PLUGINMISSING
DEFINES += -DUSE_PLUGINMISSING
endif
ifdef PLUGINPARAM
DEFINES += -DUSE_PLUGINPARAM
endif
ifdef ROTOR
DEFINES += -DUSE_ROTOR
endif
ifdef SETTIME
DEFINES += -DUSE_SETTIME
endif
ifdef SOFTOSD
DEFINES += -DUSE_SOFTOSD
endif
ifdef SOURCECAPS
DEFINES += -DUSE_SOURCECAPS
endif
ifdef SORTRECORDS
ifdef LIEMIEXT
DEFINES += -DUSE_SORTRECORDS
endif
endif
ifdef STREAMDEVEXT
DEFINES += -DUSE_STREAMDEVEXT
endif
ifdef TIMERCMD
DEFINES += -DUSE_TIMERCMD
endif
ifdef TIMERINFO
DEFINES += -DUSE_TIMERINFO
endif
ifdef TTXTSUBS
DEFINES += -DUSE_TTXTSUBS
endif
ifdef VALIDINPUT
DEFINES += -DUSE_VALIDINPUT
endif
ifdef VOLCTRL
DEFINES += -DUSE_VOLCTRL
endif
ifdef WAREAGLEICON
DEFINES += -DUSE_WAREAGLEICON
endif
ifdef YAEPG
DEFINES += -DUSE_YAEPG
endif
Code:
mkdir /media/video
mkdir -p /usr/lib/vdr/plugins
mkdir -p /usr/lib/vdr/scripts
mkdir -p /etc/vdr/plugins
mkdir -P /usr/local/src/vdr/PLUGINS/lib
make
make plugins
make install
cp -a svdrpsend.pl /usr/bin
cp *.conf /etc/vdr/
Code:
cd /usr/local/src/vdr/PLUGINS/src
wget http://home.vrweb.de/~rnissl/vdr-xine-0.9.3.tgz
tar xivf vdr-xine-0.9.3.tgz
ln -s xine-0.9.3 xine
cd xine/data
mkdir /etc/vdr/plugins/xine
cp * /etc/vdr/plugins/xine
make plugins
make install-plugins
Code:
cd /usr/local/src/vdr/PLUGINS/src
apt-get install libssl-dev
apt-get install libbz2-dev
hg clone -r trunk http://85.17.209.13:6100/
make plugins
make install
mkdir -p /etc/vdr/plugins/sc
Code:
cd /usr/local/src/vdr/PLUGINS/src
wget http://projects.vdr-developer.org/attachments/download/116/
make plugins
make install
mkdir -p /var/cache/vdr/vtx
Code:
cd /usr/local/src/vdr/PLUGINS/src
wget http://www.saunalahti.fi/~rahrenbe/vdr/femon/files/
make plugins
make install
Code:
cd /usr/local/src/vdr/PLUGINS/src
wget http://www.escape-edv.de/endriss/vdr/vdr-remote-0.4.0.tgz
tar xzvf vdr-remote-0.4.0.tgz
ln -s remote-0.4.0 remote
cd remote
sed -i Makefile -e 's/VDRVERSION/
make plugins
make install
Code:
cd /usr/local/src/vdr/PLUGINS/src
wget http://andreas.vdr-developer.org/enigmang/download/
make plugins
make install
mkdir -p /etc/vdr/plugins/skinenigmang
cd /etc/vdr/plugins
wget http://andreas.vdr-developer.org/enigmang/download/skinenigmang-logos-xpm-hi-20070702.tgz
wget http://andreas.vdr-developer.org/enigmang/download/skinenigmang-channellogos-xpm-hi-20070702.tgz
tar xzvf skinenigmang-logos-xpm-hi-20070702.tgz
tar xzvf skinenigmang-channellogos-xpm-hi-20070702.tgz
Code:
cd /usr/local/src/vdr/PLUGINS/src
wget http://rsync16.de.gentoo.org/files/vdr-skinreel/vdr-skinreel-0.0.1.tgz
tar xzvf vdr-skinreel-0.0.1.tgz
ln -s skinreel-0.0.1 skinreel
cd skinreel
sed -i Makefile -e 's/VDRVERSION/APIVERSION/g'
cp -r skinreel /etc/vdr/
make plugins
make install
Since we now have VDR and the plugins installed. We can continue with the configuration of VDR and other items.
3.1. VDR and Plugins
With the command /usr/bin/vdr --help you get an overview of the options of VDR and it's plugins. This information is very important for configuring VDR or the plugins.
To make life easier, we create a script called /var/bin/runvdr which can be edited with for instance mcedit (apt-get install mc), nano or vi. I use the following configuration myself:
Code:
export LANG=en_EN
export LC_COLLATE=en_EN
PATH=/usr/local/bin:$PATH
VDRPRG="/usr/bin/vdr"
VDRCMD="/usr/bin/vdr -c /etc/vdr -E /var/vdr -l 3 \
-s /var/bin/vdrpoweroff.sh \
-P sc \
-P femon \
-P skinreel \
-P xine \
-u root \
$*"
KILL="/usr/bin/killall -q -TERM"
# Detect whether the DVB driver is already loaded
# and return 0 if it *is* loaded, 1 if not:
DriverLoaded()
{
return 1
}
# Load all DVB driver modules needed for your hardware:
LoadDriver ()
{
return 0
}
# Unload all DVB driver modules loaded in LoadDriver():
UnloadDriver ()
{
return 0
}
# Load driver if it hasn't been loaded already:
if ! DriverLoaded; then
LoadDriver
fi
while (true) do
eval "$VDRCMD"
if test $? -eq 0 -o $? -eq 2; then exit; fi
echo "`date` reloading DVB driver"
$KILL $VDRPRG
sleep 10
UnloadDriver
LoadDriver
echo "`date` restarting VDR"
done
One of the items which could be usefull, is the options with the remote plugin. Since I use the included Hauppauge remote, I use the input portion of the DVB driver. With the remote plugin I can call the input portion of the DVB driver. Since many DVB cards have are included with a remote, you can use the remote plugin to use that remote. To find out what the correct syntax is for the input location, you can do the following:
Code:
root@htpc:~# cd /dev/input/by-path/
root@htpc:/dev/input/by-path# ls -il
total 0
11787 lrwxrwxrwx 1 root root 9 2008-09-06 16:56 pci-0000:00:04.0-usb-0:2:1.3-event- -> ../event2
12213 lrwxrwxrwx 1 root root 9 2008-09-06 16:56 pci-0000:01:06.0--event-ir -> ../event7
12434 lrwxrwxrwx 1 root root 9 2008-09-06 16:56 pci-1-3--event-ir -> ../event8
11766 lrwxrwxrwx 1 root root 9 2008-09-06 16:56 platform-i8042-serio-0-event-kbd -> ../event1
11834 lrwxrwxrwx 1 root root 9 2008-09-06 16:56 platform-i8042-serio-1-event-mouse -> ../event6
11844 lrwxrwxrwx 1 root root 9 2008-09-06 16:56 platform-i8042-serio-1-mouse -> ../mouse1
11855 lrwxrwxrwx 1 root root 9 2008-09-06 16:56 platform-pcspkr-event-spkr -> ../event3
You can also use the remote plugin to use the lircd driver instead of the input driver. The lircd daemon/driver is needed when we want to use for instance a MCE remote. When we compiled the xine-ui part, we installed the lircd portion and you (hopefully) your remote. If you did not, you can do it again with the command dpkg-reconfigure lirc-modules-source. You can then use the following line in runvdr for using the remote plugin with the lircd:
Code:
-P'remote -l /dev/lircd' \
As you can see in my signature, I have a Wavefrontier T55 and it's installed with 4 LNB's aiming on 19.2e, 13.0e, 23.5e, 28.2e and 28.5e. The LNB's are then connected to a DISEqC 1.0 switch which uses the AA till BB configuration for switching. To use DISEqC we need to do two things, mainly edit /etc/vdr/diseqc.conf and enable DISEqC in the VDR setup.
As an example, I use the following configuration with my DISEqC switch and DVB card:
Code:
# port 1 option a position a
# port 2 option a position b
# port 3 option b position a
# port 4 option b position b
#
# DISEQC 4/1 setting on TT S2-3200
#
# port 1
S19.2E 11700 V 9750 t v W15 [E0 10 38 F0] W100 [E0 10 38 F0] W100 [E0 11 00] W100 A W15 t
S19.2E 99999 V 10600 t v W15 [E0 10 38 F1] W100 [E0 10 38 F1] W100 [E0 11 00] W100 A W15 T
S19.2E 11700 H 9750 t V W15 [E0 10 38 F2] W100 [E0 10 38 F2] W100 [E0 11 00] W100 A W15 t
S19.2E 99999 H 10600 t V W15 [E0 10 38 F3] W100 [E0 10 38 F3] W100 [E0 11 00] W100 A W15 T
# port 2
S13.0E 11700 V 9750 t v W15 [E0 10 38 F4] W100 [E0 10 38 F4] W100 [E0 11 00] W100 B W15 t
S13.0E 99999 V 10600 t v W15 [E0 10 38 F5] W100 [E0 10 38 F5] W100 [E0 11 00] W100 B W15 T
S13.0E 11700 H 9750 t V W15 [E0 10 38 F6] W100 [E0 10 38 F6] W100 [E0 11 00] W100 B W15 t
S13.0E 99999 H 10600 t V W15 [E0 10 38 F7] W100 [E0 10 38 F7] W100 [E0 11 00] W100 B W15 T
# port 3
S23.5E 11700 V 9750 t v W15 [E0 10 38 F8] W100 [E0 10 38 F8] W100 [E0 11 00] W100 A W15 t
S23.5E 99999 V 10600 t v W15 [E0 10 38 F9] W100 [E0 10 38 F9] W100 [E0 11 00] W100 A W15 T
S23.5E 11700 H 9750 t V W15 [E0 10 38 FA] W100 [E0 10 38 FA] W100 [E0 11 00] W100 A W15 t
S23.5E 99999 H 10600 t V W15 [E0 10 38 FB] W100 [E0 10 38 FB] W100 [E0 11 00] W100 A W15 T
# port 4
S28.2E 11700 V 9750 t v W15 [E0 10 38 FC] W100 [E0 10 38 FC] W100 [E0 11 00] W100 B W15 t
S28.2E 99999 V 10600 t v W15 [E0 10 38 FD] W100 [E0 10 38 FD] W100 [E0 11 00] W100 B W15 T
S28.2E 11700 H 9750 t V W15 [E0 10 38 FE] W100 [E0 10 38 FE] W100 [E0 11 00] W100 B W15 t
S28.2E 99999 H 10600 t V W15 [E0 10 38 FF] W100 [E0 10 38 FF] W100 [E0 11 00] W100 B W15 T
S28.5E 11700 V 9750 t v W15 [E0 10 38 FC] W100 [E0 10 38 FC] W100 [E0 11 00] W100 B W15 t
S28.5E 99999 V 10600 t v W15 [E0 10 38 FD] W100 [E0 10 38 FD] W100 [E0 11 00] W100 B W15 T
S28.5E 11700 H 9750 t V W15 [E0 10 38 FE] W100 [E0 10 38 FE] W100 [E0 11 00] W100 B W15 t
S28.5E 99999 H 10600 t V W15 [E0 10 38 FF] W100 [E0 10 38 FF] W100 [E0 11 00] W100 B W15 T
3.3. CCcam and the sc plugin
When you installed the sc plugin, you're adviced to create some scripts and download the CCcam.x86 binaries to get CCcam running. To make one thing clearly, CCcam on Linux/X86 requires a preload so that the sc plugin can read/write the data to unlock the channel.
To make your (and mine ;) ) life easier, we create an init.d and run scripts called cccam (/etc/init.d/cccam) and run.sh (/var/bin/run.sh). Also required is the ca.c (/var/bin/ca.c) file which is used for the preload. The files have the following contents:
File: /etc/init.d/cccam
Code:
#!/bin/sh
### BEGIN INIT INFO
# Provides: CCcam
# Required-Start: $network
# Required-Stop: $network
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Description: Start, Stop or Restart the CCcam softcam
### END INIT INFO
# Shell functions sourced from /etc/rc.status:
set -e
# Reset status of this service
# rc_reset
#
case "$1" in
start)
echo -n "Starting CCcam "
/var/bin/run.sh &
# Remember status and be verbose
;;
stop)
echo -n "Shutting down CCcam "
killall run.sh
killall CCcam.x86
# Remember status and be verbose
;;
restart)
echo -n "Restart CCcam "
$0 stop
$0 start
# Remember status and be quiet
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac
# rc_exit
exit 0
Code:
#!/bin/sh
cd /var/bin
gcc -march=pentium -mmmx -fomit-frame-pointer -fexpensive-optimizations -funroll-loops -fPIC -shared -o ca.so ca.c -ldl
LD_PRELOAD=./ca.so ; export LD_PRELOAD
while [ 1 ];
do
./CCcam.x86 -d > /var/log/CCcam.log
done
Code:
cp /usr/local/src/vdr/PLUGINS/src/sc/contrib/cccam_ca.c /var/bin/ca.c
Code:
chmod a+x /etc/init.d/cccam
chmod a+x /var/bin/run.sh
Also, before starting VDR, make sure you have the CCcam instance running. It can take a while before the CCcam run is completed. Configuring CCcam can be done using the file /var/etc/CCcam.cfg.
When we installed the sc plugin, you also need to tell the plugin how to connect using the cardclient.conf file (full location: /etc/vdr/plugins/sc/cardclient.conf). The following configuration is needed for use with CCcam, create the file using vi, nano or mc:
Code:
#
# Comment lines can start with # or ;
#
# every client line starts with the client name, followed by some arguments:
# 'hostname' is the name of the server
# 'port' is the port on the server
# 'emm' is a flag to allow EMM transfers to the server
# (0=disabled 1=enabled)
# 'caid' (optional) caid on which this client should work
# 'mask' (optional) mask for caid e.g. caid=1700 mask=FF00 would allow
# anything between 1700 & 17FF.
# Default is 1700 & FF00. If only caid is given mask is FFFF.
# You may give multiple caid/mask values comma separated
# (e.g. 1702,1722,0d0c/ff00).
# 'username' is the login username
# 'password' is the login password
#
# radegast client
# radegast:hostname:port:emm/caid/mask
#
# aroureos client
# 'hexbase'
# 'hexserial' card data for which EMM updates should be send
# aroureos:hostname:port:emm/caid/mask:hexbase:hexserial
#
# camd33 client (tcp protocol)
# 'aeskey' is the AES key (32bytes), disable encryption if missing
# camd33:hostname:port:emm/caid/mask:username:password:aeskey
#
# camd35 client (udp protocol)
# camd35:hostname:port:emm/caid/mask:username:password
#
# cardd client
# cardd:hostname:port:emm/caid/mask:username:password
#
# buffy client
# 'aeskey' is the AES key (32bytes), disable encryption if missing
# buffy:hostname:port:emm:username:password:aeskey
#
# newcamd client
# 'cfgkey' is the config key (28bytes)
# newcamd:hostname:port:emm/caid/mask:username:password:cfgKey
#
# gbox client
#
# NOTE: hostname & port will be ignore. GBOX must be runnning on the local
# machine. For convinience you should choose localhost:8004
# gbox:hostname:port:emm/caid/mask
#
# ccam client
#
# NOTE: hostname will be ignore. CCcam must be runnning on the local machine
# 'socket' is the name of the camd socket file. For multiple cards add %d
# into the string. This will be replaced with the number 0-3.
# e.g. /var/emu/chroot%d/tmp/camd.socket
cccam:127.0.0.1:9000:1/0000/0000:/tmp/camd.socket
3.4. Channels.conf
The default channels.conf is a bit empty, only some FTA channels from Astra 19.2e are there. If you want to add other channels and or sats, you can use the pre-scanned files from the Linowsat Settings VDR channels.conf page. With wget or a browser you can download the files. If you want to add multiple sats, be sure to download the file you want and cat it to the channels.conf (example: cat all.conf >> /var/etc/channels.conf).
The channels.conf itself, is just plain text file. So you can edit it with an editor and change it to your liking. Just make sure you have shutdown VDR before editing the file, otherwise your contributions will be overwritten. Items starting with :-> are infact bouquets names. With the config from linowsat, it's been set on the transponder and satellite. But offcourse you can add your own bouquet and change it for instance the provider.
To go through the bouquets, just watch a channel and press the button which is configured for left and right. When you are at your wanted bouquet, simply press the configured button for OK and it will change to the first channel in the bouqet.
3.5. Running VDR
If you have configured the runvdr script, we can now start VDR. Also for your convinience we create a init.d script called vdr (full location: /etc/init.d/vdr), create it using vi, nano or mc:
Code:
#!/bin/sh
### BEGIN INIT INFO
# Provides: VDR
# Required-Start: $network
# Required-Stop: $network
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Description: Start, Stop or Restart VDR
### END INIT INFO
# Shell functions sourced from /etc/rc.status:
set -e
# Reset status of this service
# rc_reset
#
case "$1" in
start)
echo -n "Starting VDR "
/var/bin/runvdr >> /var/log/vdr.log &
# Remember status and be verbose
;;
stop)
echo -n "Shutting down VDR "
killall runvdr
killall vdr
# Remember status and be verbose
;;
restart)
echo -n "Restart VDR "
$0 stop
$0 start
# Remember status and be quiet
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac
# rc_exit
exit 0
Code:
chmod a+x /var/bin/runvdr
chmod a+x /etc/init.d/vdr
Since we use the vdr-xine plugin, we use the xine frontend to watch the VDR output. To start xine, simply login into your X-session and when the desktop is shown, open a Terminal Session and type the following:
Code:
/usr/bin/xine -V xv -f -r anamorphic --post vdr_video --post vdr_audio --post upmix_mono --post vdr --verbose=2 "vdr:/tmp/vdr-xine/stream#demux:mpeg_pes"
When you start VDR for the first time, you'll need to configure your remote. Just press any key of the remote and follow the onscreen information. It's rather easy to understand and to setup your remote.
4. Some last words and knowhow
VDR is extremely flexible and can be expanded with a lot of plugins. I helped you with the plugins I think will be used the most. Just to make sure, most of the plugins have the option to be configured within VDR. To do this, press the button which is configured for Menu, goto Setup, select plugins and select the plugin you want to configure.
One important thing is, that options set within VDR must be applied by pressing the button which is configured for OK. If you don't do this, your changes will be reset to the original values.
If people encounter problems when viewing HDTV channels or if you can't lock onto a channel. The easiest way to check this, is to see if you get EPG information. If not, check the modulation and settings of the DVB-S2 transponder by going to the channellist, select your channel and press the Red button (edit). Edit the transponder information with the help of the kingofsat.net satellite information. Also, it can take a while before VDR changes the CAID's and that the sc plugin pick them up. Just be patient and eventually the channel will open (if you have correct subscription).
Concerning HDTV, with the following options you can modify the behaviour of ffmpeg when viewing h264 streams. Change these options in $HOME/.xine/config with the editor of your choice. Be sure to shutdown vdr-sxfe and VDR before changing.
Code:
video.processing.ffmpeg_choose_speed_over_accuracy:1
video.processing.ffmpeg_pp_quality:0
video.processing.ffmpeg_skip_loop_filter:all
# number of cores you have in your system:
video.processing.ffmpeg_thread_count:2
[code]
# default number of video frames
# numeric, default: 15
engine.buffers.video_num_frames:22
# Choose speed over specification compliance
# bool, default: 0
video.processing.ffmpeg_choose_speed_over_accuracy :1
# MPEG-4 postprocessing quality
# [0..6], default: 3
video.processing.ffmpeg_pp_quality:0
# Skip loop filter
# { default none nonref bidir nonkey all }, default: 0
video.processing.ffmpeg_skip_loop_filter:all
# FFmpeg video decoding thread count
# numeric, default: 1
video.processing.ffmpeg_thread_count:2
[code]
Anyway, I hope you like this tutorial. And many thanks to several people, especially cr0w and Jackblow! If you do like this tutorial, please use the Thanks button in this thread!
Compile XBMC
Now to the fun part.
Code:
svn co http://xbmc.svn.sourceforge.net/svnroot/xbmc/branches/pvr-testing/XBMC
cd XBMC
Code:
./configure --enable-vdpau
make -j2
sudo checkinstall --fstrans=no --install=yes --pkgname=xbmc --pkgversion "svn19616-vdr-testing"
xbmc
No comments:
Post a Comment