From Gentoo Wiki
Jump to: navigation, search
Other languages:
English • ‎español • ‎日本語 • ‎한국어

This guide shows you how to prepare Gentoo Linux for DVB and VDR.

General information to DVB

What is DVB?

DVB stands for Digital Video Broadcasting. DVB describes methods to transfer digital data of TV, radio, interactive services like MHP, EPG and teletext. Through data compression with MPEG-2, or H.264 for HDTV, it's possible to transfer several channels on the same frequency. The more data compression, the more channels can be transferred, but you pay it with quality loss.

DVB can be transferred in several ways. The trailing letter identifies the method of transfer, e.g. DVB-T for terrestrial transmission. There are several more types:

  • DVB-S for transmission over satellites
  • DVB-C for transmission over cable
  • DVB-H for transmission to mobile devices (terrestrial)
  • DVB-IPI for transmission over IP based networks, e.g. internet
  • DVB-RC(S/C/T) return channel for the transmission of data services, e.g. broadband internet

Types and requirement of DVB cards

Besides the different methods available to receive a DVB stream, the cards are classified by their type of produced output. There are cards with a decoder implemented which offer direct access to the stream by the device /dev/video. These cards are full featured cards. Other cards have no own decoder implemented and require a software decoder on the computer and are budget cards. This implies higher system requirements. Your computer's CPU should run at at least 600 MHz, and have at least 256MB of RAM. This list is useful for identifying your card.

Preparing the system

Configuring the kernel

First, we must ensure that your kernel supports DVB and your DVB device. Since kernel version 2.6 the necessary drivers are included. Check your kernel configuration and make sure the following options are selected as a static driver or as modules.

KERNEL Required kernel options
Input Device Support --->
* Event Interface
Device Drivers --->
<M> Multimedia Support --->
  [*] Digital TV support
   M  [Your driver]

Additionally we have to select the proper driver for your hardware. To find out the right module for your card, we mark every driver as module. If you have a PCI card, install pciutils if you haven't already. If you want built-in drivers or you don't own a PCI card, skip this step and continue with Checking the kernel output.

root #emerge --ask pciutils

After booting the new kernel, we run pcimodules to list the required modules.

root #pcimodules

In this case we have to load the module b2c2-flexcop-pci. We add the name to /etc/conf.d/modules.

FILE /etc/conf.d/modules

Checking the kernel output

It's recommended to mark every driver as module, so that you can add the required module dynamically, especially if you don't know the module name. If you already know the module name, select the driver as a built-in driver. Compile the kernel, install the modules and boot it. You can check if your kernel has successfully detected your card by using dmesg.

If you own a TerraTec Cinergy T2, your output might look like this:

root #dmesg | grep DVB
DVB: registering new adaptor (TerraTec/qanu USB2.0 Highspeed DVB-T Receiver).
input: TerraTec/qanu USB2.0 Highspeed DVB-T Receiver remote control as /class/input/input2

Installing VDR

To install VDR, we just emerge it.

root #emerge --ask vdr

Installing the Remote Control

There are at least two ways to control VDR via an infrared remote control. If your TV card has an onboard IR receiver you can use vdr-remote. Otherwise, you most likely need to use LIRC.

Installing vdr-remote

We first install the plugin via emerge:

root #emerge vdr-remote
root #eselect vdr-plugin enable remote

When using the remote plugin for the IR port on your DVB card everything should be fine with the default config. It automatically uses the input device which has "dvb" in its name. For more advanced uses take a look at /etc/conf.d/vdr.remote.

Alternative: installing LIRC

If your card can be remotely controlled (but you cannot or do not want to use vdr-remote ), you may wish to configure LIRC. LIRC interprets the pressed keys and returns a name for each one. A program that supports LIRC waits for key events and runs the action configured in the config file, mostly stored in the config directory of the executing program (e.g. mplayer loads the file ~/.mplayer/lircrc ). Before we install LIRC, you have to add lirc to your USE flags and add an additional entry to /etc/portage/make.conf: LIRC_DEVICES. Use this list to find the proper arguments for the option.

