Eurocardsharing

Go Back   Eurocardsharing > Sharing receivers > VDR and Kaffeine

VDR and Kaffeine Discussion, HOWTO: VDR 1.7.0, HDTV and CCcam with budget cards on Ubuntu 8.04 using S2API at Sharing receivers forum; Introduction Since September 2008 certain developers started a extension of the 4vl repository to add support for the second generation ...

Reply
 
LinkBack Thread Tools Display Modes
HOWTO: VDR 1.7.0, HDTV and CCcam with budget cards on Ubuntu 8.04 using S2API
Old
  (#1)
shalafi
ECS Master
 
shalafi's Avatar
 
Offline
Posts: 412

Level: 18 [♥ Bé-Yêu ♥♥ Bé-Yêu ♥]
Life: 0 / 446
Magic: 137 / 13613
Experience: 87%

Thanks: 127
Thanked 492 Times in 131 Posts
Join Date: Jul 2007
HOWTO: VDR 1.7.0, HDTV and CCcam with budget cards on Ubuntu 8.04 using S2API - 28-February-2009, 17:39

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.

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 8.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.0, you require the S2API drivers and they must be downloaded installed! I use Igor's repo myself and this works with VDR 1.7.0. This tutorial works for DVB-S and DVB-S2 based budget cards and also DVB-S budget cards require multiproto, 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 8.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 libncurses-dev
apt-get install autoconf libtool automake pkg-config gettext
apt-get install liba52-0.7.4-dev liblame-dev libvorbis-dev zlib1g-dev libpng12-dev libx11-dev libxv-dev libasound2-dev
apt-get build-dep ffmpeg
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-swscale
make
make install
ldconfig -v
Xine-Lib 1.2 CVS:
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/local/lib/win32
ln -s /usr/local/lib/win32 /usr/local/lib/codecs
cd xine-lib-1.2
./autogen.sh --prefix=/usr --with-external-ffmpeg --disable-dxr3 --enable-w32dll --with-w32-path=/usr/local/lib/win32
make
make install
ldconfig -v
Xine-UI CVS
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-20080310200000.tar.bz2
tar xivf xine-ui-cvs-20080310200000.tar.bz2
cd xine-ui
./autogen.sh --prefix=/usr --enable-vdr-keys
make
make install
To test Xine and the other items. You can run the command xine from a Terminal Session (or use ALT-F2 and type xine as the command). If all goes well, the Xine-UI session should now come up. Because you started it for the first time, you can setup some items. For the time being, just press OK. Next you might want to play some media-files to check if the playback function works allright.

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.0
Code:
cd /usr/local/src
apt-get install libfreetype6-dev libfontconfig1-dev libjpeg62-dev libcap-dev libncurses5-dev libncursesw5-dev
wget ftp://ftp.cadsoft.de/vdr/Developer/vdr-1.7.0.tar.bz2
tar xivf vdr-1.7.0.tar.bz2
wget http://www.linuxtv.org/pipermail/vdr/attachments/20080413/1054bcfb/attachment-0001.bin
mv attachment-0001.bin vdr-1.7.0-h264-syncearly-framespersec-audioindexer-fielddetection-speedup.diff.bz2
bzip2 -d vdr-1.7.0-h264-syncearly-framespersec-audioindexer-fielddetection-speedup.diff.bz2
wget http://www.linuxtv.org/pipermail/vdr/attachments/20081007/edcd3fcc/attachment-0001.obj
mv attachment-0001.bin vdr-1.7.0-s2api-07102008-h264-clean.patch.gz
gzip -d vdr-1.7.0-s2api-07102008-h264-clean.patch.gz
cd vdr-1.7.0
patch -p1 < ../vdr-1.7.0-h264-syncearly-framespersec-audioindexer-fielddetection-speedup.diff
patch -p1 < ../vdr-1.7.0-s2api-07102008-h264-clean.patch
Before starting to compile, you need to create Make.config file in the /usr/local/src/vdr-1.7.0 folder using your favorite editor like vi, nano or mc. Be sure to use the following content:

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.0 2008/01/13 12:54:09 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
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/lircd
RCU_DEVICE  = /dev/ttyS1

## Define if you want vdr to not run as root
VDR_USER = root

### You don't need to touch the following:

ifdef DVBDIR
INCLUDES += -I$(DVBDIR)/include
endif
Now we can start with the rest:

Code:
mkdir /media/video
mkdir -p /usr/lib/vdr/plugins
mkdir -p /usr/lib/vdr/scripts
mkdir -p /etc/vdr/plugins
make
make plugins
make install
cp -a svdrpsend.pl /usr/bin
cp *.conf /etc/vdr/
Xineliboutput 1.0.3 - software output plugin
Code:
cd /usr/local/src/vdr-1.7.0/PLUGINS/src
apt-get install libextractor-dev
wget http://heanet.dl.sourceforge.net/sourceforge/xineliboutput/vdr-xineliboutput-1.0.3.tar.bz2
tar xivf vdr-xineliboutput-1.0.3.tar.bz2
mv xineliboutput-1.0.3 xineliboutput
cd xineliboutput
make
make install
mkdir -p /etc/vdr/plugins/xineliboutput
cp *.mpg /etc/vdr/plugins/xineliboutput/
cd ../../../
make plugins
make install
sc TRUNK - softcam plugin
Code:
cd /usr/local/src/vdr-1.7.0/PLUGINS/src
apt-get install libssl-dev 
hg clone -r trunk http://85.17.209.13:6100/sc
cd ../../
make plugins
make install
mkdir -p /etc/vdr/plugins/sc
OSD Teletext - Teletext plugin
Code:
cd /usr/local/src/vdr-1.7.0/PLUGINS/src
wget http://www.wiesweg-online.de/linux/vdr/vdr-osdteletext-0.5.1.tgz
wget http://www.vdr-portal.de/board/attachment.php?attachmentid=13339
mv attachment.php\?attachmentid\=13339 osdteletext-0.5.1-vdr-1.5.0.diff 
tar xivf vdr-osdteletext-0.5.1.tgz
mv osdteletext-0.5.1 osdteletext
cd osdteletext
patch -p1 < ../osdteletext-0.5.1-vdr-1.5.0.diff
cd ../../../
make plugins
make install
mkdir -p /vtx
Femon - Signal Information plugin
Code:
cd /usr/local/src/vdr-1.7.0/PLUGINS/src
wget http://www.saunalahti.fi/~rahrenbe/vdr/femon/files/vdr-femon-1.7.1.tgz
tar xzvf vdr-femon-1.7.1.tgz
mv vdr-femon-1.7.1 femon
cd ../../
make plugins
make install
Bitstreamout - AC/3 output plugin
Code:
cd /usr/local/src/vdr-1.7.0/PLUGINS/src
apt-get install libmad0-dev
wget http://heanet.dl.sourceforge.net/sourceforge/bitstreamout/vdr-bitstreamout-0.89c.tar.bz2
tar xivf vdr-bitstreamout-0.89c.tar.bz2
cd ../../
make plugins
make install
Remote - Remote plugin
Code:
cd /usr/local/src/vdr-1.7.0/PLUGINS/src
wget http://www.escape-edv.de/endriss/vdr/vdr-remote-0.4.0.tgz
tar xzvf vdr-remote-0.4.0.tgz
mv remote-0.4.0 remote
cd remote
sed -i Makefile -e 's/VDRVERSION/APIVERSION/g'
cd ../../
make plugins
make install
EnigmaNG - VDR Skin
Code:
cd /usr/local/src/vdr-1.7.0/PLUGINS/src
wget http://andreas.vdr-developer.org/enigmang/download/vdr-skinenigmang-0.0.6.tgz
tar xivf vdr-skinenigmang-0.0.6.tgz
mv skinenigmang-0.0.6 skinenigmang
cd ../../
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
wget http://andreas.vdr-developer.org/enigmang/download/skinenigmang-fonts-20080225.tgz
tar xzvf skinenigmang-channellogos-xpm-hi-20070702.tgz
tar xzvf skinenigmang-channellogos-xpm-hi-20070702.tgz
tar xzvf skinenigmang-fonts-20080225.tgz
Skin Reel - VDR Skin
Code:
cd /usr/local/src/vdr-1.7.0/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
mv skinreel-0.0.1 skinreel
cd skinreel
sed -i Makefile -e 's/VDRVERSION/APIVERSION/g'
cp -r skinreel /etc/vdr/plugins/
cd ../../../
make plugins
make install
3. Configuration

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'xineliboutput -l none -r 37890 -p' \
        -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
Pay close attention to the -P items. Those are the plugins which we're going to use and with -P we enable them. Also look closely to for instance xineliboutput how we can add plugin specific options to the startup of VDR. Use the --help switch with the vdr binary, to get the overview off the options from VDR as well as the plugins.

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:
[email protected]:~# cd /dev/input/by-path/
[email protected]:/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
As you can see, my remote is linked to pci-0000:01:06.0--event-ir (or /dev/input/event7) and that's what I use as input for the -i switch with the remote plugin. I don't use the location /dev/input/event7 since this can change when you rmmod and insmod the drivers again. And the ID of the PCI device won't change, so that's propably safer to use.

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' \
3.2. DISEqC

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
While we can't enable DISEqC yet, you do this later when you have VDR running. To enable DISEqC within VDR, Press the configured Menu button -> Goto Setup -> Goto LNB -> Set the option Use DISEqC to Yes -> Acknowledge with the configured OK button.

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
File: /var/bin/run.sh
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
File: /var/bin/ca.c
Code:
/* Evil evil evil hack  - lets newcamd write CWs to a file..
 *
 * Compile as follows:
 * gcc -O -fbuiltin -fomit-frame-pointer -fPIC -shared -o ca.so ca.c -ldl
 *
 * then run newcamd with:
 *
 * LD_PRELOAD=./ca.so ./newcamd.i386 newcamd.conf
 *
 * Will then write CWs to /tmp/newcamhack.cw. A patched (vdr) sc will read
 * these codewords to decode a stream.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Library General Public License for more details.
 *
 * You should have received a copy of the GNU Library General Public
 * License along with this library; if not, write to the
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 * Boston, MA 02111-1307, USA.
 */

#define DEBUG

#if defined(__GNUC__) && !defined(__STRICT_ANSI__)

#include <dlfcn.h>
#include <stdarg.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <linux/dvb/ca.h>
#include <linux/dvb/dmx.h>
#include <linux/dvb/frontend.h>
#include <linux/ioctl.h>
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>



/* BSDI has this functionality, but not define :() */
#if defined(RTLD_NEXT)
#define REAL_LIBC RTLD_NEXT
#else
#define REAL_LIBC ((void *) -1L)
#endif

static int cafd = -1;
/*static int cafd1 = -1;
static int cafd2 = -1;
static int cafd3 = -1;*/
static int ecm0 = -1;
static int ecm1 = -1;
static int ecm2 = -1;
static int ecm3 = -1;
static int caf;
static char filename[25];
static unsigned char scw[16];
static int gotcw = 0;
static int pids[64];

int sendcw(pid)
{
		
  unsigned char buffer[18];
   struct sockaddr_in saddr;
   int len;
 
   buffer[0]= pid & 0xff;
   buffer[1]= ((pid >> 8) & 0xFF);
   memcpy(&buffer[2], scw, 16);
 
   int ecmso = socket(PF_INET,SOCK_DGRAM,IPPROTO_UDP);
   
   fcntl(ecmso,F_SETFL,O_NONBLOCK);
   bzero(&saddr,sizeof(saddr));
   saddr.sin_family = AF_INET;
   saddr.sin_port = htons(9000);
   saddr.sin_addr.s_addr = inet_addr("127.0.0.1");
   len = connect(ecmso,(struct sockaddr *) &saddr,sizeof(saddr));
    if (len<0)
    	{
     printf("ca.so: Cannot connect UDP socket\n");
     close(ecmso);
     return 0;
   }
     printf("ca.so: Sendcw \n");
   if ( send(ecmso,buffer, 18, 0) == -1 ) { 
     printf("ca.so: Sendcw Error sending cw\n");
   }
   close(ecmso);
 	return 1;
}

ssize_t write (int __fd, __const void *__buf, size_t __n) __wur
{
static int (*func) (int __fd, __const void *__buf, size_t __n) = NULL;
   // printf ("write buffer %s \n",__buf);
  if (!func)
    func = (int (*) (int __fd, __const void *__buf, size_t __n)) dlsym (REAL_LIBC, "write");

//  if (__fd == ecm0) 
// god this is horrible but I can work out why I cant hook the /tmp/ecm0.info open...
  	{
  		if ((!strncmp(__buf,"pid:",4)) && (gotcw))
  			{
  				int pid;
  				 sscanf(__buf+8,"%x",&pid);
  				// we have pid and cw, cool we are ready to gooo...
  				//sendcw(pid);
  				
  				
  			}
  				
  	}
  return (*func) (__fd,__buf,__n);
}	
	



int
open (const char *pathname, int flags, ...)
{
  static int (*func) (const char *, int, mode_t) = NULL;
  va_list args;
  mode_t mode;
	char buffer[255];
 printf ("%s open...\n",pathname);
  if (!func)
    func = (int (*) (const char *, int, mode_t)) dlsym (REAL_LIBC, "open");

  va_start (args, flags);
  mode = va_arg (args, mode_t);
  va_end (args);

  if (strlen(pathname) > 40)
	exit(0);

  if (!strcmp (pathname, "/dev/dvb/adapter0/ca0"))
    {
#ifdef DEBUG
      printf ("hijacking ca0 open...\n");
#endif
		  cafd = (*func) ("/dev/zero", flags, mode);
		  printf("ca0 fd  = %d",cafd);
      return (cafd);
    }
/*  if (!strcmp (pathname, "/dev/dvb/adapter0/ca1"))
    {
#ifdef DEBUG
      printf ("hijacking ca1 open...\n");
#endif
		  cafd1 = (*func) ("/dev/zero", flags, mode);
		  printf("ca1 fd  = %d",cafd1);
      return (cafd1);
    }
  if (!strcmp (pathname, "/dev/dvb/adapter0/ca2"))
    {
#ifdef DEBUG
      printf ("hijacking ca2 open...\n");
#endif
		  cafd2 = (*func) ("/dev/zero", flags, mode);
		  printf("ca2 fd  = %d",cafd2);
      return (cafd2);
    }
  if (!strcmp (pathname, "/dev/dvb/adapter0/ca2"))
    {
#ifdef DEBUG
      printf ("hijacking ca2 open...\n");
#endif
		  cafd3 = (*func) ("/dev/zero", flags, mode);
		  printf("ca3 fd  = %d",cafd2);
      return (cafd3);
    }*/
    if (!strcmp (pathname, "/dev/dvb/adapter0/demux1"))
    {
	return(*func) ("/dev/dvb/adapter1/demux0", flags, mode);
    	//strcpy(pathname,"/dev/dvb/adapter1/demux0");
    }
    if (!strcmp (pathname, "/dev/dvb/adapter0/demux2"))
    {
	return(*func) ("/dev/dvb/adapter2/demux0", flags, mode);

    	//strcpy(pathname,"/dev/dvb/adapter2/demux0");
    }
    if (!strcmp (pathname, "/dev/dvb/adapter0/demux3"))
    {
	return(*func) ("/dev/dvb/adapter3/demux0", flags, mode);
    	//strcpy(pathname,"/dev/dvb/adapter3/demux0");
    }
  if (!strcmp(pathname,"/tmp/ecm.info"))
  	{
  		 printf ("hijacking /tmp/ecm.info open...\n");
  	return (ecm0 = (*func) (pathname,flags,mode));
  }
 
    return (*func) (pathname, flags, mode);
}

static int
cactl (int fd, int request, void *argp)
{
  ca_descr_t *ca = argp;
  ca_caps_t *cp = argp;
  ca_pid_t  *cpd = argp;
  static unsigned char cw[16];
  unsigned char *c;
  char buf[16];
int card =0;
//if (fd == cafd1) card = 1;
//if (fd == cafd2) card = 2;
//if (fd == cafd3) card = 3;	

#ifdef DEBUG
  printf ("hijacking ca%d ioctl,"
	   "(%d : %x - %p): ",card, fd, request, argp);
  switch (request) {
  case CA_RESET:
    printf ("CA_RESET\n");
    break;
  case CA_GET_CAP:
    printf ("CA_GET_CAP\n");
    break;
  case CA_GET_SLOT_INFO:
    printf ("CA_GET_SLOT_INFO\n");
    break;
  case CA_GET_DESCR_INFO:
    printf ("CA_GET_DESCR_INFO\n");
    break;
  case CA_GET_MSG:
    printf ("CA_GET_MSG\n");
    break;
  case CA_SEND_MSG:
    printf ("CA_SEND_MSG\n");
    break;
  case CA_SET_DESCR:
    printf ("CA_SET_DESCR\n");
    break;
  }
#endif

  switch (request)
    {
    case CA_GET_CAP:
      cp->slot_num = 2;
      cp->slot_type = CA_CI|CA_CI_LINK;
      cp->descr_num = 1;
      cp->descr_type = CA_ECD|CA_NDS|CA_DSS;
      return 0;
      
      case CA_SET_PID:
    printf ("CA_SET_PID\n");
    printf ("CA_SET_PID ahha here we are some decent data....\n");
    printf ("CS_SET_PID pid = %d, index = %d\n",cpd->pid, cpd->index);
    if (cpd->index >=0) 
    pids[cpd->index] = cpd->pid;
    return 1;
    case CA_SET_DESCR:
    	sprintf(filename,"/tmp/cw%d",card);
      caf = open(filename, O_WRONLY|O_CREAT,S_IROTH|S_IRUSR);
      c = &(ca->cw[0]);
#ifdef DEBUG
      printf("Parity: %d, Index: %d, CW: %02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx(%d)\n", ca->parity, ca->index, ca->cw[0], ca->cw[1], ca->cw[2], ca->cw[3], ca->cw[4],
		      ca->cw[5], ca->cw[6], ca->cw[7]);
#endif
      if (!ca->parity)
	 memcpy(&cw, c, 8);
      else
	 memcpy(&cw[8], c, 8);
#ifdef DEBUG
      printf("Wrote: %02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx:%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx\n",
		      cw[0], cw[1], cw[2], cw[3], 
		      cw[4], cw[5], cw[6], cw[7], 
		      cw[8], cw[9], cw[10], cw[11], 
		      cw[12], cw[13], cw[14], cw[15]);
#endif
      write (caf, &cw, 16);
      memcpy(scw,cw,16);
      gotcw = 1;
      close (caf);
      sendcw(pids[ca->index]);
    //  rename("/tmp/.canewcamdev", "/tmp/newcamhack.cw");
      break;
    }
  return 0;
}

int
ioctl (int fd, int request, void *a)
{
  static int (*func) (int, int, void *) = NULL;

  if (!func)                                                                    
    func = (int (*) (int, int, void *)) dlsym (REAL_LIBC, "ioctl");             

  if (fd == cafd) {
    return cactl (fd, request, a);
  } 
  
 /* if (fd == cafd1) {
  		return cactl (fd, request, a);
  	}
  if (fd == cafd2) {
  		return cactl (fd, request, a);
  	}
  	*/
  
    return (*func) (fd, request, a); 
  
  return 0;
}

int
close (int fd)
{
  static int (*func) (int) = NULL;
    printf ("Closing %d\n",fd);
  if (!func)
    func = (int (*) (int)) dlsym (REAL_LIBC, "close");

  if (fd == cafd)
  	{
    cafd = -1;
    printf ("Closing ca0...\n");
  }
  if (fd == ecm0)
  	{
  		ecm0 = -1;
  		printf ("Closing ecm0...\n");
  	}
#ifdef DEBUG
  
#endif
  return (*func) (fd);
}

#endif
Last we need to make the scripts executable:
Code:
chmod a+x /etc/init.d/cccam
chmod a+x /var/bin/run.sh
This scipt has the options: start (start CCcam), stop (stop CCcam) and restart (restart CCcam) -> Example: /etc/init.d/cccam start. With this script the preload will be done automaticly and it infact starts the /var/bin/run.sh script which then compiles the preload file and starts CCcam in debug mode. WARNING! Never run the CCcam.x86 binary, use the run.sh script instead!

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
All CAID's from VDR will be put through CCcam with the current config. You can also edit the file and add newcamd, gbox, camd3, etc connections as well. Just remember, the priority is based upon the location. The 1st line is the 1st to be checked if it can open the channel.

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
After creating the file, make sure that the runvdr and the init.d script can be executed:

Code:
chmod a+x /var/bin/runvdr
chmod a+x /etc/init.d/vdr
With the options start, stop and restart you can start, stop or restart the VDR process. The output of VDR is being written to the file /var/log/user.log. So if it fails, be sure to check that file for information about the error.

Since we use the xineliboutput plugin, we use the vdr-sxfe frontend to watch the VDR output. Before starting vdr-sxfe, you might want to edit the /etc/vdr/svdrphosts.conf file to include your network configuration.

To start vdr-sxfe, simply login into your X-session and when the desktop is shown, open a Terminal Session and type the following:

Code:
vdr-sxfe --video=xv --aspect=16:9 --fullscreen --width=1280 --height=720 --nokbd --post=tvtime:method=Linear,cheap_mode=1,pulldown=0,use_progressive_frame_flag=1
With the above option the vdr-sxfe binary will start. You can change the width and height to your liking (I have my system configured for [email protected]). Ultimately you can use a frontend like oxine or Linux MMS to start vdr-sxfe. But to be honest, this is outside of this tutorial ;)

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
Anyway, I hope you like this tutorial. And many thanks to several people, especially cr0w! If you do like this tutorial, please use the Thanks button in this thread!

