[linux-dvb] webcam and v4l-dvb related modules

hermann pitton hermann-pitton at arcor.de
Sun Jan 28 22:59:21 CET 2007


Am Samstag, den 27.01.2007, 16:45 -0800 schrieb Brandon Drummond:
> Hmm, it looks like the headers supplied by v4l-dvb are more "up-to-date"
> than the ones in the default ubuntu kernel (2.6.17-10-generic). In the
> file uvc_compat.h a check is performed to decide which version of the
> headers you have based on the LINUX_VERSION_CODE. So my kernel reports
> that it's at a version lower than 2.6.18 and the uvc_compat.h file then
> tries to define some things that are already in the headers supplied by
> v4l-dvb. So I changed the check so that I pass for a more up-to-date
> kernel and the module then builds fine without complaints. However, when
> loading the module I still get complaints about unresolved symbols?
> 
> $ sudo insmod uvcvideo.ko
> insmod: error inserting 'uvcvideo.ko': -1 Unknown symbol in module
> $ dmesg
> [17185392.912000] uvcvideo: disagrees about version of symbol
> video_devdata
> [17185392.912000] uvcvideo: Unknown symbol video_devdata
> [17185392.912000] uvcvideo: disagrees about version of symbol
> video_unregister_device
> [17185392.912000] uvcvideo: Unknown symbol video_unregister_device
> [17185392.916000] uvcvideo: disagrees about version of symbol
> video_device_alloc
> [17185392.916000] uvcvideo: Unknown symbol video_device_alloc
> [17185392.916000] uvcvideo: disagrees about version of symbol
> video_register_device
> [17185392.916000] uvcvideo: Unknown symbol video_register_device
> [17185392.916000] uvcvideo: disagrees about version of symbol
> video_device_release
> [17185392.916000] uvcvideo: Unknown symbol video_device_release
> 
> Damn, I was hoping that would have fixed it.:-) Perhaps I should check
> to see what uvcvideo relies on.
> 
> -Brandon Drummond

Hi Brandon,

the problem with uvcvideo goes a bit deeper.

Laurent Pinchard, who is working on it, needs a lot of new ioctls and
there was a intense discussion on the video4linux-list, how to extend
the API best for it. On the other hand Mauro is moving forward with
other API changes.

The good news is, that there is a solution so far, that Laurent will try
to prepare it for kernel inclusion, but lots of work.

We had a similar report on the video4linux-list, I'm not fully up to
date on this anymore, but at this time, end of November 2006, the
solution was to keep all on 2.6.18 vanilla kernel level for uvc and
don't use mercurial until then.

You may ask at linux-uvc about the current status, if not already
announced.

Cheers,
Hermann