FILE /etc/portage/make.conf
# (Replace "devinput" with the proper driver)
root #emerge --ask lirc

At first we have to define each key code with a name. Most supported remote controls are configured already, take a look at the remote list. Download the required file and save it as /etc/lircd.conf. Now we have to find out where to access your remote control. Run the following command to get a list of the current input devices (make sure your device is running).

root #cat /proc/bus/input/devices
I: Bus=0000 Vendor=0000 Product=0000 Version=0000
N: Name="TerraTec/qanu USB2.0 Highspeed DVB-T Receiver remote control"
P: Phys=usb-0000:00:1d.7-1/input0
S: Sysfs=/class/input/input2
H: Handlers=kbd event1
B: EV=100003
B: KEY=108fc210 2043 0 0 0 0 8000 2080 1 9e1680 0 0 ffc

In this case we have the Terratec Cinergy T2 device plugged in, so we can access the device over /dev/input/event1. Replace event1 with the matching device in your output.

lircd needs to know the device to use. Add the following line to /etc/conf.d/lircd. Remember to replacedevinput with the name of your driver andevent1 with the actual device.

FILE /etc/conf.d/lircd
LIRCD_OPTS="-H devinput -d /dev/input/event1"

It's time to start lircd:

root #/etc/init.d/lircd start

Now it should be possible to watch lircd capturing and decoding key presses. Just run the command irw. Stop it by pressing Ctrl + C when you have enough.

root #irw
0000000000001aa2 00 Exit Technisat_TTS35AI.conf
0000000000001a8d 00 Mute Technisat_TTS35AI.conf
0000000000000a97 00 OK Technisat_TTS35AI.conf
0000000000000a97 01 OK Technisat_TTS35AI.conf
0000000000000a92 00 Menu Technisat_TTS35AI.conf

Next, add it to the default runlevel so that it starts automatically at boot.

root #rc-update add lircd default

To be able to use your remote control, you must enable LIRC support in VDR. Add the following line to /etc/conf.d/vdr:

FILE /etc/conf.d/vdr

Video Output Methods

You now need to decide on one (and only one!) of the following video output devices which show the picture and the overlayed On Screen Display (OSD).

Hardware decoding: full-featured DVB cards

