On Thu, 2008-10-09 at 16:37 -0400, Carl L. Gilbert wrote:
> On Wed, 2008-10-08 at 22:02 -0400, Andy Walls wrote: 
> > On Wed, 2008-10-08 at 20:18 -0400, Richard Ayotte wrote:
 
> > > On Wed, Oct 8, 2008 at 2:51 PM, Carl L. Gilbert
> > > <[EMAIL PROTECTED]> wrote:
> > >         Im just getting started here and trying to get the driver
> > >         loaded so I can use MythTV.  I was told the ivtv driver is the
> > >         one to use for my card which is the Hauppauge HVR-1600.  I
> > >         tried to simply download and build and install the driver.  I
> > >         have Mandriva 2008.  I managed to get it to make and
> > >         appearantly install, but when I go to 
> > >         
> > >         modprobe cx18
> > >         
> > >         I get some error messages and it does not seem to load.
> > >         
> > >         
> > >         videodev: exports duplicate symbol v4l_printk_ioctl (owned by
> > >         v4l2_common)
> > 
> > You have an old version of v4l2-common.ko lying around.  Obviously
> > something went wrong with the build & install of the latest v4l-dvb
> > repository.
> > 
> 
> When you say 'old' what do you mean?  and old build, or old as in an
> old version from a different download?

When you build the latest v4l-dvb repository, you are building the
cx18.ko driver module plus v4l-dvb infrastructure modules that it also
needs to use: videodev.ko, v4l2-common.ko, dvb_core.ko,
compat_ioctl32.ko, etc.

What I mean by 'old' are these same infrastructure modules that came
installed with your distribution.

The cx18.ko module built from the latest v4l-dvb repository needs to use
the latest version of these infrastructure modules.  They should
automatically get built and installed along with the cx18.ko driver
module.

For the steps you are taking on your system, the build and install of
the latest v4l-dvb repository isn't working as it should.  This is
usually caused by distribution (i.e. Mandriva) specific changes to the
vanilla kernel module build process or module installations.



> Do you think this could have come from some other install and not the
> one I just did?  Because I just downloaded the driver and just
> installed it.  So I should not have an old version unless somehow its
> part of a mandriva package I installed for some reason.

The 'old' modules I speak of likely came from a standard Mandriva kenrle
or kernel module package.  Normally, the install of process of the
latest v4l-dvb repository overwrites them, and they're gone.  This may
not be the case on Mandriva if they've tweaked something.


> 
> Looks like I have MythTV Installed, but no ivtv driver.  Should I
> uninstall mythTV till I get this part working?

No.  Leave MythTV alone - it's having no effect at this point.

BTW the HVR-1600 is supported by the cx18 driver, not the ivtv driver.  
But you'll still be able to work with MythTV just fine.


> > On my system:
> > 
> > $ find /lib/modules/ -name 'videodev.ko'
> > /lib/modules/2.6.25.10-86.fc9.x86_64/kernel/drivers/media/video/videodev.ko
> > /lib/modules/2.6.26.5-45.fc9.x86_64/kernel/drivers/media/video/videodev.ko
> 
> [EMAIL PROTECTED] carl]# find /lib/modules/ -name 'videodev.ko'
> /lib/modules/2.6.24.5-desktop-2mnb/kernel/drivers/media/video/videodev.ko
> 
> > 
> > $ nm 
> > /lib/modules/2.6.26.5-45.fc9.x86_64/kernel/drivers/media/video/videodev.ko 
> > | grep ioctl
> > 00000000000000b7 r __kstrtab_v4l_printk_ioctl
> > 000000000000009b r __kstrtab_video_ioctl2
> > 0000000000000090 r __ksymtab_v4l_printk_ioctl
> > 0000000000000070 r __ksymtab_video_ioctl2
> > 0000000000000a7c t __video_do_ioctl
> > 0000000000000850 r v4l1_ioctls
> > 0000000000000240 r v4l2_int_ioctls
> > 0000000000000940 r v4l2_ioctls
> >                  U v4l_compat_translate_ioctl
> > 00000000000007de T v4l_printk_ioctl       <------ T == machine code (Text) 
> > exists here
> > 0000000000003f4d T video_ioctl2
> > 
> > 
> 
> [EMAIL PROTECTED] carl]#
> nm /lib/modules/2.6.24.5-desktop-2mnb/kernel/drivers/media/video/videodev.ko 
> | grep ioctl
> 000000b7 r __kstrtab_v4l_printk_ioctl
> 0000009b r __kstrtab_video_ioctl2
> 00000048 r __ksymtab_v4l_printk_ioctl
> 00000038 r __ksymtab_video_ioctl2
> 00000ac0 t __video_do_ioctl
> 00000500 r v4l1_ioctls
> 000001e0 r v4l2_int_ioctls
> 00000580 r v4l2_ioctls
>          U v4l_compat_translate_ioctl
> 000006d0 T v4l_printk_ioctl
> 000048e0 T video_ioctl2


