On Sun, Dec 28, 2003 at 02:55:46AM +0100, Bent Larsen wrote: > > Have anybody succeeded in getting the Pinnacle PCTV Pro up running under linux? Here's my 13+ stage step-by-step that works for me and hopefully for you too. Note: This is for a recent PCTV Pro card, a version 2.4 (EMPTYV-51015403-2.4). Older/newer cards may have a different tuner. There is no way to tell the tuner-type from looking at the outside of the card. 1. Download Linux kernel 2.6.0 from kernel.org, Gerd Knorr's video4linux patch at http://bytesex.org/patches/2.6.0-1/patch-2.6.0-kraxel.gz, untar kernel and apply patch to same. 2. Patch /usr/src/linux/drivers/media/video/tuner.c with courtesy Gerd Knorr: --- video4linux/tuner.c.orig 2003-12-17 11:32:01.000000000 +0100 +++ video4linux/tuner.c 2003-12-21 18:46:07.161379609 +0100 @@ -745,7 +745,8 @@ company_code = buf[0x11] << 8 | buf[0x12]; printk("tuner: microtune: companycode=%04x part=%02x rev=%02x\n", company_code,buf[0x13],buf[0x14]); - if (company_code != 0x4d54) { + if (company_code != 0x4d54 && + company_code != 0x3cbf) { printk("tuner: microtune: unknown companycode\n"); return 0; } 3. Patch /usr/src/linux/drivers/media/video/tda9887.c with courtesy Gunther Mayer: *** tda9887.c.orig Sun Dec 28 23:33:46 2003 --- tda9887.c Sun Dec 28 23:33:35 2003 *************** *** 25,31 **** /* Addresses to scan */ static unsigned short normal_i2c[] = {I2C_CLIENT_END}; ! static unsigned short normal_i2c_range[] = {0x86>>1,0x86>>1,I2C_CLIENT_END}; I2C_CLIENT_INSMOD; /* insmod options */ --- 25,31 ---- /* Addresses to scan */ static unsigned short normal_i2c[] = {I2C_CLIENT_END}; ! static unsigned short normal_i2c_range[] = {0x96>>1,0x96>>1,I2C_CLIENT_END}; I2C_CLIENT_INSMOD; /* insmod options */ 4. Recompile kernel, WITH i2c as modules, WITH video4linux as modules, make modules, make modules_install, run lilo etc. 5. Reboot 6. Remove /lib/modules/2.6.0/kernel/drivers/media/video/tvaudio.ko or make it a dotfile. 7. To be sure, run tv-off: $> cat tv-off #!/bin/sh modprobe --quiet --remove bttv modprobe --quiet --remove btcx_risc modprobe --quiet --remove tvaudio modprobe --quiet --remove tuner modprobe --quiet --remove videodev modprobe --quiet --remove tda9887 modprobe --quiet --remove msp3400 modprobe --quiet --remove video_buf modprobe --quiet --remove v4l1-compat modprobe --quiet --remove v4l2-common modprobe --quiet --remove i2c-algo-bit modprobe --quiet --remove i2c-piix4 modprobe --quiet --remove i2c-dev modprobe --quiet --remove i2c-core 8. Edit /etc/modrobe.conf: Remove old conflicting references to i2c stuff and bttv, vtx, vbi stuff, then add this piece: alias char-major-81 vtx alias char-major-89 i2c-dev alias char-major-81 videodev alias char-major-81-0 bttv alias char-major-81-1 bttv # NORMAL: options bttv radio=1 gbuffers=8 autoload=1 install bttv \ /sbin/modprobe --quiet tda9887 pal=b ; \ /sbin/modprobe --quiet tuner pal=b ; \ /sbin/modprobe --quiet msp3400 simple=1 once=1 ; \ /sbin/modprobe --quiet --ignore-install bttv # DEBUG: #options i2c-core i2c_debug=1 #options i2c-algo-bit bit_test=0 i2c_debug=1 # #options bttv radio=1 gbuffers=4 autoload=1 bttv_debug=1 vbi_debug=1 bttv_verbose=1 #install bttv \ # /sbin/modprobe --quiet tda9887 debug=1 pal=b ; \ # /sbin/modprobe --quiet tuner debug=1 pal=b ; \ # /sbin/modprobe --quiet msp3400 debug=1 simple=1 once=1 ; \ # /sbin/modprobe --quiet --ignore-install bttv 9. Get latest MAKEDEV-3.3.8-2.tar.gz, and in /dev/ run 'makedev i2c' and 'makedev v4l' 10. Run tv-init $> cat tv-init #!/bin/sh # mightily important: depmod -a modprobe --quiet i2c-piix4 modprobe --quiet i2c-core modprobe --quiet i2c-dev modprobe --quiet i2c-algo-bit modprobe --quiet videodev modprobe --quiet v4l2-common modprobe --quiet v4l1-compat modprobe --quiet video-buf modprobe --quiet bttv 11. Inspect dmesg output: should say something to the effect: Linux video capture interface: v1.00 bttv: driver version 0.9.12 loaded bttv: using 8 buffers with 2080k (520 pages) each for capture bttv: Bt8xx card found (0). bttv0: Bt878 (rev 17) at 0000:02:0d.0, irq: 21, latency: 32, mmio: 0xf3000000 bttv0: detected: Pinnacle PCTV [card=39], PCI subsystem ID is 11bd:0012 bttv0: using: Pinnacle PCTV Studio/Rave [card=39,autodetected] bttv0: gpio: en=00000000, out=00000000 in=00fffbff [init] tda9887: chip found @ 0x96 registering 0-004b tuner: chip found @ 0xc0 registering 0-0060 msp34xx: init: chip=MSP3410G-B11 +nicam +simple +radio msp3410: daemon started registering 0-0040 bttv0: i2c: checking for MSP34xx @ 0x80... found bttv0: pinnacle/mt: id=2 info="PAL+SECAM / stereo" radio=yes bttv0: using tuner=33 tuner: type set to 33 (MT20xx universal) tuner: microtune: companycode=3cbf part=42 rev=2f tuner: microtune MT2050 found, OK bttv0: i2c: checking for MSP34xx @ 0x80... 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 12. Run /usr/local/bin/xawtv $@ >/var/log/xawtv.log 2>&1 & Be sure ~/.xawtv has a line norm = PAL or whatever is appropriate for you. Play with finding stations with up/down-arrow and/or play with 'capture = overlay', 'capture = grabdisplay', 'capture = off', etc. 13. Maybe apply patch courtesy me to tuner.c to get radio working from video4linux mailing list, recompile that module, install etc. 13+. Mail me 'thank you' message. -- typos hapen