Todays annoyance is the fact that my webcam was broken for months now because I couldn’t get the correct driver to work. To be exact, the device ID is 046d:08d7 and the correct driver for it is gspcav1, from this site. I tried the UVC driver from Berlios as well, but it only works with newer cameras (and as I upgraded from my perfectly fine Logitech Messenger just because Windows Vista needed it, Logitech can drop dead if they think I’ll buy yet another camera). Anyway, the UVC driver can be found here.
The problem I kept having was the fact that the gspcav1 driver was the only one for my camera but it wouldn’t compile. I would end up with this error dump:
make -C /usr/src/linux M=/var/tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224 CC=x86_64-pc-linux-gnu-gcc modules
make[1]: Entering directory `/usr/src/linux-2.6.25-gentoo-r4'
CC [M] /var/tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224/gspca_core.o
In file included from /var/tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224/gspca_core.c:848:
/var/tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224/Sunplus/spca506.h: In function 'spca506_SetNormeInput':
/var/tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224/Sunplus/spca506.h:120: error: 'VIDEO_MODE_NTSC' undeclared (first use in this function)
/var/tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224/Sunplus/spca506.h:120: error: (Each undeclared identifier is reported only once
/var/tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224/Sunplus/spca506.h:120: error: for each function it appears in.)
/var/tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224/Sunplus/spca506.h:131: error: 'VIDEO_MODE_PAL' undeclared (first use in this function)
/var/tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224/Sunplus/spca506.h:137: error: 'VIDEO_MODE_SECAM' undeclared (first use in this function)
/var/tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224/gspca_core.c: In function 'spca5xx_get_depth':
/var/tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224/gspca_core.c:1093: error: 'VIDEO_PALETTE_RGB565' undeclared (first use in this function)
/var/tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224/gspca_core.c:1095: error: 'VIDEO_PALETTE_RGB24' undeclared (first use in this function)
/var/tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224/gspca_core.c:1101: error: 'VIDEO_PALETTE_YUV420P' undeclared (first use in this function)
/var/tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224/gspca_core.c:1104: error: 'VIDEO_PALETTE_RGB32' undeclared (first use in this function)
/var/tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224/gspca_core.c: In function 'v4l_to_spca5xx':
/var/tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224/gspca_core.c:1291: error: 'VIDEO_PALETTE_RGB565' undeclared (first use in this function)
/var/tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224/gspca_core.c:1293: error: 'VIDEO_PALETTE_RGB24' undeclared (first use in this function)
/var/tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224/gspca_core.c:1295: error: 'VIDEO_PALETTE_RGB32' undeclared (first use in this function)
/var/tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224/gspca_core.c:1297: error: 'VIDEO_PALETTE_YUV422P' undeclared (first use in this function)
/var/tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224/gspca_core.c:1299: error: 'VIDEO_PALETTE_YUV420P' undeclared (first use in this function)
/var/tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224/gspca_core.c: In function 'spca50x_init_source':
/var/tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224/gspca_core.c:1802: error: 'VIDEO_PALETTE_RGB24' undeclared (first use in this function)
/var/tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224/gspca_core.c: In function 'spca5xx_setFrameDecoder':
/var/tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224/gspca_core.c:1841: error: 'VIDEO_PALETTE_RGB24' undeclared (first use in this function)
/var/tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224/gspca_core.c: In function 'spca5xx_do_ioctl':
/var/tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224/gspca_core.c:2074: error: 'VIDIOCGCAP' undeclared (first use in this function)
/var/tmp/portage/media-video/gspcav1-20071224/work/gspcav1-20071224/gspca_core.c:2078: error: invalid application of 'sizeof' to incomplete type 'struct video_capability'
Note: I’m posting it all so someone might find it using a search engine because nobody else put this up.
The solution to this? So darn simple that I shouldn’t have missed it: enable Video For Linux 1 in the kernel. You see, this driver is designed for V4L1 and without the compatibility layer it will error like this. For the Gentoo users it seems like a problem which is here to stay as the ebuild can not check for this (only if any V4L version is enabled).
I still think it would be nice if the package maintainers put up a warning in the ebuild so I wouldn’t have to figure this out on my own… ahh well.