2008年1月17日 星期四

Enable Analog TV Card with Remote Control to Watch TV on Ubuntu

linux kernel has saa7134 module built-in. All you need is to load it.

1. create a module setting file for booting use

sudo vi /etc/modprobe.d/saa7134

# This setting is for LifeView FlyTV Prime 3X / FlyVIDEO3000
# you can find correct values from http://gentoo-wiki.com/HARDWARE_saa7134
options saa7134 card=2 tuner=50

2. in order to load saa7134 while booting, add the name of module into /etc/modules

sudo vi /etc/modules

saa7134

3. reboot to enable the above settings

# some useful commands for module
modprobe <name> # load module manually
lsmod # list all modules have been loaded
rmmod <name> # remove module manually

4. install tv software

sudo apt-get install tvtime

5. start tvtime from Application -> Sound & Video -> tvtime

6. control TV with arrow keys
↑ +channel
↓ -ch
→ +volume
← -vol

7. check if IR Receiver has been found

dmesg | grep IR

--
input: saa7134 IR (LifeView FlyVIDEO30 as /devices/pci0000:00/0000:00:1e.0/0000:01:00.0/input/input4

8. figure out what number of event is registered

cat /proc/bus/input/devices

--
I: Bus=0001 Vendor=5168 Product=0138 Version=0001
N: Name="saa7134 IR (LifeView FlyVIDEO30"
P: Phys=pci-0000:01:00.0/ir0
S: Sysfs=/devices/pci0000:00/0000:00:1e.0/0000:01:00.0/input/input4
U: Uniq=
H: Handlers=kbd event4
B: EV=100003
B: KEY=c0304 390000 0 0 0 0 0 0 c0000002 1e0000 0 0 10000ffc

9. install and configure lirc

sudo apt-get install lirc

--
choose Linux input layer (/dev/input/eventX) as remote
choose None as IR transmitter which is able to both send and receive
choose /dev/input/eventX as custom event interface

9. make sure lirc is running

sudo ps -ef | grep lirc

if not, start it

sudo /etc/init.d/lirc start

10. use irw command to check if the device does work

irw

--
# press any button on your remote control
0000000000010175 00 MODE linux-input-layer
0000000000010189 00 VIDEO linux-input-layer
0000000000010188 00 AUDIO linux-input-layer
.
.

11. then begin to record your own definition, follow the instructions on screen

sudo irrecord -H devinput -d /dev/input/event4 /etc/lirc/lircd.conf

--
# Please make this file available to others
# by sending it to
#
# this config file was automatically generated
# using lirc-0.8.3(devinput) on Mon Nov 10 00:57:50 2008
#
# contributed by Luke
#
# brand: LifeView
# model no. of remote control: FlyVIDEO30
# devices being controlled by this remote: FlyTV Prime 3X Series
#

begin remote

name FlyVIDEO30
bits 16
eps 30
aeps 100

one 0 0
zero 0 0
pre_data_bits 16
pre_data 0x8001
gap 207867
toggle_bit_mask 0x80010006

begin codes
Air/CATV 0x0175
Video 0x0189
Audio 0x0188
Power 0x0074
AV_Source 0x0182
FullScreen 0x0174
Stereo 0x0170
Mute 0x0071
1 0x0002
2 0x0003
3 0x0004
4 0x0005
5 0x0006
6 0x0007
7 0x0008
8 0x0009
9 0x000A
0 0x000B
Recall 0x0081
Enter 0x001C
VOL+ 0x0073
VOL- 0x0072
CH+ 0x0192
CH- 0x0193
end codes

end remote



reload the new lircd.conf

sudo /etc/init.d/lirc reload

12. make .lircrc for tvtime-command execution

vi .lircrc

--
# This is an example config file for your LIRC remote. All buttons
# depend on what you have configured in your lircd.conf file. Please
# refer to this and adjust the labels below accordingly.
#
# tvtime is controlled through a separate program called tvtime-command.
# For a list of commands, see 'man tvtime-command'. Key events can
# be 'faked' using the command KEY_EVENT, which allows for mapping a
# single remote control button to both a menu mode command and a normal
# mode command.
#
# begin
# prog = irexec
# button = DISPLAY
# config = tvtime-command DISPLAY_INFO
# end


# This section includes two configs, what this does is that it allows
# you to open tvtime and close tvtime with one button. If your remote
# has seperate buttons for this, then you can break it apart.
begin
prog = irexec
button = POWER
config = tvtime &
config = tvtime-command QUIT
end


# The following defines most of the common buttons found on a remote and
# what commads they would map to inside tvtime.
begin
prog = irexec
button = Air/CATV
config = tvtime-command DISPLAY_INFO
repeat = 1
end
begin
prog = irexec
button = Video
config = tvtime-command SHOW_MENU
end
begin
prog = irexec
button = AV_Source
config = tvtime-command TOGGLE_INPUT
end
begin
prog = irexec
button = FullScreen
config = tvtime-command TOGGLE_FULLSCREEN
end

begin
prog = irexec
button = Audio
config = tvtime-command TOGGLE_AUDIO_MODE
end
begin
prog = irexec
button = Stereo
config = tvtime-command SET_AUDIO_MODE stereo
config = tvtime-command SET_AUDIO_MODE mono
end
begin
prog = irexec
button = Mute
config = tvtime-command TOGGLE_MUTE
end

# Menu navigation.
begin
prog = irexec
button = CH+
config = tvtime-command UP
repeat = 1
end
begin
prog = irexec
button = CH-
config = tvtime-command DOWN
repeat = 1
end
begin
prog = irexec
button = VOL+
config = tvtime-command RIGHT
repeat = 2
end
begin
prog = irexec
button = VOL-
config = tvtime-command LEFT
repeat = 2
end

begin
prog = irexec
button = Recall
config = tvtime-command CHANNEL_JUMP
repeat = 1
end

begin
prog = irexec
button = 1
config = tvtime-command CHANNEL_1
end
begin
prog = irexec
button = 2
config = tvtime-command CHANNEL_2
end
begin
prog = irexec
button = 3
config = tvtime-command CHANNEL_3
end
begin
prog = irexec
button = 4
config = tvtime-command CHANNEL_4
end
begin
prog = irexec
button = 5
config = tvtime-command CHANNEL_5
end
begin
prog = irexec
button = 6
config = tvtime-command CHANNEL_6
end
begin
prog = irexec
button = 7
config = tvtime-command CHANNEL_7
end
begin
prog = irexec
button = 8
config = tvtime-command CHANNEL_8
end
begin
prog = irexec
button = 9
config = tvtime-command CHANNEL_9
end
begin
prog = irexec
button = 0
config = tvtime-command CHANNEL_0
end
begin
prog = irexec
button = Enter
config = tvtime-command ENTER
end

commands support by tvtime-command, see http://tvtime.sourceforge.net/usage.html#tvtimecommand

13. irexec should be started before running tvtime, tvtime is signalled from lirc using this helper application. if we need it start after gnome login, go to

System -> Preference -> Sessions
Startup Programs -> Add
Name: irexec
Command: /usr/bin/irexec -d
Comment:

Save