[mythtv-users] Fedora card detection order

Allen J. Newton anewton at alturia.fleet.org
Wed Aug 23 16:59:23 UTC 2006


Hey!  I finally get to contribute something.

Daniel Agar wrote:
> Subject: Fedora card detection order
> 
> I use fedora core 5 and have 2 x pvr150 and an ati tv wonder
> My modprobe.conf is as follows
> # ivtv modules setup
> alias char-major-81 videodev
> alias char-major-81-0 ivtv
> alias char-major-61 lirc_i2c
> alias char-major-81-1 ivtv
> 
> # bttv
> alias char-major-81-2 bttv
> 
> but the order always seems random, with or without these options. What can
> be done about this?

This was driving me nuts for quite awhile, too.  Nothing I tried from dinking
with modprobe.conf to adding modprobe lines to rc.sysinit would cause the
/dev/videox devices to map the same between reboots.  Frankly, I hope someone
has a better suggestion than I do, because mine is kind of a kludge, but it
solved the problem for me.

I created the attached script to deal with the situation.  What it basically
does is creates symlinks in /dev.  It creates /dev/dvrx (where x is 0, 1, and
so forth) for each /dev/videox device which appears to produce MPEG-2 headers
when read from, and /dev/winTVx for other /dev/videox devices (where "x" is a
single digit) that produce anything (assumed here to be MJPEG/AVI source).  If
the device doesn't produce anything, the script doesn't produce a link to it.

It also handles the /dev/radio, /dev/vbi and /dev/lirc links for my system.
Yours may vary, so please feel free to modify as you need.

Last but not least, what I did was change the devices I use in mythtvsetup
from /dev/video0, etc, to /dev/dvr0 for MPEG-2 devices and /dev/winTV0, etc,
for MJPEG devices.  Now I don't worry about which /dev/videox devices give
what, any more.

The script is called setVideoDevs and should be installed into /etc/init.d/
and is chkconfig-compliant and set to launch before lircd and mythbackend.

HTH

-- 
Allen J. Newton  (anewton at alturia.fleet.org)
-------------- next part --------------
#!/usr/bin/perl
#
# Init file to fix /dev/video links
#
# chkconfig: 2345 85 11
# description: Fix /dev/video links
#

($arg1) 
if ($arg1 ne "start") {
    exit;
}

@bytes     0x00, 0x00, 0x01, 0xBA,
    0x44, 0x00, 0x04, 0x00,
    0x04, 0x01, 0x01, 0xD1
);

$mpegStr 
$devNum $dvrNum $winTVNum 
foreach $dev (glob "/dev/video?") {
    #print "dev     sysopen (VDEV, $dev, O_RDONLY)
        or die "Could not open $dev: $!";

    $numBytes     #print "read $numBytes bytes\n";

    if ($numBytes = 0) {
        next;
    }

    if ($data eq $mpegStr) {
        #print "Found MPEG source!\n";
        unlink "/dev/dvr$dvrNum";
        symlink "$dev", "/dev/dvr$dvrNum";

        #$lircNum         #if ($dvrNum = 0) {
        #    unlink "/dev/lirc";
        #    system("modprobe lirc_i2c");
        #    symlink "/dev/lirc$lircNum", "/dev/lirc";
        #}
        ++$dvrNum;
    } else {
        unlink "/dev/winTV$winTVNum";
        symlink "$dev", "/dev/winTV$winTVNum";
        if ($winTVNum = 0) {
            unlink "/dev/radio";
            symlink "/dev/radio$devNum", "/dev/radio";
            unlink "/dev/vbi";
            symlink "/dev/vbi$devNum", "/dev/vbi";
        }
        ++$winTVNum;
    }

    close VDEV;
    ++ $devNum;
}


More information about the mythtv-users mailing list