
This howto shows how to install the Logitech QuickCam Pro 9000 under Linux. While the howto is focussed on Fedora 8 it should work on all distributions.
I recently got the Logitech QuickCam Pro 9000. It is a higher class webcam with a 2MP sensor and a Carl Zeiss lens - and, according to Logitech’s Linux page it is supported by the uvcvideo driver.
Kernel module installation
The problem is however that the uvcvideo driver is not yet part of the mainline Linux kernel. I fyou plug in a uvcvideo device, the kernel cannot load the right driver:
Dec 7 02:14:06 machine kernel: usb 1-5: new high speed USB device using ehci_hcd and address 4
Dec 7 02:14:06 machine kernel: usb 1-5: configuration #1 chosen from 1 choice
Dec 7 02:14:06 machine kernel: Linux video capture interface: v2.00
Dec 7 02:14:07 machine kernel: usbcore: registered new interface driver snd-usb-audio
The kernel module must be compiled manually. The fastest way to do that is:
$ mkdir linux-uvc;cd linux-uvc; svn checkout http://svn.berlios.de/svnroot/repos/linux-uvc/linux-uvc/trunk
A trunk/uvc_ctrl.c
A trunk/uvc_queue.c
A trunk/uvc_video.c
A trunk/uvc_v4l2.c
A trunk/uvc_compat.h
A trunk/uvc_driver.c
A trunk/uvcvideo.h
A trunk/Makefile
A trunk/dynctrl.txt
Ausgecheckt, Revision 148.
$ cd trunk
$ make
Building USB Video Class driver...
make[1]: Entering directory `/usr/src/kernels/2.6.23.8-63.fc8-i686'
CC [M] /home/liquidat/tmp/linux-uvc/trunk/uvc_driver.o
CC [M] /home/liquidat/tmp/linux-uvc/trunk/uvc_queue.o
CC [M] /home/liquidat/tmp/linux-uvc/trunk/uvc_v4l2.o
CC [M] /home/liquidat/tmp/linux-uvc/trunk/uvc_video.o
CC [M] /home/liquidat/tmp/linux-uvc/trunk/uvc_ctrl.o
LD [M] /home/liquidat/tmp/linux-uvc/trunk/uvcvideo.o
Building modules, stage 2.
MODPOST 1 modules
CC /home/liquidat/tmp/linux-uvc/trunk/uvcvideo.mod.o
LD [M] /home/liquidat/tmp/linux-uvc/trunk/uvcvideo.ko
make[1]: Leaving directory `/usr/src/kernels/2.6.23.8-63.fc8-i686'
$ cd ../..
$ su
Passwort:
# mv linux-uvc /opt
# cd /opt/linux-uvc/trunk
# make install
Installing USB Video Class driver…
make[1]: Entering directory `/usr/src/kernels/2.6.23.8-63.fc8-i686'
INSTALL /opt/linux-uvc/trunk/uvcvideo.ko
DEPMOD 2.6.23.8-63.fc8
make[1]: Leaving directory `/usr/src/kernels/2.6.23.8-63.fc8-i686'
depmod -ae
Of course this requires installed kernel development packages and other general development packages (compiler, etc.). Also, on Ubuntu based distributions you want to enter sudo su instead of the plain su.
A working webcam
After all this is done, the webcam is detected properly:
Dec 7 02:26:19 machine kernel: usb 1-5: new high speed USB device using ehci_hcd and address 7
Dec 7 02:26:19 machine kernel: usb 1-5: configuration #1 chosen from 1 choice
Dec 7 02:26:19 machine kernel: uvcvideo: Found UVC 1.00 device <unnamed> (046d:0990)
Dec 7 02:26:19 machine kernel: usbcore: registered new interface driver uvcvideo
Dec 7 02:26:19 machine kernel: USB Video Class driver (v0.1.0)
The next step is to test the webcam video input. The easiest way is to test this with an application which is known to work with Video4LinuxV2 (uvc mainly supports v4lv2 afaik). The best example is Kopete, which delivered acceptable results for me (although the colours are a bit mixed up):

Skype 2Beta also worked for me with a slightly better video quality, however the screenshot of the Sykpe interface with an embedded video showed just a blank image.
However, if you want to examine the features of your camera in combination with the uvcvideo driver in more detail you need to install luvcview. luvcview can list the possible frame rates and resolutions and also has a display where you can set saturation and similar values live.
In case of QuickCam Pro 9000 I was able to set the resolution to 960×720, and the quality was very good!
Closing words
While this howto explains how to get the uvcvideo driver up and running it does not cover all the fancy features many cameras today come with: additional speakers, microphone, auto-focus and whatnot.
But the main problem is anyway that the module has to be compiled manually. While it worked without any problems this is a task which certainly cannot be done by average computer users. Unfortunately I failed to find any further information why the uvcvideo driver is not part of the kernel yet. I would appreciate any comment which sheds more light on that topic.
It was often mentioned at the uvcvideo driver devel-list that the module will be merged “soon” into the mainline kernel, but that didn’t happen.
However, if the driver is merged at some day it will drastically improve the webcam experience of many Linux users out there since many webcams would be supported out of the box suddenly. I just hope that there are no licence problems keeping uvcvideo out of the kernel atm.
Thanks to Jun’s tech blog for some of the commands used in this howto.