I have setup this card with gentoo 2008. In some others distributions like Ubuntu or Fedora, I’m sure it should be easier.
The card that I’m writing about is:
04:09.0 Multimedia video controller: Brooktree Corporation Bt878 Video Capture (rev 11)
04:09.1 Multimedia controller: Brooktree Corporation Bt878 Audio Capture (rev 11)
It works with module bt878
Device Drivers ---]
[M] Video For Linux
[*] Enable Video For Linux API 1 compatible Layer
[*] Video capture adapters ---]
[M] BT848 Video For Linux
[*] DVB/ATSC Support for bt878 based TV cards
make && make modules_install
after that we edit /etc/modprobe.conf or /etc/modprobe.d/bttv and we add the following lines:
alias char-major-81 videodev
alias char-major-81-0 bttv
options bttv pll=1 card=120 radio=1 tuner=38 remote=1 bttv_verbose=1 gbuffers=4
options ir_common debug=1
Now we can try the card with:
modprobe bttv
modprobe tuner
We can check if they loaded successfully:
# dmesg | grep bttv
bttv: driver version 0.9.17 loaded
bttv: using 4 buffers with 2080k (520 pages) each for capture
bttv: Bt8xx card found (0).
bttv0: Bt878 (rev 17) at 0000:04:09.0, irq: 17, latency: 32, mmio: 0xfdaff000
bttv0: using: Conceptronic CONTVFMi [card=120,insmod option]
bttv0: gpio: en=00000000, out=00000000 in=007fc0ff [init]
bttv0: tuner type=38
bttv0: i2c: checking for MSP34xx @ 0x80... not found
bttv0: i2c: checking for TDA9875 @ 0xb0... not found
bttv0: i2c: checking for TDA7432 @ 0x8a... not found
bttv0: registered device video0
bttv0: registered device vbi0
bttv0: registered device radio0
bttv0: PLL: 28636363 =] 35468950 .. ok
input: bttv IR (card=120) as /class/input/input4
bttv0: PLL can sleep, using XTAL (28636363).
# dmesg | grep tuner
bttv0: tuner type=38
tuner’ 0-0060: chip found @ 0xc0 (bt878 #0 [sw])
tuner-simple 0-0060: type set to 38 (Philips PAL/SECAM multi (FM1216ME MK3))
Install tvtime:
emerge tvtime
You should set it to the norm of you country, I set it to PAL-Nc:
$ tvtime-configure -n PAL-Nc
$ tvtime-scanner
And if everything went well, we should see something like this:
Scanning using TV standard PAL-NC.
Scanning from 44.00 MHz to 958.00 MHz.
Found a channel at 54.50 MHz (52.50 - 56.25 MHz), adding to channel list.
Found a channel at 66.50 MHz (64.25 - 68.50 MHz), adding to channel list.
Checking 79.00 MHz: - No signal
Last, but not least, we have to add to /etc/modules.autoload.d/kernel-2.6 tuner:
echo "tuner" ]] /etc/modules.autoload.d/kernel-2.6
Remote Control
In order to setup the remote control you have to edit a few lines in the kernel module. We are going to edit $source/drivers/media/common/ir-keymaps.c:
Anf where it says IR_KEYTAB_TYPE we remove all the keys and we leave it like this:
IR_KEYTAB_TYPE ir_codes_pixelview[IR_KEYTAB_SIZE] = {
[ 0x00 ] = KEY_0,
[ 0x01 ] = KEY_1,
[ 0x02 ] = KEY_2,
[ 0x03 ] = KEY_3,
[ 0x04 ] = KEY_4,
[ 0x05 ] = KEY_5,
[ 0x06 ] = KEY_6,
[ 0x07 ] = KEY_7,
[ 0x08 ] = KEY_8,
[ 0x09 ] = KEY_9,
[ 0x1c ] = KEY_RADIO, /* FM Radio */
[ 0x0a ] = KEY_BACKSPACE, /* Recall */
[ 0x12 ] = KEY_ESC, /* POWER */
[ 0x18 ] = KEY_LEFT, /* VOL- */
[ 0x0c ] = KEY_RIGHT, /* VOL+ */
[ 0x16 ] = KEY_ENTER, /* OK */
[ 0x17 ] = KEY_D, /* Plus */
[ 0x10 ] = KEY_F, /* Mode */
[ 0x0b ] = KEY_UP, /* CH+ */
[ 0x0b ] = KEY_UP, /* CH+ */
[ 0x15 ] = KEY_DOWN, /* CH- */
[ 0x14 ] = KEY_H, /* OSD */
[ 0x13 ] = KEY_MUTE, /* Mute */
[ 0x0f ] = KEY_BACKSPACE, /* Prev */
[ 0x0e ] = KEY_STOP, /* Stop */
[ 0x1f ] = KEY_PLAY, /* Play */
[ 0x1e ] = KEY_PAUSE, /* Pause */
[ 0x1d ] = KEY_RECORD, /* Record */
[ 0x1a ] = KEY_F7, /* Next */
[ 0x0f ] = KEY_A, /* */
[ 0x1b ] = KEY_F5, /* Time Shift */
[ 0x19 ] = KEY_S, /* Snapshot */
[ 0x0f ] = KEY_F6, /* Prev */
[ 0x0d ] = KEY_E, /* Stereo */
[ 0x11 ] = KEY_I /* Source */
};
EXPORT_SYMBOL_GPL(ir_codes_pixelview);
Then, in the kernel source directory, we run:
make && make modules_install y listo.
I got some hints from: