Tuner code 0x71 for Hauppauge PVR-150 (pvrxxx)

Josh Paetzel josh at tcbug.org
Sun Jan 28 22:27:32 UTC 2007


On Thursday 25 January 2007 14:48, Simon Thoustrup wrote:
> Hi!
>
> I've just received a Hauppauge PVR-150. Getting the tuner to work
> seems to cause me some problems however.
> I'm running 6.2-RELEASE FreeBSD 6.2-RELEASE #0: Wed Jan 24 13:01:44
> CET 2007 - dmesg and pciconf quoted at the end.
>
> I've tried the following with /usr/ports/multimedia/pvrxxx
>
> 1. Copied hcwPVRP2.sys from the CD to /usr/ports/distfiles/.
> 2. Copied HcwMakoC.ROM from the CD to
> /usr/ports/disfiles/HcwMakoA.ROM 3. Updated distinfo to reflect
> actual SIZE, MD5 and SHA256 of HcwMakoA.ROM 4. make patch-iicbb
> 5. Compile kernel with "device iicbus" and "device iicbb"
> 6. Install kernel and reboot
> 7. make install
> 8. kldload cxm_iic && kldload cxm
>
> This results in the following:
>
> kernel: cxm0: <Conexant iTVC16 MPEG Coder> mem
> 0xd0000000-0xd3ffffff irq 9 at device 13.0 on pci0
> kernel: cxm_iic0: <Conexant iTVC15 / iTVC16 I2C controller> on cxm0
> kernel: iicbb0: <I2C bit-banging driver> on cxm_iic0
> kernel: iicbus0: <Philips I2C bus> on iicbb0 master-only
> kernel: tuner code 113
> kernel: cxm0: unknown tuner code 0x71
> kernel: tuner_type = -1
> kernel: cxm0: could not initialize tuner
> kernel: iicbus0: detached
> kernel: iicbb0: detached
> kernel: cxm_iic0: detached
> kernel: device_attach: cxm0 attach returned 6
>
> Did a bit of google'ing and found an answer
> (http://lists.freebsd.org/pipermail/freebsd-multimedia/2006-Novembe
>r/005303.html) suggesting that my tuner is, or at least can work as,
> a TCL 2002N-6A. Therefore I did:
>
> 9. kldunload cxm && kldunload cxm_iic
> 10. Opened work/dev/cxm/cxm_eeprom.c and found "0x55"
> 11. Added "case 0x71:" so that it reads:
>                  case 0x71:
>                  case 0x55: /* TCL 2002N-6A */
> 12. rm work/.build_done.pvrxxx._usr_local
> 13. make reinstall -DFORCE_PKG_REGISTER
> 14. kldload cxm_iic && kldload cxm
>
> Now I get:
>
> kernel: cxm0: <Conexant iTVC16 MPEG Coder> mem
> 0xd0000000-0xd3ffffff irq 9 at device 13.0 on pci0
> kernel: cxm_iic0: <Conexant iTVC15 / iTVC16 I2C controller> on cxm0
> kernel: iicbb0: <I2C bit-banging driver> on cxm_iic0
> kernel: iicbus0: <Philips I2C bus> on iicbb0 master-only
> kernel: tuner code 113
> kernel: tuner_type = 20
> kernel: cxm0: TCL 2002N-6A tuner
> kernel: <2>cxm 0-0000: loaded /lib/modules/v4l-cx25840.fw firmware
> (14264 bytes)
> kernel: <2>cxm debug 0-0000: decoder set input (0)
> kernel: <2>cxm debug 0-0000: now setting Tuner input
> kernel: <2>cxm debug 0-0000: set audio input (0)
> kernel: <2>cxm debug 0-0000: set audio input (0)
> kernel: cxm0: Eeprom PAL
> kernel: <2>tda 0-0000: switching to v4l2
> kernel: <2>tda 0-0000: configure for: PAL-BG
> kernel: <2>tda 0-0000: writing: b=0xd4 c=0x70 e=0x09
> kernel: could not start iic bus
> kernel: probed 54
> kernel: probed 136
> kernel: probed 160
> kernel: probed 194
> kernel: probed 224
> kernel: probed 226
> kernel: probed 228
> kernel: probed 230
> kernel: <2>tda 0-0000: i2c i/o error: rc == 2 (should be 4)
> kernel: read error
> kernel: <2>tda 0-0000: i2c i/o error: rc == -597292633 (should be
> 1) kernel: <2>tda 0-0000: read: 0x 0
> kernel: <2>tda 0-0000:   after power on : no
> kernel: <2>tda 0-0000:   afc            : - 12.5 kHz
> kernel: <2>tda 0-0000:   fmif level     : low
> kernel: <2>tda 0-0000:   afc window     : out
> kernel: <2>tda 0-0000:   vfi level      : low
> kernel: <2>cxm 0-0000: Video signal:              not present
> kernel: <2>cxm 0-0000: Detected format:           NTSC-M
> kernel: <2>cxm 0-0000: Detected audio mode:       forced mode
> kernel: <2>cxm 0-0000: Detected audio standard:   forced audio
> standard kernel: <2>cxm 0-0000: Audio muted:               no
> kernel: <2>cxm 0-0000: Audio microcontroller:     running
> kernel: <2>cxm 0-0000: Configured audio standard: A2-BG
> kernel: <2>cxm 0-0000: Configured audio mode:     undefined
> kernel: <2>cxm 0-0000: Specified standard:        PAL-BDGHI
> kernel: <2>cxm 0-0000: Specified input:           Tuner
> kernel: <2>cxm 0-0000: Specified audio input:     Tuner
> kernel: <2>cxm 0-0000: Specified audioclock freq: 48 kHz
> kernel: <2>cxm 0-0000: Preferred audio mode:      stereo
> kernel: <2>cxm 0-0000: Selected 65 MHz format:    system DK
> kernel: <2>cxm 0-0000: Selected 45 MHz format:    chroma
> kernel: cxm0: [GIANT-LOCKED]
>
> I didn't expect it to work, but I tried pvr250-setchannel just to
> be sure:
>
> 15. pvr250-setchannel -a on -m 4 231.25
>
> Being in Denmark I need -m 4 for PAL. Freq 231.25 is the
> "Info-channel" of the cabel provider TDC in Copenhagen.
> The command gave the following console response:
>
> ioctl( tfd, BT848_GAUDIO ) failed.: Device not configured
> ioctl( tfd, TVTUNER_SETTYPE ) failed.: Invalid argument
>
> In the log I got the following:
>
> kernel: device cxm0 opened
> kernel: <2>cxm 0-0000: Video signal:              not present
> kernel: <2>cxm 0-0000: Detected format:           NTSC-M
> kernel: <2>cxm 0-0000: Detected audio mode:       forced mode
> kernel: <2>cxm 0-0000: Detected audio standard:   forced audio
> standard kernel: <2>cxm 0-0000: Audio muted:               no
> kernel: <2>cxm 0-0000: Audio microcontroller:     running
> kernel: <2>cxm 0-0000: Configured audio standard: A2-BG
> kernel: <2>cxm 0-0000: Configured audio mode:     undefined
> kernel: <2>cxm 0-0000: Specified standard:        PAL-BDGHI
> kernel: <2>cxm 0-0000: Specified input:           Tuner
> kernel: <2>cxm 0-0000: Specified audio input:     Tuner
> kernel: <2>cxm 0-0000: Specified audioclock freq: 48 kHz
> kernel: <2>cxm 0-0000: Preferred audio mode:      stereo
> kernel: <2>cxm 0-0000: Selected 65 MHz format:    system DK
> kernel: <2>cxm 0-0000: Selected 45 MHz format:    chroma
>
> - and the output (cat /dev/cxm0 > tv.mpg) gave nothing but static.
> I have tried to place "case 0x71:" with every existing case one by
> one. None of them worked. Some did even worse than the 0x55 case
> (not able to lock device -errors).
>
> Does anyone have a hint?
> I can try installing the card in Windows or Linux, if that can
> provide any information needed by someone wise to come up with the
> magic patch..
>
>
> Regards
> Simon Thoustrup
>

Heh, nasty little bugger to get working isn't it?  Took me the better 
part of 24 hours to make mine go.  You have the right tuner code, the 
problem lies elsewhere.  The size of the firmware image is wired into 
one of the files, and it's wrong for the PVR-150.  In:

work/modules/cxm/cxm/fbsd-compat.c:

You will find:

int request_firmware(void **fw, char *file, int dummy)
{       static struct firmware thef;
         *fw = &thef;
         thef.data=cx25840_fw;
         thef.size = 14264;
         return 0; }

thef.size needs to be changed to 16382 and you need to recompile.

-- 
Thanks,

Josh Paetzel


More information about the freebsd-multimedia mailing list