> Looks similar.  I am not sure what you are showing me with this dump
> though?  What does it mean?  Should it match something?

It shows you the 'v4l_printk_ioctl' is defined in this file just like on
my system.  This is the duplicate symbol modprobe griped about.  This
means to me like you have a copy of the latest videodev.ko module
installed.  Good.


> > $ find /lib/modules/ -name 'v4l2-common.ko'
> > /lib/modules/2.6.25.10-86.fc9.x86_64/kernel/drivers/media/video/v4l2-common.ko
> > /lib/modules/2.6.26.5-45.fc9.x86_64/kernel/drivers/media/video/v4l2-common.ko
> > 
> > $ nm 
> > /lib/modules/2.6.26.5-45.fc9.x86_64/kernel/drivers/media/video/v4l2-common.ko
> >  | less
> > (no output)
> > 
> > 
> [EMAIL PROTECTED] carl]#
> nm 
> /lib/modules/2.6.24.5-desktop-2mnb/kernel/drivers/media/video/v4l2-common.ko
> [snip]
> 000006d0 T v4l2_chip_ident_i2c_client
> 00000660 T v4l2_chip_match_host
> 00000680 T v4l2_chip_match_i2c_client
> 000000f0 T v4l2_ctrl_check
> 00000170 T v4l2_ctrl_get_menu
> 00000240 T v4l2_ctrl_get_name
> 00000580 T v4l2_ctrl_next
> 000008d0 T v4l2_ctrl_query_fill
> 00000af0 T v4l2_ctrl_query_fill_std
> 00000820 T v4l2_ctrl_query_menu
> 000007b0 T v4l2_ctrl_query_menu_valid_items
> 00000720 T v4l2_i2c_attach
> 00000020 T v4l2_prio_change
> 000000d0 T v4l2_prio_check
> 00000080 T v4l2_prio_close
> 00000000 T v4l2_prio_init
> 000000a0 T v4l2_prio_max
> 00000070 T v4l2_prio_open
> 

> what does this mean?  It does nto match what you have shown.

(You forgot the grep).  What this shows is that the 'v4l_printk_ioctl'
symbol is *not* defined here.  That means this looks like the latest
version of v4l2-common.ko was installed on your system.  Good.

The question now becomes, why does your system gripe that v4l2-common.ko
has the 'v4l_printk_ioctl' symbol defined.  There's obviously another,
older copy of this module around that the kernel is finding first.
That's bad.  You need to find where it is and move it out of the way or
delete it.


> > The symbol should be defined in videodev.ko and not exists in v4l2-common.ko
> > 
> > 
> > >         cx18: Unknown symbol video_ioctl2
> > >         cx18: Unknown symbol video_devdata
> > >         cx18: Unknown symbol video_unregister_device
> > >         cx18: Unknown symbol video_device_alloc
> > >         cx18: Unknown symbol video_register_device
> > >         cx18: Unknown symbol video_device_release
> > 
> > All these missing symbols exist in the videodev.ko module (I think), so
> > that module didn't load due to the symbol collision with the
> > (apparently) old v4l2-common.ko module.
> > 
> > 
> 
> 
> OK, what I did was 
> lsmod | grep v4l
> 
> and I did see the v4l mod still loaded.  I think it was not unloading
> because I was not building it and make unload wasnt working.  I dont
> know.  ANyway, I just did a full build, then a make install, then a
> make unload, then another
> 
> lsmod | grep v4l
> 
> and it showed nothing.  So I figured I got it unloaded.  But then when
> I do modprobe 
> 
> [EMAIL PROTECTED] carl]# modprobe cx18
> WARNING: Error inserting videodev
> (/lib/modules/2.6.24.5-desktop-2mnb/kernel/drivers/media/video/videodev.ko): 
> Invalid module format

