atom feed25 messages in org.freebsd.freebsd-multimediaHauppauge WinTV PVR 250 for FreeBSD 5.2
FromSent OnAttachments
John WehleMar 20, 2004 9:28 pm 
u431...@navab.netMar 21, 2004 6:16 am 
Andreas DahlénMar 21, 2004 2:18 pm 
John WehleMar 21, 2004 3:31 pm 
Julian ElischerMar 21, 2004 5:11 pm 
u431...@navab.netMar 22, 2004 10:00 am 
Christoph SchnaußMar 22, 2004 11:36 am 
John WehleMar 22, 2004 10:17 pm 
John WehleMar 22, 2004 10:17 pm 
John WehleMar 22, 2004 10:17 pm 
Andreas DahlénMar 23, 2004 4:09 am 
Christoph SchnaußMar 23, 2004 7:35 am 
u431...@navab.netMar 23, 2004 1:28 pm 
Tim AslatMar 25, 2004 4:37 pm 
Torfinn IngolfsenMar 26, 2004 5:22 am 
Andreas DahlénMar 26, 2004 5:41 am 
Christoph SchnaußMar 26, 2004 5:58 am 
John WehleMar 27, 2004 11:33 am 
Andreas DahlénMar 27, 2004 11:43 am 
John WehleMar 27, 2004 11:44 am 
John WehleMar 27, 2004 12:42 pm 
John WehleMar 27, 2004 5:43 pm 
John WehleMar 27, 2004 6:15 pm 
Michael ClassMar 28, 2004 8:38 am 
Christoph SchnaußMar 28, 2004 11:00 am 
Subject:Hauppauge WinTV PVR 250 for FreeBSD 5.2
From:John Wehle (jo@feith.com)
Date:Mar 21, 2004 3:31:27 pm
List:org.freebsd.freebsd-multimedia

cxm0: <Conexant iTVC16 MPEG Coder> mem 0xc8000000-0xcbffffff irq 21 at device
11.0 on pci3 cxm_iic0: <Conexant iTVC15 / iTVC16 I2C controller> on cxm0 iicbb0: <I2C bit-banging driver> on cxm_iic0 iicbus0: <Philips I2C bus> on iicbb0 master-only cxm0: LG Innotek TPI8PSB11D tuner cxm0: SAA7115 rev 1 video decoder cxm0: MSP3415G-B8 audio decoder cxm0: IR Remote cxm0: encoder firmware version 0x2040011

No decoder firmware version.

The iTVC16 which is used on the PVR-250 version 2 doesn't implement a decoder which is why the decoder firmware version isn't displayed.

When I try cat /dev/cxm0 > file.mpg I get "cat: /dev/cxm0: Device not configured" and dmesg says "cxm0: video decoder isn't locked".

The driver defaults to channel 4 which is mapped to 62.25 MHz by the BG channel map used by the driver. Is something broadcast on that frequency in your area and do you have a good antenna or cable connection attached to the coax connector on the card?

Enclosed is a little utility for changing channels and selecting the input.

-- John ----------------8<----------------------8<---------------------------- #include <stdio.h> #include <fcntl.h> #include <sys/types.h> #include <sys/ioctl.h> #include <machine/ioctl_bt848.h> #include <machine/ioctl_meteor.h> #include <unistd.h>

/****************************************************************************/ /* setchannel.c - Set the channel of the bktr tuner card. */ /* */ /* COMPILE WITH: cc -o setchannel setchannel.c */ /****************************************************************************/

static void usage() { printf("Usage: setchannel <-a {on|off}|-c|-s|-t|-t channel|channel>\n" " -a Enable / disable AFC.\n" " -c Select composite input.\n" " -s Select svideo input.\n" " -t Select tuner.\n"); }

int main( int argc, char *argv[] ) { int afc; int c; int status; int tfd; unsigned int channel; unsigned long device;

afc = -1; channel = 0; device = 0; status = 0;

while ((c = getopt (argc, argv, "a:cst")) != -1) switch (c) { case 'a': if (strcasecmp (optarg, "on") == 0) afc = 1; else if (strcasecmp (optarg, "off") == 0) afc = 0; else { usage (); exit (1); } break;

case 'c': device = METEOR_INPUT_DEV2; break;

case 's': device = METEOR_INPUT_DEV_SVIDEO; break;

case 't': device = METEOR_INPUT_DEV1; break;

default: usage (); exit (1); }

if ( optind < argc) channel = atoi( argv[optind] );

if (afc == -1 && ! channel && ! device) { usage (); exit (1); }

tfd = open( "/dev/cxm0", O_RDONLY ); if ( tfd < 0 ) { perror( "open() of /dev/cxm0 failed." ); exit(1); }

if (afc != -1) if ( ioctl( tfd, TVTUNER_SETAFC, &afc ) < 0 ) { perror( "ioctl( tfd, TVTUNER_SETAFC ) failed." ); status = 1; }

if (device) if ( ioctl( tfd, METEORSINPUT, &device ) < 0 ) { perror( "ioctl( tfd, METEORSINPUT ) failed." ); status = 1; }

if (channel) if ( ioctl( tfd, TVTUNER_SETCHNL, &channel ) < 0 ) { perror( "ioctl( tfd, TVTUNER_SETCHNL ) failed." ); status = 1; }

close ( tfd ); exit ( status ); }