//Shalafi


-=[ Ubuntu Linux 9.04 | VDR 1.7.9 | HVR-4000 | eHD | Wavefield T55]=-
   
Reply With Quote
The Following 18 Users Say Thank You to shalafi For This Useful Post:
alex_l (05-July-2010), ascom (05-March-2009), b3k1m1 (16-January-2011), bunko (06-March-2009), cooler (04-March-2009), dbca (29-May-2010), hos_me (02-March-2009), jackblow33 (11-March-2009), jarzabekwaclaw (02-April-2009), KlausA (13-February-2010), maximax (29-January-2010), pietjepuk (16-May-2009), SeanCorky (05-May-2009), Smurfer (28-February-2009), sperwer6 (14-June-2009), tipolosko (29-July-2009), tomlase (08-April-2009), winipuch (07-May-2010)
Old
  (#2)
hos_me
Junior Member
 
hos_me's Avatar
 
Offline
Posts: 14

Level: 2 [♥ Bé-Yêu ♥♥ Bé-Yêu ♥]
Life: 0 / 37
Magic: 4 / 973
Experience: 50%

Thanks: 4
Thanked 4 Times in 4 Posts
Join Date: Feb 2009
Age: 34
02-March-2009, 10:11

great job mr.shalafi

thank u
   
Reply With Quote
Sponsored Links
Old
  (#3)
cooler
Member
 
cooler's Avatar
 
Offline
Posts: 38

Level: 4 [♥ Bé-Yêu ♥♥ Bé-Yêu ♥♥ Bé-Yêu ♥]
Life: 0 / 98
Magic: 12 / 3138
Experience: 94%

Thanks: 7
Thanked 13 Times in 7 Posts
Join Date: Jan 2007
04-March-2009, 12:55

Hi m8 one or two errors I think.

In the vdr1.7.0 section this line "mv attachment-0001.bin vdr-1.7.0-s2api-07102008-h264-clean.patch.gz" should be like this?
"mv attachment-0001.obj vdr-1.7.0-s2api-07102008-h264-clean.patch.gz
also from this
mv vdr-femon-1.7.1 femon
to this
mv femon-1.7.1 femon
in the femon section

But having changed those am still having some problems , this is what I get when I run the vdr.

VDR server not given, searching ...
---------------------------------------------------------------
WARNING: MRL not given and server not found from local network.
Trying to connect to default port on local host.
---------------------------------------------------------------
[6802] [vdr-fe] fe_xine_init: xine_open_video_driver("xv") failed
Error initializing xine
Available video drivers: xv raw opengl xshm none sdl vidix vidixfb fb
Available audio drivers: alsa oss none file

and the log is

Mar 3 22:15:17 hdmedia pulseaudio[6391]: module-gconf.c: Unable to read or parse data from client.
Mar 3 22:24:26 hdmedia dhcdbd: Started up.
Mar 3 22:24:52 hdmedia pulseaudio[6085]: alsa-util.c: Device hw:2 doesn't support 44100 Hz, changed to 48000 Hz.
Mar 4 06:59:30 hdmedia dhcdbd: Started up.
Mar 4 07:00:13 hdmedia pulseaudio[6143]: alsa-util.c: Device hw:2 doesn't support 44100 Hz, changed to 48000 Hz.
Mar 4 08:21:12 hdmedia pulseaudio[6143]: module-gconf.c: Unable to read or parse data from client.
Mar 4 08:24:11 hdmedia dhcdbd: Started up.
Mar 4 10:13:12 hdmedia vdr: [27861] cTimeMs: using monotonic clock (resolution is 4000250 ns)
Mar 4 10:13:12 hdmedia vdr: [27861] shm_free: pointer (nil) not found in alloc space
Mar 4 10:39:02 hdmedia vdr: [28241] cTimeMs: using monotonic clock (resolution is 4000250 ns)
Mar 4 10:39:02 hdmedia vdr: [28241] VDR version 1.7.0 started
Mar 4 10:39:02 hdmedia vdr: [28241] switched to user 'root'
Mar 4 10:39:02 hdmedia vdr: [28241] codeset is 'UTF-8' - known
Mar 4 10:39:03 hdmedia vdr: [28241] found 0 locales in /usr/share/locale
Mar 4 10:39:03 hdmedia vdr: [28241] no locale for language code 'deu,ger'
Mar 4 10:39:03 hdmedia vdr: [28241] no locale for language code 'slv,slo'
Mar 4 10:39:03 hdmedia vdr: [28241] no locale for language code 'ita'
Mar 4 10:39:03 hdmedia vdr: [28241] no locale for language code 'dut,nla,nld'
Mar 4 10:39:03 hdmedia vdr: [28241] no locale for language code 'por'
Mar 4 10:39:03 hdmedia vdr: [28241] no locale for language code 'fra,fre'
Mar 4 10:39:03 hdmedia vdr: [28241] no locale for language code 'nor'
Mar 4 10:39:03 hdmedia vdr: [28241] no locale for language code 'fin,smi'
Mar 4 10:39:03 hdmedia vdr: [28241] no locale for language code 'pol'
Mar 4 10:39:03 hdmedia vdr: [28241] no locale for language code 'esl,spa'
Mar 4 10:39:03 hdmedia vdr: [28241] no locale for language code 'ell,gre'
Mar 4 10:39:03 hdmedia vdr: [28241] no locale for language code 'sve,swe'
Mar 4 10:39:03 hdmedia vdr: [28241] no locale for language code 'rom,rum'
Mar 4 10:39:03 hdmedia vdr: [28241] no locale for language code 'hun'
Mar 4 10:39:03 hdmedia vdr: [28241] no locale for language code 'cat,cln'
Mar 4 10:39:03 hdmedia vdr: [28241] no locale for language code 'rus'
Mar 4 10:39:03 hdmedia vdr: [28241] no locale for language code 'hrv'
Mar 4 10:39:03 hdmedia vdr: [28241] no locale for language code 'est'
Mar 4 10:39:03 hdmedia vdr: [28241] no locale for language code 'dan'
Mar 4 10:39:03 hdmedia vdr: [28241] no locale for language code 'cze,ces'
Mar 4 10:39:03 hdmedia vdr: [28241] no locale for language code 'tur'
Mar 4 10:39:03 hdmedia vdr: [28241] no locale for language code 'ukr'
Mar 4 10:39:03 hdmedia vdr: [28241] loading plugin: /usr/lib/vdr/plugins/libvdr-sc.so.1.7.0
Mar 4 10:39:03 hdmedia vdr: [28241] ERROR: /usr/lib/vdr/plugins/libvdr-sc.so.1.7.0: cannot open shared object file: No such file or directory
Mar 4 10:39:03 hdmedia vdr: [28241] exiting, exit code 2
Mar 4 10:41:56 hdmedia dhcdbd: Started up.

Thanks, any help is appreciated.

Last edited by cooler; 04-March-2009 at 14:50..
   
Reply With Quote
Old
  (#4)
bunko
Junior Member
 
bunko's Avatar
 
Offline
Posts: 1

Level: 1 [♥ Bé-Yêu ♥]
Life: 0 / 0
Magic: 0 / 0
Experience: 0%

Thanks: 1
Thanked 0 Times in 0 Posts
Join Date: Sep 2008
Age: 46
Thumbs up 06-March-2009, 02:20

Great guide!

The image quality is much much better than with multiproto. The channels that had artifacts in multiproto are very clear now.

Thank you.
   
Reply With Quote
HDMI: no sound
Old
  (#5)
gloomy
Linux-VDR Guru
 
gloomy's Avatar
 
Offline
Posts: 12

Level: 2 [♥ Bé-Yêu ♥]
Life: 0 / 31
Magic: 4 / 804
Experience: 25%

Thanks: 3
Thanked 1 Time in 1 Post
Join Date: Mar 2009
Location: United States of Europe
Age: 47
Question HDMI: no sound - 09-March-2009, 16:31

Hi Shalafi,

I bought the same motherboard and sat card as you and also installed xubuntu 8.04 to keep it all simple.

I found that the latest NVIDIA driver wasn't working (180) but 177 outputs 1920x1024

Only trouble is that I get no sound though the HDMI connector.

Can you point me in the right direction how did you managed to get that working?
Code:
aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: NVidia [HDA NVidia], device 0: ALC883 Analog [ALC883 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: NVidia [HDA NVidia], device 1: ALC883 Digital [ALC883 Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
Code:
 uname -r
2.6.24-23-generic
   
Reply With Quote
Old
  (#6)
shalafi
ECS Master
 
shalafi's Avatar
 
Offline
Posts: 412

Level: 18 [♥ Bé-Yêu ♥♥ Bé-Yêu ♥]
Life: 0 / 446
Magic: 137 / 13613
Experience: 87%

Thanks: 127
Thanked 492 Times in 131 Posts
Join Date: Jul 2007
09-March-2009, 20:27

@gloomy

Try the latest alsa release. There are some howto's to install alsa by hand on a Ubuntu configuration.

//Shalafi


-=[ Ubuntu Linux 9.04 | VDR 1.7.9 | HVR-4000 | eHD | Wavefield T55]=-
   
Reply With Quote
The Following User Says Thank You to shalafi For This Useful Post:
gloomy (10-March-2009)
Xine error
Old
  (#7)
xlinker
Junior Member
 
xlinker's Avatar
 
Offline
Posts: 3

Level: 1 [♥ Bé-Yêu ♥]
Life: 0 / 2
Magic: 1 / 81
Experience: 10%

Thanks: 0
Thanked 0 Times in 0 Posts
Join Date: Aug 2007
Xine error - 10-March-2009, 21:14

Hi, thanks for another great howto shalafi!

Can anyone help me with this error:

ff_video_decoder.c:126: warning: AVPaletteControl is deprecated
ff_video_decoder.c: In function ff_convert_frame:
ff_video_decoder.c:582: error: PIX_FMT_RGBA32 undeclared (first use in this function)
ff_video_decoder.c:582: error: (Each undeclared identifier is reported only once
ff_video_decoder.c:582: error: for each function it appears in.)
ff_video_decoder.c: In function ff_handle_special_buffer:
ff_video_decoder.c:950: warning: AVPaletteControl is deprecated
ff_video_decoder.c:954: warning: AVPaletteControl is deprecated
ff_video_decoder.c: In function ff_handle_buffer:
ff_video_decoder.c:1290: error: PIX_FMT_RGBA32 undeclared (first use in this function)
ff_video_decoder.c:1346: warning: passing argument 1 of pp_postprocess from incompatible pointer type
ff_video_decoder.c: In function init_video_plugin:
ff_video_decoder.c:1670: warning: dereferencing type-punned pointer might break strict-aliasing rules
make[4]: *** [xineplug_decode_ff_la-ff_video_decoder.lo] Error 1
make[4]: Leaving directory `/usr/local/src/xine-lib-1.2/src/combined/ffmpeg'
make[3]: *** [all] Error 2
make[3]: Leaving directory `/usr/local/src/xine-lib-1.2/src/combined/ffmpeg'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/usr/local/src/xine-lib-1.2/src/combined'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/local/src/xine-lib-1.2/src'
make: *** [all-recursive] Error 1

I also get a error when I try to configure ffmpeg with --enable-swscale, no such option.
Any advice would be great.

Regards
   
Reply With Quote
Old
  (#8)
gloomy
Linux-VDR Guru
 
gloomy's Avatar
 
Offline
Posts: 12

Level: 2 [♥ Bé-Yêu ♥]
Life: 0 / 31
Magic: 4 / 804
Experience: 25%

Thanks: 3
Thanked 1 Time in 1 Post
Join Date: Mar 2009
Location: United States of Europe
Age: 47
10-March-2009, 21:32

Thanks Shalafi,

I am doing that right now as we speak, I found this howto:
Goings On: Ubuntu and HDMI Audio Output

One question about VDR, is there any point in trying to get 1.7.4 working (if all the trouble is minor patch rejects then I can try to handle it) or it is a lost cause and stick to 1.7.0 ?

Cheers,

Gloomy

Quote:
Originally Posted by shalafi View Post
@gloomy

Try the latest alsa release. There are some howto's to install alsa by hand on a Ubuntu configuration.

//Shalafi
(10-March-2009 20:39)
Latest ALSA didnt help...
Code:
aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: NVidia [HDA NVidia], device 0: ALC883 Analog [ALC883 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: NVidia [HDA NVidia], device 1: ALC883 Digital [ALC883 Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
Code:
 uname -r
2.6.24-24-generic
Code:
aplay -L
default:CARD=NVidia
    HDA NVidia, ALC883 Analog
    Default Audio Device
front:CARD=NVidia,DEV=0
    HDA NVidia, ALC883 Analog
    Front speakers
surround40:CARD=NVidia,DEV=0
    HDA NVidia, ALC883 Analog
    4.0 Surround output to Front and Rear speakers
surround41:CARD=NVidia,DEV=0
    HDA NVidia, ALC883 Analog
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=NVidia,DEV=0
    HDA NVidia, ALC883 Analog
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=NVidia,DEV=0
    HDA NVidia, ALC883 Analog
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=NVidia,DEV=0
    HDA NVidia, ALC883 Analog
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
null
    Discard all samples (playback) or generate zero samples (capture)
default:CARD=CX8811
    Conexant CX8811, CX88 Digital
    Default Audio Device
Shalafi, since we have the same motherboard and same sat car, any chance you can tar your HD minus your home folder?

(10-March-2009 20:47)
Code:
dmesg:

 cx2388x alsa driver version 0.0.6 loaded

 hda_codec: Unknown model for ALC883, trying auto-probe from BIOS.
(10-March-2009 20:58)
Just to clarify,
I am running ubuntu 8.04
and my motherboard is an ABIT A-N78HD
Same as yours Shalafi???

Last edited by gloomy; 10-March-2009 at 21:58.. Reason: Automerged Doublepost
   
Reply With Quote
Old
  (#9)
jackblow33
Junior Member
 
jackblow33's Avatar
 
Offline
Posts: 10

Level: 2 [♥ Bé-Yêu ♥]
Life: 0 / 25
Magic: 3 / 651
Experience: 0%

Thanks: 2
Thanked 4 Times in 4 Posts
Join Date: Jan 2009
11-March-2009, 04:09

Installing VDR 1.7.4 with this great guide is quite easy. Not a lot of steps have to be adapt I have post @DVBN in their linux section how to do it for NA(just the channel scanner we are using is different). I couldnt tell if 1.7.4 is better than 1.7.0 never tried 1.7.0 .

Last edited by jackblow33; 11-March-2009 at 04:10.. Reason: error
   
Reply With Quote
The Following User Says Thank You to jackblow33 For This Useful Post:
gloomy (12-March-2009)
Old
  (#10)
gloomy
Linux-VDR Guru
 
gloomy's Avatar
 
Offline
Posts: 12

Level: 2 [♥ Bé-Yêu ♥]
Life: 0 / 31
Magic: 4 / 804
Experience: 25%

Thanks: 3
Thanked 1 Time in 1 Post
Join Date: Mar 2009
Location: United States of Europe
Age: 47
11-March-2009, 13:12

I have googled for hours, but nothing...

Has anybody ever got HDMI sound output with the motherboard used in this tutorial? ABIT N78HD

the chipset is: Realtek ALC888 7.1

(11-March-2009 14:18)
Some progress in theory.
Installed alsa 1.19 with the alsa upgrade script
Now I can see the HDMI device with aplay -l

aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: NVidia [HDA NVidia], device 0: ALC888 Analog [ALC888 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: NVidia [HDA NVidia], device 1: ALC888 Digital [ALC888 Digital]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: NVidia [HDA NVidia], device 3: NVIDIA HDMI [NVIDIA HDMI]
Subdevices: 1/1
Subdevice #0: subdevice #0


But still cant play any sound through hdmi...

Last edited by gloomy; 11-March-2009 at 15:18.. Reason: Automerged Doublepost
   
Reply With Quote
Reply

Bookmarks

Tags
1.7.0, 8.04, budget, cards, cccam, hdtv, howto:, s2api, ubuntu


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are Off
Refbacks are Off

Forum Jump



ECS on RSS ECS on Twitter ECS on Facebook ECS on Youtube
Follow us on:

Powered by vBulletin
Copyright 2002 - 2010, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
Dreambox