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

Brandon Drummond nijusan at utdallas.edu
Sun Jan 28 01:45:19 CET 2007


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

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.
> 
> 
> _______________________________________________
> linux-dvb mailing list
> linux-dvb at linuxtv.org
> http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb




More information about the linux-dvb mailing list