Install media-plugins/vdr-dvbhddevice when using an TechnoTrend Premium S2-6400 Twin HD, or general hardware decoding for SDTV and HDTV (MPEG2 and MPEG4 AVC/H.264:

root #emerge --ask vdr-dvbhddevice

For Fujitsu_Siemens, Hauppage WinTV and TechnoTrend Premium S2300 and cards based on this reference design, or general hardware decoding for SDTV (MPEG1 and MPEG2):

root #emerge --ask vdr-dvbsddevice

Hardware decoding: DXR3/Hollywood+ cards

To use a DXR3 card for VDR output we need the vdr-dxr3 plugin.

root #emerge --ask vdr-dxr3
FILE /etc/conf.d/modules

The em8300 module need some configuration that depends on the exact revision of that card.

Hardware decoding: PVR350 cards

As PVR350 cards have an onboard MPEG-Decoder chip we want to make use of that. We need to install the vdr-pvr350 plugin. If ivtv-driver is not yet installed emerge will automatically install it for you. To have the ivtv module loaded at boot we add it to /etc/conf.d/modules:

root #emerge --ask vdr-pvr350
FILE /etc/conf.d/modules

Software decoding: vdr-xineliboutput

Some people prefer to use vdr-xineliboutput, because it can also work remotely. We'll now teach you how to configure vdr-xineliboutput on your host and client. First, the host setup:

root #emerge --ask vdr-xineliboutput
root #eselect vdr-plugin enable xineliboutput

Adding command line options at this point is crucial for xineliboutput to work. For more options, see vdr --help.

FILE /etc/conf.d/vdr.xineliboutput
_EXTRAOPTS="--local=none --remote=37890"

The next step is to edit /etc/vdr/svdrphosts.conf. This file describes a number of host addresses that are allowed to connect to the SVDRP port of the video disk recorder running on the host system.

FILE /etc/vdr/svdrphosts.conf
# (The proper syntax is: IP-Address[/Netmask])             (always accept localhost)        (any host on the local net)
#      (a specific host)
#            (any host on any net - USE THIS WITH CARE!)

If you only want to use vdr-xineliboutput to view the picture on the same computer as the one running VDR you can continue with creating the channel list.

Otherwise, you now simply emerge media-plugins/vdr-xineliboutput on your client:

root #emerge --ask vdr-xineliboutput

Later (after having started VDR) you will use the command vdr-sxfe xvdr://hostname to connect to VDR and view its picture and OSD.

There is also a plugin which just simulates the existance of a real output device (vdr-dummydevice) for some fancy uses like record-only servers, but that is more advanced than a normal VDR setup.

Creating a Channel List

To make VDR really useful you need to create an appropriate channel list. There is more than one way to get a working list of channels (besides downloading one). The channel list installed by default is for DVB-S reception on Astra on 19.2° E.

Using dvbscan from linuxtv-dvb-apps

root #emerge --ask linuxtv-dvb-apps

Find the correct frequency list for your region and type of reception. These files are stored under /usr/share/dvb. For reception with DVB-T in Germany, Berlin you need to use /usr/share/dvb/dvb-t/de-Berlin.

user $dvbscan -o vdr /usr/share/dvb/dvb-t/de-Berlin > /etc/vdr/channels.conf

Using vdr-reelchannelscan

First, delete the contents of the existing channel list.

root #rm /etc/vdr/channels.conf
root #emerge --ask vdr-reelchannelscan
root #eselect vdr-plugin enable reelchannelscan

Channels for systems using vdr-analogtv

You'll probably want to configure your channels at this point. The VDR project provides you with some examples which can be found at /usr/share/doc/vdr-analogtv-$version/examples/, as long as you've installed >= media-plugins/vdr-analogtv-1.0.00-r1.

Starting VDR

After having all basic software parts ready on the system you need to configure VDR with its OSD.

If you use a hardware decoder for picture output you should switch on the connected TV now. If you use software output the client for this must be started after VDR.

First, you should learn your key definitions; that is, connecting keys on your remote control to VDR's internal commands.

Just in case you need to edit the keyboard configuration, or (more likely) want to delete it to go back to learning the keys: VDR stores its key-definitions in /etc/vdr/remote.conf.

We begin with starting VDR:

root #/etc/init.d/vdr start
* Preparing start of vdr:
*   config files ...                                        [ ok ]
*   Waiting for prerequisites (devices nodes etc.) ...      [ ok ]
* Starting vdr ...                                          [ ok ]
* First start of vdr: No check for running vdr possible
* until control device (remote/keyboard) keys are learnt!
Users of software decoders should now start the client program that opens the window to show the TV picture and the OSD.

For users of vdr-softdevice:

root #ShmClient

For users of vdr-xineliboutput:

root #vdr-sxfe xvdr://hostname

The most useful keys for VDR are:

  • Cursor keys (Left/Right/Up/Down)
  • Menu/Exit/Ok
  • Colors (Red/Green/Yellow/Blue)
  • Number keys (0-9)
If you don't have many keys, make sure to assign these. (Some remotes have Play/Pause/etc. on the same keys as the colors, so use them for the colors).

Now that the basic installation is over, you need to configure VDR. Switch to your output screen and follow the on-screen instructions. VDR asks you to press various keys on your remote control to learn the correct key codes. If you don't own a remote control, you can use your keyboard.

Now you can add the VDR initscript to the default runlevel to get it started every time your computer boots up.

root #rc-update add vdr default


If you need any help, you can always ask someone in #gentoo-vdr, or look around on our forums.

This article is based on a document formerly found on our main website gentoo.org.
The following people have contributed to the original document: Norman Golisz, Dimitry Bradt, Matthias Schwarzott, Joshua Saddler
They are listed here as the Wiki history does not provide for any attribution. If you edit the Wiki article, please do not add yourself here, your contributions are recorded on the history page.