Recently I got a hybrid TV receiver card Hauppauge WinTV-HVR-1110 which can receive both analogue and digital terrestrial TV (& radio) broadcast mostly in the UK, Australia, and some European countries. I have managed to get it working in my one of my PC specifically AMD64 running Debian “Sid” Unstable and a custom 2.6.24 kernel.
Hauppauge WinTV-HVR-1110 use the Philips SAA7131 A/V decoder & bridge and Philips TDA10046 digital demodulator, it's a newer version of the old Hauppauge WinTV-HVR-1100 card, however the latter should work with the same setup as 1110.
For this DVB-T card to work in Linux you'll need the SAA7134-dvb video4linux module and dvb-fe-tda10046.fw firmware file. To see a complete list of cards supported by saa7131, see in the video4linux section for kernel version 2.6.20 the card is no. 104:
http://www.linuxhq.com/kernel/v2.6/20/D ... ST.saa7134
#-------------------------------------------------------------#
# Setting up Hauppauge WinTV-HVR1110 DVB-T to watch digital TV
#-------------------------------------------------------------#
These steps apply to getting DVB-T working in AMD64 PC running Debian-Sid, it should be o.k. for other with similar card though it may differ slightly for set-up, for example you may have a DVB-A, DVB-C or DVB-S card. For other cards and set-up, please go to http://www.linuxtv.org/ for guide.
1) The SAA7134-dvb module should be loaded by default for kernel 2.6.18 and newer. If you're building a custom kernel, make sure that SAA7134-dvb (CONFIG_VIDEO_SAA7134_DVB) is loaded as module in your kernel, navigate to:
Code: Select all
Device drivers > Multimedia Devices
Add the drivers for WinTV-HVR1110 as modules under Device drivers > Multimedia Devices > Video For Linux:
Code: Select all
> Video capture adapters > Philips SAA7134 support (VIDEO_SAA7134) > DVB/ATSC Support for saa7134 based TV cards (VIDEO_SAA7134_DVB)
Code: Select all
I2C support (I2C)
2) I use this LinuxTV Wiki HOWTO for setting up the Hauppauge WinTV-HVR-1110 hardware:
http://www.linuxtv.org/wiki/index.php/H ... V-HVR-1110
Start by following the guide in above mentioned link. Fyi, I placed the dvb-fe-tda10046.fw firmware file in /lib/firmware directory.
3) You'll need the LinuxTV dvb scan utility, see
http://www.linuxtv.org/wiki/index.php/LinuxTV_dvb-apps
Install the dvb-utils:
Code: Select all
# apt-get update && apt-get install dvb-utils
http://www.linuxtv.org/wiki/index.php/T ... DVB_device
Create a scanned data directory for DVB-T broadcasting:
Code: Select all
$ mkdir -p ~/.tzap
Code: Select all
$ ls /usr/share/doc/dvb-utils/examples/scan/dvb-t/
Code: Select all
$ scan /usr/share/doc/dvb-utils/examples/scan/dvb-t/uk-Nottingham > ~/.tzap/channels.conf
Copy the channels.conf file to mplayer or xine configuration directory in your $HOME path:
Code: Select all
$ cp ~/.tzap/channels.conf ~/.mplayer/channels.conf
$ cp ~/.tzap/channels.conf ~/.xine/channels.conf
Code: Select all
$ mplayer dvb://”<channelname>"
Code: Select all
$ xine dvb://”<channelname>"
Code: Select all
$ mplayer dvb://”BBC NEWS 24"
5) If you don't want to go to the trouble of installing and configuring MythTV or freevo, a dead simple solution is to install a small almost fully functional KDE media player called kaffeine which use xine engine. Debian has a recently released kaffeine version 0.8.6 with good DVB support including single click displays, current/next for channel, epg plugins support, subtitles etc.
#----------------------------------------------------------------------------#
# Setting up IR remote control to watch digital TV
#----------------------------------------------------------------------------#
The Hauppauge WinTV-HVR-1110 box came with a IR remote and a plug-in receiver cable. The remote is the standard surfer shaped silver top and black bottom, basically the same as in this picture:
http://www.hauppauge.com/pages/press/pr ... remote.jpg
If you really want to use the remote control, you'll need the package Lirc, the Linux Infra-Red Receiver. Lirc handle all of the communication between your remote control and computer. It's in the Debian repo, or can obtained as source from http://www.lirc.org/.
1) Testing the IR remote.
Check that your kernel has detected your remote control,
Code: Select all
$ cat /proc/bus/input/devices
I: Bus=0018 Vendor=0000 Product=0000 Version=0000
N: Name="HVR 1110"
P: Phys=i2c-2/2-0071/ir0
S: Sysfs=/class/input/input6
U: Uniq=
H: Handlers=kbd event6
B: EV=100003
B: KEY=100fc312 214a80200000000 0 18000 41a800004801 9e168000000000 10000ffc
Note that 'N:Name' gave the name of remote control, thus it's been detected. Also note the 'H:Handlers' which give the 'event number 6' that the remote control is mapped to. Remember this event number as you will need it later on, you event number may be different.
To test the remote control to ensure that it's working,
Code: Select all
# evtest /dev/input/event6
2) Installing The Lirc server.
You can install it either by,
Code: Select all
# apt-get install lirc
Code: Select all
$ cd /tmp
$ wget -c http://prdownloads.sourceforge.net/lirc/lirc-0.8.2.tar.bz2
$ tar xvfj lirc-0.8.2.tar.bz2
$ cd lirc-0.8.2
$ ../setup.sh
# make install
Open two terminal, in the first,
Code: Select all
# lircd -H dev/input -d /dev/input/event6 -n
in the second terminal, type:
Code: Select all
$ irw
3) You'll need to configure two files: lircd.conf and hardware.conf. To save time getting these files, copy, paste & save the text below as lircd.conf and hardware.conf respectively:
hardware.conf:
Code: Select all
# /etc/lirc/hardware.conf
#
# Arguments which will be used when launching lircd
LIRCD_ARGS=""
#Don't start lircmd even if there seems to be a good config file
#START_LIRCMD=false
#Don't start irexec, even if a good config file seems to exist.
#START_IREXEC=false
#Try to load appropriate kernel modules
LOAD_MODULES=true
# Run "lircd --driver=help" for a list of supported drivers.
DRIVER=""
# If DEVICE is set to /dev/lirc and devfs is in use /dev/lirc/0 will be
# automatically used instead
DEVICE="/dev/input/event6"
MODULES=""
# Default configuration files for your hardware if any
LIRCD_CONF=""
LIRCMD_CONF=""
Code: Select all
begin remote
name HVR-1100
bits 16
eps 30
aeps 100
one 0 0
zero 0 0
gap 135862
pre_data_bits 16
pre_data 0x8001
begin codes
Go 0x0161
power 0x0074
Tv 0x0179
Videos 0x0189
Music 0x0188
Pictures 0x016F
Guide 0x016D
Radio 0x0181
Up 0x0067
Down 0x006C
Left 0x0069
Right 0x006A
Ok 0x001C
Back/edit 0x00AE
Menu 0x008B
Vol+ 0x0073
Vol- 0x0072
PrevChan 0x019C
Chan+ 0x0192
Chan- 0x0193
Mute 0x0071
Record 0x00A7
Stop 0x0080
replay 0x00A8
SKip 0x00D0
play 0x00CF
Previous 0x00A5
Next 0x00A3
Pause 0x0077
1 0x0002
2 0x0003
3 0x0004
4 0x0005
5 0x0006
6 0x0007
7 0x0008
8 0x0009
9 0x000A
* 0x0184
0 0x000B
# 0x0172
red 0x018E
green 0x018F
yellow 0x0190
blue 0x0191
end codes
end remote
Code: Select all
DEVICE="/dev/input/event6"
Code: Select all
# mv lircd.conf /etc/lirc && mv hardware.conf /etc/lirc
Code: Select all
'xine –keymap=lirc” > lircrc
# start playback
begin
remote = xxxxx
button = xxxxx
prog = xine
repeat = 0
config = Play
end
You'll need to fill remote name and assign the button – the button code must correspond to the one in /etc/lirc/lircd.conf. To save you time, here's one for Xine and Mplayer, copy, past & save it as $HOME/.lircrc:
Code: Select all
#-------------------#
# Xine lirc setup
#-------------------#
# Start = start playback
begin
button = play
prog = xine
repeat = 0
config = Play
end
# Pause = playback pause toggle
begin
button = Pause
prog = xine
repeat = 0
config = Pause
end
# Stop = stop playback
begin
button = Stop
prog = xine
repeat = 0
config = Stop
end
# Quit = exit xine
begin
button = power
prog = xine
repeat = 0
config = Quit
end
# Mute = audio muting toggle
begin
button = Mute
prog = xine
repeat = 0
config = Mute
end
# Volume Up = increment audio volume
begin
button = Vol+
prog = xine
repeat = 0
config = Volume+
end
# Volume Down = decrement audio volume
begin
button = Vol-
prog = xine
repeat = 0
config = Volume-
end
# set video output window to 50%
begin
button = Videos
prog = xine
repeat = 0
config = Window50
end
# set video output window to 100%
begin
button = Music
prog = xine
repeat = 0
config = Window100
end
# fullscreen toggle
begin
button = Go
prog = xine
repeat = 0
config = ToggleFullscreen
end
# 1 = select next sub picture (subtitle) channel
begin
button = 1
prog = xine
repeat = 0
config = SpuNext
end
# 2 = select previous sub picture (subtitle) channel
begin
button = 2
prog = xine
repeat = 0
config = SpuPrior
end
# Left = Navigate left in menus.
begin
button = Left
prog = xine
repeat = 0
config = EventLeft
end
# Right = Navigate right in menus.
begin
button = Right
prog = xine
repeat = 0
config = EventRight
end
# Up = Navigate up in menus & DVB channel hopping.
begin
button = Up
prog = xine
repeat = 0
config = EventUp
end
# Down = Navigate down in menus & DVB channel hopping.
begin
button = Down
prog = xine
repeat = 0
config = EventDown
end
# OK = Select in menus.
begin
button = Ok
prog = xine
repeat = 0
config = EventSelect
end
# display stream information using OSD
begin
button = Menu
prog = xine
repeat = 0
config = OSDStreamInfos
end
# show OSD menu & navigating playlist, directories
begin
button = pictures
prog = xine
repeat = 0
config = OSDMenu
end
# display information using OSD
begin
button = Tv
prog = xine
repeat = 0
config = OSDWriteText
end
# Change to one channel back
begin
button = Chan-
prog = xine
repeat = 0
config = EventPrior
end
# Change to one channel forward
begin
button = Chan+
prog = xine
repeat = 0
config = EventNext
end
#---------------------#
# MPlayer lirc setup
#---------------------#
# Show OSD
begin
prog = mplayer
button = Menu
repeat = 0
config = osd
end
# Pause playback
begin
prog = mplayer
button = Pause
repeat = 0
config = pause
end
# Skip ahead a minute if playing
# If paused, resume playing
begin
prog = mplayer
button = play
repeat = 0
config = seek +1
end
# Stop playback and exit
begin
prog = mplayer
button = Stop
repeat = 0
config = quit
end
# Mute
begin
prog = mplayer
button = Mute
repeat = 0
config = mute
end
# Seek forward 30 seconds
begin
prog = mplayer
button = SKip
repeat = 0
config = seek +10
end
# Seek backward 10 minutes
begin
prog = mplayer
button = replay
repeat = 0
config = seek -10
end
# Left = Navigate up in menus
begin
button = Up
prog = mplayer
repeat = 0
config = menu up
end
# Right = Navigate down in menus
begin
button = Down
prog = mplayer
repeat = 0
config = menu down
end
# OK = Select in menus
begin
button = Ok
prog = mplayer
repeat = 0
config = menu ok
end
# Cancel = Navigate menus cancel
begin
button = Back/edit
prog = mplayer
repeat = 0
config = menu cancel
end
# fullscreen & stay ontop
begin
prog = mplayer
button = Go
repeat = 0
config = vo_fullscreen
config = vo_ontop
end
# volume up
begin
prog = mplayer
button = Vol+
repeat = 0
config = volume +1
end
# volume down
begin
prog = mplayer
button = Vol-
repeat = 0
config = volume -1
end
Code: Select all
# /etc/init.d/lirc start
# /usr/sbin/lircd -H dev/input -d /dev/input/event6
Code: Select all
$ xine dvb://”BBC NEWS 24”
Code: Select all
$ mplayer -lircconf ~/.lircrc dvb://”BBC NEWS 24”
Enjoy!
#----------#
EDIT #1:
#-----------#
If you want to make use of your IR remote control in MPlayer, I would suggest that you add a menu.conf file. Here's one that include navigating DVB channels, your playlist files and directories. copy, paste and save it as $HOME/.mplayer/menu.conf:
Code: Select all
<txt name="man" file="manpage.txt"/>
<filesel name="open_file"/>
<filesel name="open_list" file-action="loadlist '%p'" auto-close="yes"
title="Open a playlist: %p" />
<dvbsel title="Channel List" name="dvbsel" />
<pt name="jump_to"/>
<console name="console0" height="80" vspace="0">Welcome to MPlayer</console>
<txt name="man" file="manpage.txt"/>
<pref name="general_pref" title="General">
<e name="autoq"/>
<e name="autosync" />
<e name="framedrop"/>
<e name="quiet"/>
<e name="softsleep" />
</pref>
<pref name="demuxer_pref" title="Demuxer">
<e name="aid"/>
<e name="alang" />
<e name="cache"/>
<e name="channels"/>
<e name="dvdangle" />
<e name="forceidx"/>
<e name="fps"/>
<e name="hr-mp3-seek"/>
<e name="idx"/>
<e name="mc"/>
<e name="ni"/>
<e name="nobps"/>
<e name="srate"/>
<e name="vid"/>
</pref>
<pref name="osd_sub_pref" title="OSD & Subs">
<e name="ffactor"/>
<e name="noautosub"/>
<e name="osdlevel"/>
<e name="sid"/>
<e name="slang"/>
<e name="subdelay"/>
<e name="subfps"/>
<e name="subpos"/>
<e name="unicode"/>
<e name="utf8"/>
<e name="vobsubid"/>
</pref>
<pref name="audio_pref" title="Audio">
<e name="abs"/>
<e name="af"/>
<e name="ao"/>
<e name="delay"/>
<e name="mixer"/>
</pref>
<pref name="video_pref" title="Video">
<e name="bpp"/>
<e name="brightness"/>
<e name="contrast"/>
<e name="display"/>
<e name="double"/>
<e name="dr"/>
<e name="fs"/>
<e name="geometry"/>
<e name="hue"/>
<e name="icelayer"/>
<e name="noslices"/>
<e name="panscan"/>
<e name="rootwin"/>
<e name="saturation"/>
<e name="vm"/>
<e name="vo"/>
<e name="vf"/>
<e name="xineramascreen"/>
</pref>
<cmdlist name="pref_main" title="Preferences" ptr="<>" >
<e name="General ..." ok="set_menu general_pref"/>
<e name="Demuxer ..." ok="set_menu demuxer_pref"/>
<e name="Osd/Subtitles ..." ok="set_menu osd_sub_pref"/>
<e name="Audio ..." ok="set_menu audio_pref"/>
<e name="Video ..." ok="set_menu video_pref"/>
</cmdlist>
<cmdlist name="main" title="MPlayer OSD menu" ptr="<>" >
<e name="Pause" ok="pause"/>
<e name="Prev/Next" ok="pt_step 1" cancel="pt_step -1"/>
<e name="Jump to ..." ok="set_menu jump_to"/>
<e name="Open ..." ok="set_menu open_file"/>
<e name="Open playlist ..." ok="set_menu open_list"/>
<e name="DVB" ok="set_menu dvbsel"/>
<e name="Help" ok="set_menu man"/>
<e name="Pref" ok="set_menu pref_main"/>
<e name="Console" ok="set_menu console0"/>
<e name="Quit" ok="quit"/>
</cmdlist>
Code: Select all
font=/usr/share/fonts/truetype/ttf-bitstream-vera/Vera.ttf
ffactor = 0.75
subfont-text-scale=3
subfont-osd-scale=3
menu=yes