A few words of thanks would be greatly appreciated.

Configure Your TV Card on Linux

Linux can be used not only for computing, but also for watching TV. For this, the basic requirement is to have administrator rights on the system. All the necessary commands to configure the TV card of Unix should be launched as root from sudo. In this article we will show you how!

Configure Your TV Card on Linux

The first step is to install a TV card via the BTTV module. After this, find the appropriate software to watch TV, as it is needed for TV time installation. The final step is to configure the remote control, which in turn is supported through a lirc module.

Lirc modules can be quite complicated sometimes, and it is advisable to install it through a module assistant or by researching the relevant material from the lirc website. After this, one can easily configure the buttons with lirc and start watching your favourite television shows on Linux.

This FAQ is for people using Debian and other distributions which are based on it (Ubuntu, Xandros etc). Most of the following commands will require administrator rights and should be launched as root or via sudo.

This FAQ was made for the Winfast TV 2000 XP card on Debian Lenny and a Leadtek Y0400046 remote control.

Step1: Card Installation

The BTTV module used for this map is provided directly by the linux-image package. Just configure it according to the model of the TV card. To do this we create/fix /etc/modprobe.d/bttv and put in:

options bttv radio=0 card=34 tuner=24 gbuffers=8

Warning: This is specific to the TV card.

So that the module is loaded at startup it also alters /etc/modules by adding in the BTTV module. You can already load the BTTV module by typing:

modprobe bttv

Step 2: TVTime Installation

There are several programs you can use to watch TV in Linux. Sub TVTime seems to work without any problems. To install it:

aptitude update     
aptitude safe-upgrade
aptitude install tvtime

Now you have to launch TVTime to scan the TV channels. If the tuner and card are properly configured this should not be a problem. Below is a possible configuration that may work for you:

  • Video source: TV
  • Sound Mode: pal-i
  • Standard received: secam

Step 3: Remote control configuration

Configuring the remote through lirc can be quite complicated for beginners. A common mistake is to reference a module that no longer exists on modern kernels: lirc_gpio

Lirc Installation

Start by installing the module that will allow you to manage the remote. It is advisable to go through the Module Assistant, and archives available on the lirc website to help you.

aptitude install module-assistant lirc-modules-source lirc-x     

In the interface module wizard, choose lirc-modules-source (Get, Build, Install). If everything went well, everything should have installed properly.

Check this is the case by making sure the card is visible when you type the command:

cat /proc/bus/input/devices

You should be given information about the card, for example:

I: Bus=0001 Vendor=107d Product=6606 Version=0001
N: Name="bttv IR (card=34)"
P: Phys=pci-0000:01:07.0/ir0
S: Sysfs=/class/input/input6
U: Uniq=
H: Handlers=kbd event6
B: EV=100003
B: KEY=10afc336 2150a48 0 0 0 404 80010007 80000190 4801 1e0000 4400 100000 10000ffc

Then use the following code:

lircd -d /dev/input/event6 -H dev/input

This command creates the device /dev/lircd to be used by lircd to receive signals from the remote.

Then correct the file /etc/lirc/hardware.conf so as to have:

#Chosen Remote Control     
REMOTE="Winfast TV2000/XP (card=34)"
# Arguments which will be used when launching lircd
#Don't start lircmd even if there seems to be a good config file
#Try to load appropriate kernel modules
# Run "lircd --driver=help" for a list of supported drivers.
# If DEVICE is set to /dev/lirc and devfs is in use /dev/lirc/0 will be
# automatically used instead
# Default configuration files for your hardware if any

Make sure you make any necessary changes to the variables according to the hardware you are using. Then launch lirc:

/etc/init.d/lirc restart

First Test

At this stage it is usually possible to begin to recover the signals from the remote with the IRW. This program can be launched by user. While running, you can press the buttons on the remote control to retrieve the IDs of keys that will be used in lirc configuration files. These identifiers depend on the remote. Here is an example of what you may get by pressing "channel +", "finetune +", "8", "6" and "5":

(mando@aldur) (~) $ irw     
0000000080010192 00 CH_UP Leadtek-RM0010
000000008001004e 00 FINETUNE+ Leadtek-RM0010
0000000080010009 00 8 Leadtek-RM0010
0000000080010007 00 6 Leadtek-RM0010
0000000080010006 00 5 Leadtek-RM0010

Configure Lirc

You can download ready-made files to configure most available remotes, meaning you don't have to do all this yourself. You can find an archive of files you can use to fill /etc/lirc/lircd.conf here.

Here is how the file for Y0400052 looks:

# Please make this file available to others
# by sending it to <lirc@bartelmus.de>
# this config file was automatically generated
# using lirc-0.8.3-CVS(dev/input) on Sat Jan 12 17:04:54 2008
# contributed by: Mike Treichler
# brand: LeadTek
# model no. of remote control: Y0400046 (bundled with Winfast 2000XP Deluxe)
# devices being controlled by this remote: LeadTek Winfast 2000XP Deluxe
# brand: Leadtek
# model: Y0400052 (bundeled with Winfast PVR2000 TV-card)
# Note: Only CH_UP, CH_DOWN, VOL_UP and VOL_DOWN will repeat. This
# seems to be a limitation of the remote control.
begin remote
name Leadtek-RM0010
bits 16
eps 30
aeps 100
one 0 0
zero 0 0
pre_data_bits 16
pre_data 0x8001
gap 423871
toggle_bit_mask 0x0
begin codes
POWER 0x0074
MTS 0x0188
TV/FM 0x0182
VIDEO 0x0189
DISPLAY 0x0166
CH_UP 0x0192
CH_DOWN 0x0193
VOL_DOWN 0x0072
VOL_UP 0x0073
SLEEP 0x008E
BOSSKEY 0x0163
MUTE 0x0071
RED 0x018E
GREEN 0x018F
YELLOW 0x0190
BLUE 0x0191
1 0x0002
2 0x0003
3 0x0004
4 0x0005
5 0x0006
6 0x0007
7 0x0008
8 0x0009
9 0x000A
0 0x000B
. 0x0034
PIP 0x00E2
ENTER 0x001C
RECALL 0x0195
BACK 0x019C
PLAY 0x00A4
NEXT 0x0197
STOP 0x0080
REC 0x00A7
end codes
end remote

If you are feeling confident, you may want to make some adjustments to your file. This often necessary, however.

Configure the behavior of buttons

At this stage the key codes are properly associated with identifiers, but there is still more to do. We must now intercept these events with either irexec, or irxevent, and transmit to them to the software. This is done with rules that define what will happen when you press a particular key. Remember:
- Irexec allows you to run a command shell
- Irxevent can launch the equivalent of an action on the keyboard


These two rules are equivalent. They allow you to press the F key in TVTime to go into full screen mode.

a) with irxevent:

prog = irxevent
config = Key f tvtime

b) with irexec:

prog = irexec
config = tvtime-command TOGGLE_FULLSCREEN

These rules are usually in ~/.lircrc. You can also put them in /etc/lirc/lircrc to allow them to share all the profiles of the machine. To do this:

ln-s /etc/lirc/lircrc ~/.lircrc 

Here is an example of how the completed file may look:

prog = irexec
button = CH_DOWN
config = tvtime-command CHANNEL_DOWN
prog = irexec
button = CH_UP
config = tvtime-command CHANNEL_UP
prog = irexec
button = VOL_DOWN
config = tvtime-command MIXER_DOWN
prog = irexec
button = VOL_UP
config = tvtime-command MIXER_UP
prog = irexec
config = tvtime-command TOGGLE_FULLSCREEN
prog = irexec
button = 1
config = tvtime-command CHANNEL_1
prog = irexec
button = 2
config = tvtime-command CHANNEL_2
prog = irexec
button = 3
config = tvtime-command CHANNEL_3
prog = irexec
button = 4
config = tvtime-command CHANNEL_4
prog = irexec
button = 5
config = tvtime-command CHANNEL_5
prog = irexec
button = 6
config = tvtime-command CHANNEL_6
prog = irexec
button = 7
config = tvtime-command CHANNEL_7
prog = irexec
button = 8
config = tvtime-command CHANNEL_8
prog = irexec
button = 9
config = tvtime-command CHANNEL_9
prog = irexec
button = 0
config = tvtime-command CHANNEL_0

Once you have finished this, run the following code:

irxevent -d /etc/lirc/lircrc     
irexec -d /etc/lirc/lircrc


To avoid unnecessary hassle every time you restart, you can set irxevent and irexec to run automatically whenever you switch on your machine. For example, in KDE, just create a file ~/.kde/Autostart/remote.sh and type in:

#! /bin/sh      
irxevent-d /etc/lirc/lircrc
irexec-d /etc/lirc/lircrc

Then add the execution rights:

chmod u + x ~ /.kde/Autostart/remote.sh

For more details see the Ubuntu forums.


A few words of thanks would be greatly appreciated.

Ask a question
CCM is a leading international tech website. Our content is written in collaboration with IT experts, under the direction of Jean-François Pillou, founder of CCM.net. CCM reaches more than 50 million unique visitors per month and is available in 11 languages.
This document, titled « Configure Your TV Card on Linux », is available under the Creative Commons license. Any copy, reuse, or modification of the content should be sufficiently credited to CCM (ccm.net).