Weird, this implies the videodev.ko file may be corrupted.

> FATAL: Error inserting cx18
> (/lib/modules/2.6.24.5-desktop-2mnb/kernel/drivers/media/video/cx18/cx18.ko): 
> Unknown symbol in module, or unknown parameter (see dmesg)
> 
> 
> At least its a different error now!  This is what I get
> from /var/log/messages
> 
> Oct  9 16:26:48 erasmus kernel: cx18: Unknown symbol video_ioctl2
> Oct  9 16:26:48 erasmus kernel: cx18: Unknown symbol video_devdata
> Oct  9 16:26:48 erasmus kernel: cx18: Unknown symbol
> video_unregister_device
> Oct  9 16:26:48 erasmus kernel: cx18: Unknown symbol
> video_device_alloc
> Oct  9 16:26:48 erasmus kernel: cx18: Unknown symbol
> video_register_device
> Oct  9 16:26:48 erasmus kernel: cx18: Unknown symbol
> video_device_release
> 
> 
> dmesg is same error
> 
> videodev: exports duplicate symbol v4l_printk_ioctl (owned by
> v4l2_common)
> cx18: Unknown symbol video_ioctl2
> cx18: Unknown symbol video_devdata
> cx18: Unknown symbol video_unregister_device
> cx18: Unknown symbol video_device_alloc
> cx18: Unknown symbol video_register_device
> cx18: Unknown symbol video_device_release
> 
> 
> what is this v4l2_common and how do I get rid of it?

You don't want to do that per se.  You want to get rid of all the
old/original v4l-dvb related modules from your system, and replace them
with the latest ones.

That may mean looking at all the timestamps of things under 

/lib/modules/(kernel-version-whatever)/kernel/driver/media

and moving modules which have older date stamps out of the way (back 'em
up!) or deleting them, and then running 'depmod -a' again.

> # ls
> -l /lib/modules/2.6.24.5-desktop-2mnb/kernel/drivers/media/video/v4l*
> -rw-r--r-- 1 root root 17580 2008-10-09
> 16:21 
> /lib/modules/2.6.24.5-desktop-2mnb/kernel/drivers/media/video/v4l1-compat.ko
> -rw-r--r-- 1 root root  6479 2008-06-12
> 14:38 
> /lib/modules/2.6.24.5-desktop-2mnb/kernel/drivers/media/video/v4l1-compat.ko.gz
> -rw-r--r-- 1 root root 14852 2008-10-09
> 16:21 
> /lib/modules/2.6.24.5-desktop-2mnb/kernel/drivers/media/video/v4l2-common.ko
> -rw-r--r-- 1 root root  7619 2008-06-12
> 14:38 
> /lib/modules/2.6.24.5-desktop-2mnb/kernel/drivers/media/video/v4l2-common.ko.gz
> -rw-r--r-- 1 root root  4904 2008-10-09
> 16:21 
> /lib/modules/2.6.24.5-desktop-2mnb/kernel/drivers/media/video/v4l2-int-device.ko
> -rw-r--r-- 1 root root  1622 2008-06-12
> 14:38 
> /lib/modules/2.6.24.5-desktop-2mnb/kernel/drivers/media/video/v4l2-int-device.ko.gz
> 
> 
> If you look at the date of these files, some are from June, and some
> are from today's build.  What does this mean?

It means you have gzipped copies of the old/original ones and
uncompressed copies of the newly built ones. (I *speculate*).

I suspect that this may also mean that Mandriva can load compressed
module files (a Mandriva distribution specific thing I guess) and
prefers to use those over the uncompressed ones.

This may be causing the mismatch of symbols.  I suspect you will find
that you do not have a cx18.ko.gz module file as the driver is
relatively new and may not have been packaged by Mandriva.  When you
load the new, uncompressed cx18.ko module, because that's the only one
you have, the dependencies pick up the older compressed modules (as the
system may prefer those first), causing a mismatch.  (More *speculation*
by me).

Move the compressed module files out of the way, do depmod -a again, and
either unload all the video modules or reboot.  

Then try loading the cx18 module again.


> 
> 
> Thanks for the help.

You're welcome.  I hope this helps.

Regards,
Andy


_______________________________________________
ivtv-users mailing list
[email protected]
http://ivtvdriver.org/mailman/listinfo/ivtv-users

Reply via email to