> On Sat, 2007-01-27 at 16:04 -0800, Brandon Drummond wrote:
> > Ah, yes that makes sense. Unfortunately, after making the appropriate
> > kernel links the quickcam express module (qc-usb-0.6.5) rufuses to
> > build. I was using the module that comes in the ubuntu distribution
> > before, and I applied the kernel links command before trying to build my
> > own so I'm not sure if it's really the v4l-dvb headers that are causing
> > the problem. I do, however, own another webcam who's driver I have been
> > successfully compiling using the original headers that now refuses to
> > build with the headers supplied by the v4l-dvb distribution. It's the
> > linux-uvc driver https://linux-uvc.berlios.de/
> > I receive the following errors when trying to compile using the supplied
> > headers:
> > Building USB Video Class driver...
> > make[1]: Entering directory `/usr/src/linux-headers-2.6.17-10-generic'
> >   CC [M]  /media/sda4/nijusan/drivers/linuxuvc/uvc_driver.o
> > In file included from /media/sda4/nijusan/drivers/linuxuvc/uvcvideo.h:8,
> > 
> > from /media/sda4/nijusan/drivers/linuxuvc/uvc_driver.c:45:
> > /media/sda4/nijusan/drivers/linuxuvc/uvc_compat.h:11: error:
> > redefinition of ‘struct v4l2_ext_control’
> > /media/sda4/nijusan/drivers/linuxuvc/uvc_compat.h:22: error:
> > redefinition of ‘struct v4l2_ext_controls’
> > /media/sda4/nijusan/drivers/linuxuvc/uvc_compat.h:57: error: nested
> > redefinition of ‘enum v4l2_frmsizetypes’
> > /media/sda4/nijusan/drivers/linuxuvc/uvc_compat.h:57: error:
> > redeclaration of ‘enum v4l2_frmsizetypes’
> > /media/sda4/nijusan/drivers/linuxuvc/uvc_compat.h:58: error:
> > redeclaration of enumerator ‘V4L2_FRMSIZE_TYPE_DISCRETE’
> > include/linux/videodev2.h:292: error: previous definition of
> > ‘V4L2_FRMSIZE_TYPE_DISCRETE’ was here
> > /media/sda4/nijusan/drivers/linuxuvc/uvc_compat.h:59: error:
> > redeclaration of enumerator ‘V4L2_FRMSIZE_TYPE_CONTINUOUS’
> > include/linux/videodev2.h:293: error: previous definition of
> > ‘V4L2_FRMSIZE_TYPE_CONTINUOUS’ was here
> > /media/sda4/nijusan/drivers/linuxuvc/uvc_compat.h:60: error:
> > redeclaration of enumerator ‘V4L2_FRMSIZE_TYPE_STEPWISE’
> > include/linux/videodev2.h:294: error: previous definition of
> > ‘V4L2_FRMSIZE_TYPE_STEPWISE’ was here
> > /media/sda4/nijusan/drivers/linuxuvc/uvc_compat.h:64: error:
> > redefinition of ‘struct v4l2_frmsize_discrete’
> > /media/sda4/nijusan/drivers/linuxuvc/uvc_compat.h:70: error:
> > redefinition of ‘struct v4l2_frmsize_stepwise’
> > /media/sda4/nijusan/drivers/linuxuvc/uvc_compat.h:80: error:
> > redefinition of ‘struct v4l2_frmsizeenum’
> > /media/sda4/nijusan/drivers/linuxuvc/uvc_compat.h:94: error: nested
> > redefinition of ‘enum v4l2_frmivaltypes’
> > /media/sda4/nijusan/drivers/linuxuvc/uvc_compat.h:94: error:
> > redeclaration of ‘enum v4l2_frmivaltypes’
> > /media/sda4/nijusan/drivers/linuxuvc/uvc_compat.h:95: error:
> > redeclaration of enumerator ‘V4L2_FRMIVAL_TYPE_DISCRETE’
> > include/linux/videodev2.h:332: error: previous definition of
> > ‘V4L2_FRMIVAL_TYPE_DISCRETE’ was here
> > /media/sda4/nijusan/drivers/linuxuvc/uvc_compat.h:96: error:
> > redeclaration of enumerator ‘V4L2_FRMIVAL_TYPE_CONTINUOUS’
> > include/linux/videodev2.h:333: error: previous definition of
> > ‘V4L2_FRMIVAL_TYPE_CONTINUOUS’ was here
> > /media/sda4/nijusan/drivers/linuxuvc/uvc_compat.h:97: error:
> > redeclaration of enumerator ‘V4L2_FRMIVAL_TYPE_STEPWISE’
> > include/linux/videodev2.h:334: error: previous definition of
> > ‘V4L2_FRMIVAL_TYPE_STEPWISE’ was here
> > /media/sda4/nijusan/drivers/linuxuvc/uvc_compat.h:101: error:
> > redefinition of ‘struct v4l2_frmival_stepwise’
> > /media/sda4/nijusan/drivers/linuxuvc/uvc_compat.h:108: error:
> > redefinition of ‘struct v4l2_frmivalenum’
> > make[2]: *** [/media/sda4/nijusan/drivers/linuxuvc/uvc_driver.o] Error 1
> > make[1]: *** [_module_/media/sda4/nijusan/drivers/linuxuvc] Error 2
> > make[1]: Leaving directory `/usr/src/linux-headers-2.6.17-10-generic'
> > make: *** [uvcvideo] Error 2
> > 
> > This is a v4l2-only driver. I notice there are some incompatibilities
> > between the v4l-dvb's videodev2.h header file and the uvc_compat.h
> > header supplied by the wedcam module. What are the differences between
> > the stock v4l headers and those supplied by the v4l-dvb distribution?
> > 
> > Cheers,
> > -Brandon Drummond
> > 
> > On Fri, 2007-01-26 at 22:31 -0800, Trent Piepho wrote:
> > > On Fri, 26 Jan 2007, Brandon Drummond wrote:
> > > > [17181665.160000] Linux video capture interface: v2.00
> > > > [17181665.196000] quickcam: disagrees about version of symbol
> > > > video_devdata
> > > > [17181665.196000] quickcam: Unknown symbol video_devdata
> > > >
> > > > At first glance one would assume that this arose from compilation under
> > > > a different kernel, but that is not the case. I am aware that this is a
> > > > known issue, but I have a couple of questions:
> > > 
> > > Effectively, it _is_ from compiling under a different kernel.  The modules
> > > from v4l-dvb, like videodev.ko, were compiled using the source from
> > > v4l-dvb.  The out of tree quickcam driver was compiled using the source
> > > from your kernel.  videodev.ko and quickcam.ko were compiled with different
> > > versions of header files they both use, like videodev.h, and so the two
> > > modules will not work together.
> > > 
> > > You have this same problem if you try to compile the latest ALSA sources
> > > and use those modules with a sound driver that isn't part of the ALSA
> > > source.
> > > 
> > > A solution would be the use the "make kernel-links" command in v4l-dvb,
> > > which will install the v4l-dvb source into your kernel source.  Now if you
> > > compile quickcam against that upgraded kernel source, it should use the
> > > same headers that v4l-dvb used, and so work with the v4l-dvb modules.
> > 





More information about the linux-dvb mailing list