> mplayer -tv driver=bsdbt848:channel=28:device=/dev/bktr0 /dev/bktr0

It's not really a bt848 so various pieces of software unfortunately
don't work correctly with it.  Only a subset of the ioctls are supported
and there's only one device node (/dev/tuner0 isn't supported ... all
access / ioctls go through /dev/bktr0 ... on my system I have tuner0
linked to bktr0).  However, it should be a easy task to write a cxm
driver for mplayer.

> #!/usr/bin/perl
> ...

Yep ... I see the same error here using your perl script.

> have any tips?

I use the enclosed program.

-- John
-------------8<-----------------------------8<-----------------------
#include <stdio.h>
#include <fcntl.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 <-c|-s|-t|-t channel|channel>\n"
         "  -c  Select composite input.\n"
         "  -s  Select svideo input.\n"
         "  -t  Select tuner.\n");
}

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

  while ((c = getopt (argc, argv, "cst")) != -1)
    switch (c) {
      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 (! channel && ! device) {
    usage ();
    exit (1);
    }

  tfd = open( "/dev/bktr0", O_RDONLY );
  if ( tfd < 0 ) {
    perror( "open() of /dev/bktr0 failed." );
    exit(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 );
}
-------------------------------------------------------------------------
|   Feith Systems  |   Voice: 1-215-646-8000  |  Email: john@feith.com  |
|    John Wehle    |     Fax: 1-215-540-5495  |                         |
-------------------------------------------------------------------------

