The Webcam HOWTO - The Linux Documentation Project
The Webcam HOWTO - The Linux Documentation Project
The Webcam HOWTO - The Linux Documentation Project
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>The</strong> <strong>Webcam</strong> <strong>HOWTO</strong><br />
Howard Shane<br />
<br />
Revision History<br />
Revision 1.61 2005−02−21 Revised by: jhs<br />
Update on revived Philips <strong>Webcam</strong> driver development<br />
Revision 1.6 2005−01−02 Revised by: jhs<br />
Errata fixed, some rewrites for readability, new chipsets and updates<br />
Revision 1.1 2004−01−12 Revised by: jhs<br />
Update for 2.6 series kernel release and info on NW802−based webcams<br />
Revision 1.0 2003−12−04 Revised by: JP<br />
Initial Release / Reviewed by TLDP<br />
Revision 0.5 2003−11−07 Revised by: jhs<br />
Final revision after v4l mailing list feedback<br />
Revision 0.1 2003−10−12 Revised by: jhs<br />
Initial draft posted<br />
This document was written to assist the reader in the steps necessary to configure and use a webcam within<br />
the <strong>Linux</strong> operating system.
<strong>The</strong> <strong>Webcam</strong> <strong>HOWTO</strong><br />
Table of Contents<br />
1. Introduction.....................................................................................................................................................1<br />
1.1. Copyright Information......................................................................................................................1<br />
1.2. Disclaimer.........................................................................................................................................1<br />
1.3. New Versions....................................................................................................................................1<br />
1.4. Credits...............................................................................................................................................1<br />
1.5. Feedback...........................................................................................................................................2<br />
1.6. Conventions Used in this Document................................................................................................2<br />
2. Enabling Support for Your (<strong>Webcam</strong>) Hardware in <strong>Linux</strong>.......................................................................3<br />
2.1. Drivers and Modules.........................................................................................................................3<br />
2.1.1. Module or In−Kernel?.............................................................................................................3<br />
2.1.2. Patching, Source−Only or Precompiled Binary?....................................................................4<br />
2.2. Supporting the Connection Type......................................................................................................4<br />
2.2.1. USB <strong>Webcam</strong>s........................................................................................................................4<br />
2.2.2. IEEE 1394 (Firewire", i.Link")...............................................................................................6<br />
2.2.3. Generic Parallel Port Support for Parport <strong>Webcam</strong>s...............................................................6<br />
2.3. Specific <strong>Webcam</strong> Models.................................................................................................................6<br />
2.3.1. 3com HomeConnect PC Digital <strong>Webcam</strong>...............................................................................7<br />
2.3.2. CPiA based <strong>Webcam</strong>s.............................................................................................................7<br />
2.3.3. SE401, SE402 and EP800 based USB webcams....................................................................7<br />
2.3.4. OmniVision based <strong>Webcam</strong>s..................................................................................................8<br />
2.3.5. Logitech (formerly Connectix) Quickcam Support.................................................................9<br />
2.3.6. ICM532 Based <strong>Webcam</strong>s........................................................................................................9<br />
2.3.7. NW802 Based <strong>Webcam</strong>s.......................................................................................................10<br />
2.3.8. Philips USB <strong>Webcam</strong>s..........................................................................................................10<br />
2.3.9. SPCA50X USB Camera <strong>Linux</strong> Driver..................................................................................10<br />
2.3.10. STV0680 based Models......................................................................................................11<br />
2.3.11. Winbond w9966cf...............................................................................................................11<br />
2.3.12. Xirlink C−it" HDCS−1000 based <strong>Webcam</strong>s.......................................................................11<br />
3. Accessing the Video Device..........................................................................................................................12<br />
3.1. <strong>The</strong> Video Devices Node................................................................................................................12<br />
3.2. Groups and Permissions..................................................................................................................13<br />
4. Framegrabbing Applications.......................................................................................................................14<br />
4.1. Command Line Programs...............................................................................................................14<br />
4.1.1. Streamer.................................................................................................................................14<br />
4.1.2. camE......................................................................................................................................14<br />
4.1.3. Motion...................................................................................................................................14<br />
4.1.4. <strong>Webcam</strong>.................................................................................................................................15<br />
4.1.5. SANE.....................................................................................................................................15<br />
4.2. GUI(Grapical User Interface)−Based Programs.............................................................................15<br />
4.2.1. Xawtv....................................................................................................................................15<br />
4.2.2. Gqcam...................................................................................................................................15<br />
4.2.3. Camorama.............................................................................................................................15<br />
4.2.4. GnomeMeeting......................................................................................................................16<br />
i
<strong>The</strong> <strong>Webcam</strong> <strong>HOWTO</strong><br />
Table of Contents<br />
5. Troubleshooting............................................................................................................................................17<br />
5.1. Help, I have a USB webcam and don't know exactly what model it is and/or who the<br />
manufacturer is. What do I do?.............................................................................................................17<br />
5.2. Help, I can't find the camera device in /dev!..................................................................................17<br />
5.3. Help, I can see the camera device (both in person and as a device node in /dev), but I can't<br />
access it!................................................................................................................................................17<br />
5.4. Help, my camera has a driver that is source−only, i.e., has to be built by me! Where do I<br />
start?......................................................................................................................................................18<br />
5.5. I am using Debian GNU/<strong>Linux</strong>. Is there an easier way to go through all this kernel compiling<br />
stuff and building of source modules?..................................................................................................18<br />
5.6. Help, my camera is supported by a driver that has to be patched into my kernel! What do I<br />
do?.........................................................................................................................................................19<br />
5.7. Help−−as in, where can I get more of it?........................................................................................19<br />
5.8. Help, I want to contribute to Video4<strong>Linux</strong> support in <strong>Linux</strong>! Who do I get in touch with?..........19<br />
A. Gnu Free <strong>Documentation</strong> License..............................................................................................................20<br />
ii
1. Introduction<br />
This document was written to assist the reader in setting up and configuring a webcam, digital camera, or<br />
other video device in the <strong>Linux</strong> operating system. It outlines how to enable the necessary kernel and/or<br />
software support and various frame−grabber applications that can be used to access your device. It does not<br />
discuss the differences in graphic and video formats, the features and/or capabilities of particular devices, or<br />
the encoding or conversion of video formats.<br />
1.1. Copyright Information<br />
This document is Copyright 2004−2005, by Howard Shane.<br />
Permission is granted to copy, distribute, and/or modify this document under the terms of the GNU Free<br />
<strong>Documentation</strong> License, Version 1.2 or any later version published by the Free Software Foundation with no<br />
Invariant Sections, no Front−Cover Texts, and no Back−Cover Texts. A copy of the license can be found in<br />
Appendix A.<br />
1.2. Disclaimer<br />
No liability for the contents of this document can be accepted. Use the concepts, examples and other content<br />
entirely at your own risk. As this is a new edition, there may be technical or other inaccuracies that may result<br />
in the loss of irreplaceable data. In any case, proceed with caution, and realize that although errors are highly<br />
unlikely, the author can accept no responsibility for them.<br />
All copyrights are held by their respective owners, unless specifically noted otherwise. Use of a term in this<br />
document should not be regarded as affecting the validity of any trademark or service mark.<br />
Naming of particular products or brands should not be seen as endorsements.<br />
1.3. New Versions<br />
This is the fourth release.<br />
<strong>The</strong> latest version number of this document can be found here.<br />
1.4. Credits<br />
I would like to thank all of the individuals that have pioneered video support for <strong>Linux</strong>, in particular the v4l<br />
and v4l2 teams, Gerd Knorr, and the Metzler Brothers among others.<br />
Also, I would like to thank Marla, who has the grace to accept my imperfections and idiosyncrasies<br />
unconditionally, including my obsession with projects such as this.<br />
1. Introduction 1
1.5. Feedback<br />
Please send any additions or comments pertaining to this document to the following email address:<br />
. In particular, if you have information about new devices or interfaces<br />
supported or errata, please contact me so we can keep this document up−to−date!<br />
1.6. Conventions Used in this Document<br />
<strong>The</strong> following conventions are used in this document and are outlined here for those who may not yet have a<br />
complete understanding of how to access and control the underlying operating system in <strong>Linux</strong>, which is<br />
usually via the Bash shell.<br />
First, filenames are referenced in a paragraph like so: /path/file<br />
Commands in <strong>Linux</strong> are executed (or 'called') at the command prompt, otherwise known as the 'command<br />
line.' If you are in the non−graphical (text−based) environment, you will usually be presented with the Bash<br />
shell prompt which is a dollar sign:<br />
$<br />
...or the hash mark:<br />
<strong>The</strong> <strong>Webcam</strong> <strong>HOWTO</strong><br />
#<br />
...if you have logged in as root or have otherwise acquired root, or 'superuser' privileges. You can also access<br />
the Bash shell in the X window system, otherwise known as X or X11, with an xterm or similar<br />
X−terminal−emulator. Commands to be performed at the Bash prompt, but referenced in a paragraph of this<br />
document, usually look like this: do this now<br />
Commands and/or the resulting output of commands may also be outlined with screen output in their own<br />
paragraph or heading:<br />
$ date<br />
Sun Jul 27 22:37:11 CDT 2003<br />
When a command is written in front of the Bash prompt (e.g., $ date above), it is assumed the [Return] or<br />
[Enter] key has been pressed after the command, possibly followed by the output on a new line (e.g., as in the<br />
date in the above example).<br />
1. Introduction 2
2. Enabling Support for Your (<strong>Webcam</strong>) Hardware<br />
in <strong>Linux</strong><br />
2.1. Drivers and Modules<br />
For your webcam to work you will need support for the connection and support for the actual camera<br />
hardware. Those who are already versed in kernels and modules and how to load them should skip to Section<br />
2.2, which addresses support of the connection type. If you know your USB, IEEE 1394 or whatever bus you<br />
will be connecting your camera to is already configured and working, you should move on to the list of<br />
specific webcam hardware listed in Section 2.3.<br />
<strong>Webcam</strong> drivers are usually available one of three ways: within the kernel, as a compilable stand alone<br />
module, or available as a pre−compiled (packaged) binary driver from your <strong>Linux</strong> distribution.<br />
2.1.1. Module or In−Kernel?<br />
As a rule, often the stock kernel, or working part of the operating system, of your initial installation may<br />
already have support for what you need. Your <strong>Linux</strong> distribution vendor has likely enabled the most common<br />
options already, including the bus, or connection type, and drivers for common camera models. <strong>The</strong> driver<br />
exists either as a loadable module or within the already running kernel.<br />
An easy way to tell if the driver is enabled is to use the dmesg command piped into less (for easy paging) to<br />
look for an acknowledgement that it was loaded when your system started up:<br />
$ dmesg | less<br />
...which may yield something like the following, depending on your hardware:<br />
Dec 18 17:35:18 localhost kernel: hub 5−0:1.0: USB hub found<br />
Dec 18 17:35:18 localhost kernel: hub 5−0:1.0: 2 ports detected<br />
Dec 18 17:35:18 localhost kernel: <strong>Linux</strong> video capture interface: v1.00<br />
Dec 18 17:35:18 localhost kernel: quickcam: QuickCam USB camera found (driver version QuickCam<br />
Dec 18 17:35:18 localhost kernel: quickcam: Kernel:2.6.7 bus:1 class:FF subclass:FF vendor:046<br />
Dec 18 17:35:18 localhost kernel: quickcam: Sensor HDCS−1000/1100 detected<br />
Dec 18 17:35:18 localhost kernel: quickcam: Registered device: /dev/video0<br />
Dec 18 17:35:18 localhost kernel: usbcore: registered new driver quickcam<br />
If you don't see it, the particular driver may exist as a loadable module. If you know what that module is<br />
named, try using find; in this example we are looking for the 'ibmcam' module:<br />
$ find /lib/modules −name ibmcam.o<br />
Note that up until the 2.4 series modules had the suffix .o; for 2.6+ series kernels this was replaced with .ko.<br />
You can get a list of all modules available by typing the following at the command line:<br />
$ ls −R /lib/modules/`uname −r`/kernel<br />
Where `uname −r`, surrounded by forward tick marks, is your kernel version number. <strong>The</strong> following output is<br />
an example of what you might find in a USB webcam−ready kernel , where everything is loaded as a module<br />
(all but the relevant lines have been edited for brevity):<br />
./usb: usbvideo.o usbcore.o ibmcam.o<br />
2. Enabling Support for Your (<strong>Webcam</strong>) Hardware in <strong>Linux</strong> 3
Once you know which module your camera needs you can find out if it is already loaded by typing the<br />
following at the command line:<br />
# lsmod<br />
As shown by the prompt above, you will need to have root privileges to do this. You should get output similar<br />
to the following:<br />
cdrom 29312 0 (autoclean) [sr_mod]<br />
usb−ohci 17888 0 (unused)<br />
usbcore 56768 0 [scanner ibmcam usbvideo usb−ohci]<br />
ibmcam 39680 0<br />
Most stock kernels are compiled with kmod, which enabling automatic loading of necessary modules when<br />
the appropriate hardware is detected. It may not always do so, however, so if you don't have the particular<br />
module you're seeking loaded and you think the module may be available, try loading it manually with<br />
modprobe, as in the following using the ibmcam module as an example:<br />
# modprobe −v ibmcam<br />
Drivers for specific webcam models, or links to project pages hosting code for drivers, are outlined in Section<br />
2.3. <strong>The</strong> drivers are usually available one of three ways: within the kernel, as a compilable stand alone<br />
module, or available as a pre−compiled binary from your <strong>Linux</strong> distribution.<br />
If the support for your driver is not found either enabled statically within the kernel or as a module, don't<br />
despair. Drivers for numerous models are in the <strong>Linux</strong> kernel source (available directly from kernel.org source<br />
code repository), or in code offered separately from the kernel that can be configured to work with your<br />
current setup as oulined in Section 2.1.2. If your webcam driver is available in the kernel source but not<br />
enabled as a module or otherwise in your default system, you can either recompile the kernel from the source<br />
code you have or obtain a new version of the kernel source, either pre−packaged by your <strong>Linux</strong> distributor or<br />
directly from the previous link (as a so−called "vanilla" kernel). If you are unfamiliar with the prerequisites<br />
and procedure of compiling your own kernel, I direct you to the Kernel <strong>HOWTO</strong> for more information.<br />
2.1.2. Patching, Source−Only or Precompiled Binary?<br />
You may find that your webcam is supported by only a kernel patch, by a source−only driver not requiring a<br />
kernel recompile, or you may even be lucky enough to have a distribution that makes a pre−compiled and<br />
packaged binary driver available for your computer's architecture. <strong>The</strong> procedure involved in the former is<br />
largely beyond the scope of this document and is probably best outlined in the documentation available on the<br />
web page of your particular model's driver found in Section 2.3. Some further more general documentation on<br />
these processes are, however, addressed in Section 5<br />
2.2. Supporting the Connection Type<br />
2.2.1. USB <strong>Webcam</strong>s<br />
<strong>The</strong> <strong>Webcam</strong> <strong>HOWTO</strong><br />
If you have a USB webcam, it is likely a <strong>Linux</strong> driver has been written for your device. <strong>The</strong>re are two ways of<br />
supporting USB devices in <strong>Linux</strong>. One is the more traditional kernel support, and the other is through libusb.<br />
For at least one webcam category, the STV0680−based models, working libusb support is recommended, at<br />
least according to the Sourceforge page on the subject.<br />
Unless you know your driver requires libusb support, you should probably stick with the more conventional<br />
in−kernel support for USB devices beginning in Section 2.2.1.2.<br />
2. Enabling Support for Your (<strong>Webcam</strong>) Hardware in <strong>Linux</strong> 4
2.2.1.1. Libusb<br />
Libusb is a library that allows access to the USB functions in <strong>Linux</strong> through userspace and without the need to<br />
enable kernel support and insert modules. Most distributions, at this point, are offering libusb in their stable<br />
branches (and some install it by default), so if you don't already have kernel support for USB devices, then<br />
you may only have to install the libusb package in order to access your device. You must have USB device<br />
filesystem support enabled in your kernel, which most distributions do. To find out for sure, issue the<br />
following at the command line:<br />
$ cat /proc/filesystems<br />
You should see (among others):<br />
nodev usbdevfs<br />
nodev usbfs<br />
You may need to mount usbdevfs to enable it and see the device files, which you can do at the command line<br />
with mount −t usbdevfs none /proc/bus/usb. Don't try to use libusb while your particular kernel webcam<br />
support is enabled either statically or the module loaded; you can only use one at at time.<br />
You can obtain the libusb package in .rpm, .tgz or .deb format from your <strong>Linux</strong> distribution.<br />
2.2.1.2. <strong>Linux</strong> Kernel USB Support<br />
<strong>The</strong> <strong>Webcam</strong> <strong>HOWTO</strong><br />
Kernel support is required for USB webcam support if not using libusb (outlined above).<br />
For 2.2 and 2.4 series kernels, your USB webcam may require the module usbvideo to function. This is not<br />
required in the 2.6+ series.<br />
For generic USB bus support in <strong>Linux</strong>, you will need USB subsystem support in your kernel, whether<br />
usb−ohci, usb−ehci, or whatever flavor of USB driver your system prefers. USB subsystem support has been<br />
present in the <strong>Linux</strong> kernel since the late 2.2 series. For a more in−depth discussion of USB support in<br />
general, I direct you to the <strong>Linux</strong>−usb project site. If you want to find out which modules are loaded, at the<br />
command line or in an xterm, type the following:<br />
# lsmod<br />
As shown by the prompt above, you will need to have root privileges to do this. You should get output similar<br />
to the following:<br />
cdrom 29312 0 (autoclean) [sr_mod]<br />
usb−ohci 17888 0 (unused)<br />
usbcore 56768 0 [scanner ibmcam usbvideo usb−ohci]<br />
ibmcam 39680 0<br />
If you don't have the particular module you're seeking loaded and you think the module may be available, try<br />
loading it directly (using the usb ibmcam module as an example):<br />
# modprobe −v ibmcam<br />
...at which point you should see something like the following:<br />
Using /lib/modules/2.4.20/kernel/drivers/usb/ibmcam.o<br />
By placing the entry ibmcam (for example) in /etc/modules (note that this varies by distribution), you<br />
can have the module load at boot−time automatically. You can then confirm the module was loaded by<br />
2. Enabling Support for Your (<strong>Webcam</strong>) Hardware in <strong>Linux</strong> 5
checking the syslog or in the boot−time record with dmesg | less), where you should see an entry such as the<br />
following:<br />
Oct 18 12:43:12 K7 kernel: hub.c: new USB device 00:02.3−2, assigned address 3<br />
Oct 18 12:43:12 K7 kernel: ibmcam.c: IBM PC Camera USB camera found (model 2, rev. 0x030a)<br />
Oct 18 12:43:12 K7 kernel: usbvideo.c: ibmcam on /dev/video1: canvas=352x240 videosize=352x240<br />
2.2.2. IEEE 1394 (Firewire", i.Link")<br />
IEEE 1394 webcams require an IEEE 1394 PCI card or an IEEE 1394 bus port on your mainboard. <strong>The</strong> IEEE<br />
interface has been supported in <strong>Linux</strong> since the early 2.4−series kernel. If you are lucky enough to own such a<br />
device, generic information on support of the IEEE 1394 bus in <strong>Linux</strong> can be found at www.linux1394.org. If<br />
you have a kernel older than 2.4.2, you will need to patch your kernel with one of the patches found on this<br />
page matched to your kernel version. In addition, you will require libraw1394. <strong>The</strong> previously referenced<br />
linux1394.org site has a great installation guide.<br />
<strong>The</strong> IEEE1394 Digital Camera List, by Damien Douxchamps, offers an outstanding summary of the<br />
capabilities of IEEE 1394 cameras as well as the current status of support for individual models.<br />
2.2.3. Generic Parallel Port Support for Parport <strong>Webcam</strong>s<br />
For 2.2 and 2.4 kernel systems, parallel−port support must be enabled statically or as a module (stock kernels<br />
usually have this enabled by default). You may want to read more generic info about parallel−port device<br />
support under the <strong>Linux</strong> kernel before starting this process. To find out for sure if the module parport is<br />
loaded, you can check the dmesg file or use lsmod as outlined above. Using dmesg | less, you should see<br />
(among many other lines) the following:<br />
Mar 3 08:00:25 K7 kernel: parport0: PC−style at 0x378 (0x778) [PCSPP,TRISTATE]<br />
Mar 3 08:00:25 K7 kernel: parport0: irq 7 detected<br />
If you are compiling your own kernel, enable 'Parallel Port support'. You should enable 'IEEE 1284 transfer<br />
modes', and if you have x86 type architecture, you should also enable 'PC−style hardware'.<br />
If modprobe returns an error when you attempt to load the module, note that you may need to determine and<br />
supply the hardware address when invoking modprobe. <strong>The</strong> most common address is 0x378 for an x86<br />
system; 0x278 and 0x3BC are other possibilities for integrated or ISA parallel ports. Add−in PCI parallel<br />
ports may have unusual base addresses. You can also arrange multiple devices with either the parport_pc or<br />
parport_arc modules, though that topic is beyond the scope of this document.<br />
WARNING: Be sure you have the correct address before entering this information at the command line<br />
or else your machine may become unstable, crash or otherwise implode.<br />
Your parallel port should be set to preferably "EPP" mode, or alternatively ECP/EPP. "Bidirectional" (also<br />
known as "BPP" or "PS/2") may work, albeit much more slowly. "Unidirectional" mode is unsuitable for<br />
scanning. <strong>The</strong> above setting can usually be accessed through your BIOS menu, at least on x86 systems.<br />
2.3. Specific <strong>Webcam</strong> Models<br />
<strong>The</strong> <strong>Webcam</strong> <strong>HOWTO</strong><br />
Note that this information is frequently changing. <strong>The</strong> <strong>Linux</strong>−USB Device Overview site is a great place to<br />
look if you have a USB webcam. Also, you will want to check for your model's homepage at<br />
http://www.exploits.org/v4l/. <strong>The</strong> information compiled below on specific webcam models is from the same<br />
2. Enabling Support for Your (<strong>Webcam</strong>) Hardware in <strong>Linux</strong> 6
source, so you may find more up−to−date information through the previous link. If you can't find an entry for<br />
your particular hardware, you can find links to resources on how to write your own driver!<br />
It is important to note that if your camera isn't listed, the easiest way to find out if your camera is<br />
supported is to find out what chipset is used in its manufacture.<br />
This information is usually present in the specifications published in your webcam's manual or on the<br />
manufacturer's website.<br />
If you can't find your camera model listed and aren't sure what chipset your camera is made with, you should<br />
consider searching and/or subscribing to the video4linux−list mailing list hosted by Redhat.<br />
2.3.1. 3com HomeConnect PC Digital <strong>Webcam</strong><br />
This driver is supported with the kernel patch located at the homeconnectusb project web page. It may require<br />
a kernel recompile after patching depending on your kernel version.<br />
2.3.2. CPiA based <strong>Webcam</strong>s<br />
Please see the project home page for up−to−date information. This chipset has been used in the manufacture<br />
of both USB and parallel port webcams including the following:<br />
• Aiptek HyperVcam Fun USB (non−OV511 based)<br />
• Creative Video Blaster WebCam II USB and parallel−port<br />
• CVideo−Mail Express parallel−port<br />
• Digicom Galileo USB and Digicom Galileo Plus<br />
• Dynalink Digital Camera<br />
• Ezonics EZCam (not Pro or Plus)<br />
• I−View NetView NV200M<br />
• Microtek EyeStar USB<br />
• Pace Color Video Camera USB<br />
• SuperCam WonderEye<br />
• TCE Netcam 310 USB<br />
• Terracam USB (non−OV511 based or Terracam Pro)<br />
• Trust SpaceC@m Lite USB and SpaceC@m 100<br />
• Utopia USB Camera<br />
• ZoomCam USB and parallel−port<br />
2.3.3. SE401, SE402 and EP800 based USB webcams<br />
This project is a work in progress. <strong>The</strong> drivers and other useful information are available at the project<br />
homepage located here. As of writing this, it is necessary to patch and recompile your kernel in order to obtain<br />
support for these models. <strong>The</strong> driver supports the following:<br />
SE401 chipset via the 'se401' driver:<br />
<strong>The</strong> <strong>Webcam</strong> <strong>HOWTO</strong><br />
• Aox SE401 camera<br />
• Philips PCVC665 USB VGA webcam 'Vesta Fun'<br />
• Kensington VideoCAM PC Camera (Models 67014−67017)<br />
2. Enabling Support for Your (<strong>Webcam</strong>) Hardware in <strong>Linux</strong> 7
SE402 and EP 800 chipsets via the 'epcam' driver<br />
• Spypen Actor<br />
• Rimax Slim Multicam<br />
• Concord Eye−Q Easy<br />
• Creative PD1001<br />
• Chicony DC−100<br />
• Endpoints SE402 and EP800<br />
2.3.4. OmniVision based <strong>Webcam</strong>s<br />
<strong>The</strong> <strong>Webcam</strong> <strong>HOWTO</strong><br />
This category includes a multitude of webcam and video−capture devices manufactured by Omnivision,<br />
including the OV511(+), OV518(+), OV6620, OV6630, OV7610, and OV7620AE. <strong>The</strong> project homepage is<br />
here. Supported models include:<br />
• Aiptek HyperVcam Home and Mobile<br />
• Amitech AWK−300<br />
• I−view NetView NV300M<br />
• TEVion MD9308<br />
• Intel Me2Cam<br />
• Dlink DSB C100, C300<br />
• Hawking Tech. UC−110, UC−300 and UC−310<br />
• Puretek PT−6007<br />
• Alpha Vision Tech AlphaCam SE model AC−520<br />
• Creative Labs WebCam model PD1001 with OV518 chipset<br />
• Creative Labs WebCam 3, WebCam Go, <strong>Webcam</strong> Go Plus<br />
• Elecom UCAM−C1C20<br />
• Elta WEBCam 8211 PCC<br />
• Ezonics EZPhone Cam<br />
• Philips ToUCam XS (old version with OV518)<br />
• LG Electronics LPC−UM10<br />
• Lifeview various USB Life TV models<br />
• Genius VideoCam Express<br />
• AverMedia Intercam Elite<br />
• Maxxtro Cam22U<br />
• MediaForte MV300, PC Vision 300<br />
• Terratec TerraCam PRO and some TerraCam models<br />
• OmniVision (except those with OV519)<br />
• TRENDNet TV−PC301<br />
• Trust Sp@ceC@m USB<br />
• Lifetec LT9388<br />
• BestBuy EasyCam U<br />
• Maxell Maxcam<br />
• TCE NetCam 310u<br />
• Medion MD9388<br />
• Webeye 2000B<br />
• Suma eON<br />
• Prochips PCA−3100<br />
• Ezonics EZ USB Cam II (the OV511+ models)<br />
• Waytech I−Pac VIC−30<br />
2. Enabling Support for Your (<strong>Webcam</strong>) Hardware in <strong>Linux</strong> 8
• Zoom Telephonics ZoomCam III USB (model 1598)<br />
2.3.5. Logitech (formerly Connectix) Quickcam Support<br />
<strong>The</strong> QuickCam VC USB and parallel port model webcams are supported by the driver offered here. A kernel<br />
patch and recompile are necessary for support of this model.<br />
<strong>The</strong> Quickcam driver is represented by two different projects that offer two different flavors of driver for<br />
certain Quickcam models, both of which are stand−alone drivers that do not require a kernel patch or<br />
recompile. <strong>The</strong> qce−ga and qc−usb drivers support the following models:<br />
• Logitech (earlier models of) Quickcam Express<br />
• Quickcam Web<br />
• Legocam<br />
• Dexxa <strong>Webcam</strong><br />
• Labtec <strong>Webcam</strong><br />
<strong>The</strong> qc−usb driver is more experimental but reportedly works better on some models such as the Quickcam<br />
Web. Also, I have recieved correspondence that newer versions of the Logitech Quickcam Express no longer<br />
work with the above drivers; instead this page offers an experimental driver that claims to support the newer<br />
model.<br />
Note to Redhat users: <strong>The</strong> qce−ga driver doesn't compile properly using the modified kernel source provided<br />
in Redhat 9, but a fix is available here.<br />
Some Logitech camera models are supported by the Philips driver in Section 2.3.8.<br />
2.3.6. ICM532 Based <strong>Webcam</strong>s<br />
<strong>The</strong> <strong>Webcam</strong> <strong>HOWTO</strong><br />
One driver for this chipset, homepage here, is now merged into the 2.6 kernel source; the other is (per the<br />
developer's own description) experimental and available here. Either or both claim to support the following<br />
models:<br />
• IC−Media Corp Pencam<br />
• Newer versions of the Logitech Quickcam Express<br />
• Newer versions of the Labtec <strong>Webcam</strong><br />
• Biolux 654 microscope<br />
• Ezonics EZCam USB II (uvt8532)<br />
• Ezonics EZCam USB III<br />
• TerraCam USB<br />
• Stick <strong>Webcam</strong><br />
• Mini WebCam<br />
• Tucan PenCam<br />
• Che−ez! Webbie<br />
• SNAKE EYE SI−8480/8481<br />
• PC CAM CP03<br />
• WEB Camera PBC0006<br />
• Clipcam<br />
2. Enabling Support for Your (<strong>Webcam</strong>) Hardware in <strong>Linux</strong> 9
2.3.7. NW802 Based <strong>Webcam</strong>s<br />
This chipset, manufactured by DIVIO, is supported by the driver found here. <strong>The</strong> models supported include<br />
the following:<br />
• BTC SurfCam CMOS300k<br />
• Mustek WCam 300<br />
• Logitech QuickCam Pro USB (the earlier "dark focus ring" model)<br />
2.3.8. Philips USB <strong>Webcam</strong>s<br />
<strong>The</strong> <strong>Webcam</strong> <strong>HOWTO</strong><br />
Because of the expiration of the Non−Disclosure−Agreement between Philips Corporation and the former<br />
maintainer of the pwc driver, the previous kernel support for Philips PWC−chip−based webcams has been<br />
removed. Luckily a new, still experimental driver that does not require a proprietary module is under<br />
development. <strong>The</strong> old site, with a discussion of the change, can be seen at<br />
http://www.smcc.demon.nl/webcam/; the new driver is maintained at saillard.org with more information at the<br />
PWC <strong>Documentation</strong> <strong>Project</strong>.<br />
Philips models supported by the above include the following.<br />
• PCA645VC<br />
• PCA646VC<br />
• PCVC675K Vesta, Vesta Pro and Vesta Scan<br />
• PCVC720K/40 ToUCam XS, ToUCam Fun, ToUCam Pro and ToUCam Scan<br />
• Askey VC010<br />
• Creative Labs <strong>Webcam</strong> 5, Pro Ex<br />
• Logitech 3000 and 4000 Pro, Notebook Pro, and Zoom<br />
• Samsung MPC−C10 and MPC−C30<br />
• Sotec Afina Eye<br />
• Visionite VCS UM100 and UC300<br />
2.3.9. SPCA50X USB Camera <strong>Linux</strong> Driver<br />
Information regarding this chipset can be found here, and is under heavy development and includes partial or<br />
complete support for the following models:<br />
• Kodak DVC−325 and EZ200<br />
• Creative PC−CAM 300, 600, 750<br />
• Genius VideoCAM Express V2<br />
• Micro Innovation IC 200/IC 150<br />
• Logitech ClickSmart 310, 420, 510, 820 and Cordless models<br />
• Logitech Pocket750<br />
• Benq DC 1016, 1300, 1500, 3410<br />
• Flexcam 100<br />
• Aiptek MegaCam, [1.3 Megapixel] Mini PenCam and PocketCam 1.3M Smart<br />
• Finet Technology Palmpix DC−85<br />
• Pure DigitalDakota<br />
• 3Com Home Connect lite<br />
• Megapix V4<br />
• Mustek gSmart: Mini, Mini2, Mini3, LCD 2, LCD 3<br />
2. Enabling Support for Your (<strong>Webcam</strong>) Hardware in <strong>Linux</strong> 10
• Digital Dream Enigma 1.3, Epsilon 1.3<br />
• Maxwell Compact Pc PM3<br />
• Jenoptik models<br />
• Minton S−Cam F5<br />
• D−Link DSC−350<br />
• Trust FamilyC@m 300 Movie<br />
• Aiptek Pocket DV, PocketDVII, DV3100+, mini PenCam 2, PocketCam 3M, Pencam SD 2, Pocket<br />
DV3500<br />
• Hama Sightcam 100<br />
• Micro Innovations IC50C, IC400c<br />
• FlyCam USB100<br />
• Arowana USB Camera 300 K<br />
• Intel Easy PC Camera, CS120 (Easy PC Share), PC Camera Pro (CS431), Pocket PC Camera (CS630)<br />
• Grandtec V.cap<br />
• Sigma−Apo Petcam<br />
2.3.10. STV0680 based Models<br />
<strong>The</strong> USB version of webcams made with this chipset are supported by the 2.4.18 and above kernel with the<br />
stv680.o module. Alternatively, you can obtain the source from the project homepage. This driver supports<br />
models including the Aiptek Pencam and the Nisis Quickpix 2.<br />
If you have a serial version, the main one of which is the Scan e−Studio, you should go here.<br />
2.3.11. Winbond w9966cf<br />
<strong>The</strong> <strong>Webcam</strong> <strong>HOWTO</strong><br />
This is a driver for the parallel−port interface that supports the Philips SAA7111 CCD−control chip as found<br />
on the Lifeview Flycam SUPRA webcam. It is included in the late 2.4 kernel series and later under the<br />
heading 'video4linux' support. <strong>The</strong> homepage for this project is here.<br />
2.3.12. Xirlink C−it" HDCS−1000 based <strong>Webcam</strong>s<br />
This driver is for the USB webcams manufactured by Xirlink, IBM (PC Camera) and Veo Stingray model<br />
webcams. Support has been in the <strong>Linux</strong> kernel USB section since 2.2.12. <strong>The</strong> homepage is at<br />
http://www.linux−usb.org/ibmcam.<br />
2. Enabling Support for Your (<strong>Webcam</strong>) Hardware in <strong>Linux</strong> 11
3. Accessing the Video Device<br />
<strong>The</strong> following section applies to all connection types.<br />
3.1. <strong>The</strong> Video Devices Node<br />
<strong>The</strong> <strong>Linux</strong> kernel requires a virtual device node be created to access and control the device in question. It may<br />
have already been created for you at boot−up; ls −l /dev/video* (with an asterisk) or alternatively find /dev<br />
−name video* or even visual inspection of the /dev directory with your favorite file manager can give you<br />
an idea if the video devices exist. If so you can proceed to Section 3.2; if not you will need to create them<br />
manually.<br />
An easy way to create them, if available with your <strong>Linux</strong> distribution, is use of the MAKEDEV script, which<br />
may be located in /dev or the usual places for storing executable commands (/bin,/sbin and so on). <strong>The</strong><br />
manual page for MAKEDEV (man MAKEDEV) can guide you further, but be aware of the device−specific<br />
command options. If MAKEDEV doesn't work or doesn't exist, or you just prefer doing things the hard way,<br />
move on to the next paragraph.<br />
A device can be created as a block (such as a drive), a fifo (file−in−file−out or pipe, as in xconsole) or a<br />
character device, which represents other hardware. Each device has a major and a minor number "coordinate"<br />
to tell the kernel what it is and where to access it. <strong>The</strong>se numbers are not arbitrary. <strong>The</strong> major number 81 with<br />
minor number 0, 1, 2, and so on are by convention assigned to Video4linux devices, including TV tuner<br />
boards and webcams. In order to create the video device /dev/video0, use mknod at the command line:<br />
# mknod /dev/video0 c 81 0<br />
where c represents a character device.<br />
You can use the following script, which I have borrowed from the kernel source (located in<br />
linux/<strong>Documentation</strong>/video4linux/bttv/MAKEDEV of the source tree):<br />
#!/bin/bash<br />
function makedev () {<br />
for dev in 0 1 2 3; do echo "/dev/$1$dev:<br />
char 81 $[ $2 + $dev ]" rm −f /dev/$1$dev<br />
mknod /dev/$1$dev c 81 $[ $2 + $dev ] chmod<br />
666 /dev/$1$dev<br />
done<br />
# symlink for default device<br />
rm −f /dev/$1 ln −s /dev/${1}0 /dev/$1<br />
}<br />
# see http://roadrunner.swansea.uk.linux.org/v4lapi.shtml<br />
echo "*** new device names ***" makedev video<br />
0 makedev radio 64 makedev vtx 192 makedev vbi 224<br />
# "*** old device names (for compatibility only) ***"<br />
#makedev bttv 0 #makedev bttv−fm 64 #makedev bttv−vbi 224<br />
Simply copy and paste the above into your favorite editing program, save it as MAKEDEV or whatever name<br />
you like, make it executable (i.e., chmod u+x MAKEDEV), and then execute it as root:<br />
# ./MAKEDEV<br />
3. Accessing the Video Device 12
3.2. Groups and Permissions<br />
<strong>The</strong> <strong>Webcam</strong> <strong>HOWTO</strong><br />
It is a good idea to be sure that your user account can access the device once all modules are loaded and<br />
device nodes created. <strong>The</strong> most security−conscious way to do that is to add access for a particular group. On<br />
my system, the members of the group 'video' are allowed to use the webcam, scanner and other photographic<br />
devices. <strong>The</strong> way to accomplish this is to first change the ownership of the devices in /dev like so (as root):<br />
# chown root.video /dev/usb/video*<br />
...where root.video are the owner and group the device will now belong to. Obviously, the specific command<br />
will vary by your system and the type of device. It is important that you change the ownership of the device<br />
node itself and not the symlink; symlinks' ownerships are affected only by changing the parent devices or files<br />
they point to.<br />
To see if your user account is a member of the group in question, as root issue the following command: grep<br />
−e video /etc/group. You should see something like the following:<br />
video:x:44:<br />
...where '44' is the group number. Since no members follow the last colon in the 'video' group, we can add<br />
them, let's say user 'jhs' with the command<br />
# adduser jhs video<br />
After this, it's simply a matter of allowing read and write access for the user in question of the device like so:<br />
# chmod g+rw /dev/v4l/video0<br />
...where g+rw means add read and write access for group. See the documentation for chmod (man chmod or<br />
info chmod) for further info.<br />
3. Accessing the Video Device 13
4. Framegrabbing Applications<br />
4.1. Command Line Programs<br />
As implied by the title these do not require the X Window System to operate your camera and capture images.<br />
4.1.1. Streamer<br />
Streamer is a versatile program that allows a capture from a webcam or video device using only the command<br />
line. It may be offered in your <strong>Linux</strong> distribution's Xawtv package, or may need to be fetched separately as in<br />
Debian. You can find it and more information at Gerd Knorr's Xawtv homepage.<br />
To take a standard JPEG picture from the command line where the camera is accessed through<br />
/dev/video0:<br />
$ streamer −c /dev/video0 −b 16 −o outfile.jpeg<br />
...where −b is the number of colors (in bpp, whether 15, 16, 24 or 32) and −o is the output filename that will<br />
be dropped into the current directory (specify −o /path/outfile.jpg to place it elsewhere). If you are<br />
going to capture multiple images be sure to append the output file name with zeros, as streamer can name the<br />
capture files in sequence, i.e., −o outfile000.jpeg becomes outfile001.jpeg,<br />
outfile002.jpeg, and so on.<br />
To make an .avi file:<br />
$ streamer −q −c /dev/video0 −f rgb24 −r 3 −t 00:30:00 −o /home/jhs/outfile.avi<br />
...where −q is for 'quiet' execution (no message output), −f is 'format' (rgb24 is TrueColor avi), −r is the<br />
frames per second and −t is the time of recording (30 minutes). Streamer can capture raw and Quicktime"<br />
(non−Sorensen) formats and can capture audio as well. See streamer −−help for more information.<br />
4.1.2. camE<br />
CamE is a command−line program that works in daemon mode to capture frames from your v4l device for<br />
archive or upload (to a webserver, for example) via ftp or scp. You can overlay other graphics, timestamp the<br />
frames, or add other dynamic text all by altering the appropriate line in the configuration file. See the camE<br />
homepage for more information.<br />
4.1.3. Motion<br />
Motion is a brilliant program that is able to monitor the video signal from one or several webcams. It can<br />
record periodic snapshots, and when motion is detected, record an mpeg and/or perform another action such as<br />
sending an email or executing a command. It can track and graphically mark the motion it detects, feed files<br />
via an http server to your website, stream them to another application and more. <strong>The</strong> number of command line<br />
options may be intimidating; there is however, a Wiki available online that outlines the various command and<br />
configuration file options nicely. <strong>The</strong> motion homepage can be found here.<br />
4. Framegrabbing Applications 14
4.1.4. <strong>Webcam</strong><br />
<strong>Webcam</strong> is an automated command line tool for operating a webcam that is also available from the Xawtv<br />
homepage. It is excellent for automated operation such as from a cron job, as it requires no command line<br />
options, only a previously edited configuration file (usually ~/.webcamrc). It is similar to camE above in<br />
that one can captures images and upload them to a Web−Server via ftp or ssh.<br />
4.1.5. SANE<br />
SANE, or Scanner Access Now Easy, supports access of v4l devices including webcams in later versions. If<br />
you are familiar with using a photographic scanner device in <strong>Linux</strong>, you may be interested in using SANE for<br />
image capture, especially since a few devices double as both scanners and digital cameras. See the relevant<br />
sections of the Scanner−<strong>HOWTO</strong> here.<br />
4.2. GUI(Grapical User Interface)−Based Programs<br />
4.2.1. Xawtv<br />
Xawtv is an X−based program for accessing video devices in <strong>Linux</strong> including TV tuning devices and<br />
webcams. <strong>The</strong> home page is at http://bytesex.org/xawtv.<br />
When you first try out your webcam, and you think things are configured right, use the −hwscan option:<br />
$ xawtv −hwscan This is xawtv−3.72, running on <strong>Linux</strong>/i686 (2.4.21) looking for available devi<br />
/dev/v4l/video0: OK [ −device /dev/v4l/video0 ] type : v4l name : BT878(Hauppauge (bt<br />
/dev/v4l/video1: OK [ −device /dev/v4l/video1 ] type : v4l name : IBM USB Camera<br />
...so now you can see the available devices (your output may differ substantially). Try opening an xterm and<br />
running xawtv, grabbing from your webcam video device:<br />
$ xawtv −c /dev/video1 This is xawtv−3.72, running on <strong>Linux</strong>/i686 (2.4.21)<br />
...and (hopefully) your camera will begin capturing to a window on your desktop. You may see some error<br />
messages in your xterm if things don't work that can be helpful to diagnose configuration problems. If you<br />
aren't interested in all that, and things work for you, launch from your window manager's menu next time.<br />
You can read about more xawtv options with man xawtv.<br />
4.2.2. Gqcam<br />
Gqcam is a graphical GTK+−based application originally written to access Connectix QuickCams but now<br />
supports nearly all Video4<strong>Linux</strong> compatible webcam devices. It has an intuitive interface that makes viewing,<br />
taking snapshots, and configuring webcam settings blissfully easy. It is highly recommended for those who<br />
only want to take a picture here and there without editing a configuration file or using the command line.<br />
4.2.3. Camorama<br />
<strong>The</strong> <strong>Webcam</strong> <strong>HOWTO</strong><br />
Camorama is a graphical GTK+2.0−based application very similar to gqcam written for the Gnome2 desktop.<br />
<strong>The</strong> home page is here.<br />
4. Framegrabbing Applications 15
4.2.4. GnomeMeeting<br />
<strong>The</strong> <strong>Webcam</strong> <strong>HOWTO</strong><br />
GnomeMeeting is a VOIP/IP−Telephony application for the Gnome2 desktop that also supports<br />
videoconferencing with a webcam. <strong>The</strong> homepage can be found at gnomemeeting.org.<br />
4. Framegrabbing Applications 16
5. Troubleshooting<br />
5.1. Help, I have a USB webcam and don't know exactly<br />
what model it is and/or who the manufacturer is. What do I<br />
do?<br />
Use lsusb; it can give you an idea of what other USB devices are available on your system, too:<br />
$ lsusb<br />
Bus 007 Device 001: ID 0000:0000<br />
Bus 006 Device 001: ID 0000:0000<br />
Bus 005 Device 001: ID 0000:0000<br />
Bus 004 Device 001: ID 0000:0000<br />
Bus 003 Device 003: ID 0545:8080 Xirlink, Inc. IBM C−It WebCam<br />
Bus 003 Device 002: ID 046d:0840 Logitech, Inc. QuickCam Express<br />
Bus 003 Device 001: ID 0000:0000<br />
Bus 002 Device 003: ID 051d:0002 American Power Conversion Back−UPS Pro 500/1000/1500<br />
Bus 002 Device 001: ID 0000:0000<br />
Bus 001 Device 001: ID 0000:0000<br />
<strong>The</strong> numbers after 'ID' are the Vendor and Product numbers, respectively. <strong>The</strong>y can then be looked up in the<br />
<strong>Linux</strong> USB ID catalog.<br />
If lsusb is not available to you, and you have support for /proc filesystem support and USB−filesystem<br />
support, issue the following at the command line:<br />
$ cat /proc/bus/usb/devices<br />
You should receive output including (but not necessarily limited to) the following:<br />
T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=3 Spd=12 MxCh=0<br />
D: Ver= 1.01 Cls=ff(vend.) Sub=ff Prot=ff MxPS=8 #Cfgs=1<br />
P: Vendor=0545 ProdID=8080 Rev= 3.0a<br />
S: Product=USB IMAGING DEVICE<br />
<strong>The</strong> line beginning "T:" is the USB bus the device is attached to. <strong>The</strong> "P:" indicates (obviously) the vendor<br />
and product ID, which are catalogued at the linux USB <strong>Project</strong> homepage.<br />
5.2. Help, I can't find the camera device in /dev!<br />
Assuming your connection type is supported, and your camera is working, see Section 3.1.<br />
5.3. Help, I can see the camera device (both in person and<br />
as a device node in /dev), but I can't access it!<br />
See Section 3.2.<br />
5. Troubleshooting 17
5.4. Help, my camera has a driver that is source−only, i.e.,<br />
has to be built by me! Where do I start?<br />
First, check if your <strong>Linux</strong> distribution offers a pre−compiled binary of the driver. You can then load it as you<br />
normally would for a module. If that is not the case, be sure you have kernel sources installed. You will also<br />
need at a minimum GNU make, gcc, binutils and perhaps other programs installed depending on your<br />
distribution. (Debian users should see the next section for instructions specific to that distribution.)<br />
Download the driver source (in this example named src.tar.gz) and uncompress/untar it:<br />
$ tar −xvzf src.tar.gz<br />
<strong>The</strong>n, change to the directory of your kernel source:<br />
# cd /usr/src/linux<br />
Make the necessary source files:<br />
# make oldconfig # make dep<br />
Now, change to the directory where you unpacked the driver source and read the README and/or INSTALL<br />
files for instructions on how to make the driver. Usually this involves some combination of "make" "make all"<br />
and/or "make install." Assuming it compiles correctly, you can simply load the new module with modprobe.<br />
If you have any problems, see Section 5.7.<br />
5.5. I am using Debian GNU/<strong>Linux</strong>. Is there an easier way to<br />
go through all this kernel compiling stuff and building of<br />
source modules?<br />
It is far simpler, in your author's humble opinion, to use the automated kernel−package utility. First,<br />
install it and the dependencies using apt−get. Next, install the kernel source that you want (e.g., apt−get<br />
install kernel−source−2.X.X). Untar the bzip2'd kernel source with tar −xvjf and then make a symbolic link<br />
called linux that points to the new source:<br />
# ln −s /usr/src/kernel−source−2.X.X /usr/src/linux<br />
<strong>The</strong>n cd /usr/src/linux and clean: make−kpkg clean, followed by make menuconfig or make xconfig as<br />
you would if compiling a new kernel. Next, you can use make−kpkg kernel_image and then install your new<br />
kernel package that has been deposited in /usr/src with dpkg −i ../kernel−image−2.X.X. Next, you can<br />
get the pre−packaged source driver using apt. So, in the case of the Quickcam Express, the package is<br />
qc−usb−source:<br />
# apt−get install qc−usb−source<br />
...and untar the archive:<br />
# tar −xvzf qc−usb−modules.tar.gz<br />
This will uncompress the source into the /usr/src/modules directory. <strong>The</strong> final step, while still in<br />
/usr/src/linux is to make the modules with kernel−package:<br />
# make−kpkg modules_image<br />
<strong>The</strong> <strong>Webcam</strong> <strong>HOWTO</strong><br />
5. Troubleshooting 18
Install the new package, in /usr/src/, called qc−usb−modules−[arch].deb using dpkg −i. Finally,<br />
load the module:<br />
# modprobe quickcam<br />
Check the documentation in /usr/share/doc/kernel−package for any problems.<br />
5.6. Help, my camera is supported by a driver that has to be<br />
patched into my kernel! What do I do?<br />
See the section on patching of the Kernel−<strong>HOWTO</strong> at <strong>The</strong> <strong>Linux</strong> <strong>Documentation</strong> <strong>Project</strong>.<br />
<strong>The</strong> short and unguaranteed version of patching, by your humble author, goes as follows: Be sure you have<br />
the same prerequisites outlined in Section 5.4 installed. First, on the command line or in an xterm change to<br />
the source directory of the kernel version you are (or will be) running with the camera patch (in this example<br />
named patch.diff).<br />
# cd /usr/src/linux<br />
# patch −p1 −E patch.diff<br />
You should see a confirmation that the 'hunks' were successfully applied. At this point, you can make<br />
menuconfig or whatever program you use to recompile, enabling the appropriate support. If any of the hunks<br />
failed, or you run into any problems in addition to the link referenced above you, should consult man patch<br />
and Section 5.7.<br />
5.7. Help−−as in, where can I get more of it?<br />
See the video4linux mailing list headquarters at https://listman.redhat.com/mailman/listinfo/video4linux−list.<br />
5.8. Help, I want to contribute to Video4<strong>Linux</strong> support in<br />
<strong>Linux</strong>! Who do I get in touch with?<br />
See this page.<br />
<strong>The</strong> <strong>Webcam</strong> <strong>HOWTO</strong><br />
5. Troubleshooting 19
A. Gnu Free <strong>Documentation</strong> License<br />
Version 1.2, November 2002<br />
Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA<br />
02111−1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document but<br />
changing it is not allowed.<br />
0. PREAMBLE<br />
<strong>The</strong> purpose of this License is to make a manual, textbook, or other functional and useful document "free" in<br />
the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without<br />
modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and<br />
publisher a way to get credit for their work, while not being considered responsible for modifications made by<br />
others.<br />
This License is a kind of "copyleft", which means that derivative works of the document must themselves be<br />
free in the same sense. It complements the GNU General Public License, which is a copyleft cense designed<br />
for free software.<br />
We have designed this License in order to use it for manuals for free software, because free software needs<br />
free documentation: a free program should come with manuals providing the same freedoms that the software<br />
does. But this License is not limited to software manuals; it can be used for any textual work, regardless of<br />
subject matter or whether it is published as a printed book. We recommend this License principally for works<br />
in which its purpose is instruction or reference.<br />
1. APPLICABILITY AND DEFINITIONS<br />
This License applies to any manual or other work, in any medium, that contains a notice placed by the<br />
copyright holder saying it can be distributed under the terms of this License. Such a notice grants a<br />
world−wide, royalty−free license, unlimited in duration, to use that work under the conditions stated herein.<br />
<strong>The</strong> "Document", below, refers to any such manual or work. Any member of the public is a licensee and is<br />
addressed as "you". You accept the license if you copy, modify, or distribute the work in a way, thus requiring<br />
permission under copyright law.<br />
A "Modified Version" of the Document means any work containing the Document or a portion of it, either<br />
copied verbatim, or with modifications and/or translated into another language.<br />
A "Secondary Section" is a named appendix or a front−matter section of the Document that deals exclusively<br />
with the relationship of the publishers or authors of the Document to the Document's overall subject (or to<br />
related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the<br />
Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) <strong>The</strong><br />
relationship could be a matter of historical connection with the subject or with related matters, or of legal,<br />
commercial, philosophical, ethical, or political position regarding them.<br />
<strong>The</strong> "Invariant Sections" are certain Secondary Sections in which titles are designated, as being those of<br />
Invariant Sections, in the notice that says that the Document is released under this License. If a section does<br />
not fit the above definition of Secondary, then it is not allowed to be designated as Invariant. <strong>The</strong> Document<br />
may contain zero Invariant Sections. If the Document does not identify any Invariant Sections, then there are<br />
none.<br />
A. Gnu Free <strong>Documentation</strong> License 20
<strong>The</strong> "Cover Texts" are certain short passages of text that are listed, as Front−Cover Texts or Back−Cover<br />
Texts, in the notice that says that the Document is released under this License. A Front−Cover Text may be at<br />
most five words, and a Back−Cover Text may be at most 25 words.<br />
A "Transparent" copy of the Document means a machine−readable copy, represented in a format where its<br />
specification is available to the general public, that is suitable for revising the document straightforwardly<br />
with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some<br />
widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to<br />
a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format<br />
in which its markup, or absence of markup, has been arranged to thwart or discourage subsequent<br />
modification by readers is not Transparent. An image format is not Transparent if used for any substantial<br />
amount of text. A copy that is not "Transparent" is called "Opaque".<br />
Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input<br />
format, LaTeX input format, SGML or XML using a publicly available DTD, and standard−conforming<br />
simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats<br />
include PNG, XCF, and JPG. Opaque formats include proprietary formats that can be read and edited only by<br />
proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally<br />
available, and the machine−generated HTML, PostScript or PDF produced by some word processors for<br />
output purposes only.<br />
<strong>The</strong> "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to<br />
hold, legibly, the material this License requires to appear in the title page. For works in formats, which do not<br />
have any title page as such, "Title Page" means the text near the most prominent appearance of the work's<br />
title, preceding the beginning of the body of the text.<br />
A section "Entitled XYZ" means a named subunit of the Document in which its title either is precisely XYZ<br />
or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for<br />
a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or<br />
"History".) To "Preserve the Title" of such a section, when you modify the Document, means that it remains a<br />
section "Entitled XYZ", according to this definition.<br />
<strong>The</strong> Document may include Warranty Disclaimers next to the notice which states that this License applies to<br />
the Document. <strong>The</strong>se Warranty Disclaimers are considered to be included by reference in this License, but<br />
only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is<br />
void and has no effect on the meaning of this License.<br />
2. VERBATIM COPYING<br />
You may copy and distribute the Document in any medium, either commercially or noncommercially,<br />
provided that this License, the copyright notices, and the license notice saying this License applies to the<br />
Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this<br />
License. You may not use technical measures to obstruct or control the reading or further copying of the<br />
copies you make or distribute. However, you may accept compensation in exchange for copies. If you<br />
distribute a large enough number of copies you must also follow the conditions in section 3.<br />
You may also lend copies, under the same conditions stated above, and you may publicly display copies.<br />
3. COPYING IN QUANTITY<br />
<strong>The</strong> <strong>Webcam</strong> <strong>HOWTO</strong><br />
A. Gnu Free <strong>Documentation</strong> License 21
If you publish printed copies (or copies in media that commonly have printed covers) of the Document,<br />
numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the<br />
copies in covers that carry, clearly and legibly, all these Cover Texts: Front−Cover Texts on the front cover,<br />
and Back−Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the<br />
publisher of these copies. <strong>The</strong> front cover must present the full title with all words of the title equally<br />
prominent and visible. You may add other material on the covers in addition. Copying with changes limited to<br />
the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as<br />
verbatim copying in other respects.<br />
If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as<br />
many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.<br />
If you publish or distribute Opaque copies of the Document numbering more than 100, you must either<br />
include a machine−readable Transparent copy along with each Opaque copy, or state in or with each Opaque<br />
copy a computer−network location from which the general network−using public has access to download<br />
using public−standard network protocols a complete Transparent copy of the Document, free of added<br />
material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of<br />
Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated<br />
location until at least one year after the last time you distribute an Opaque copy (directly or through your<br />
agents or retailers) of that edition to the public.<br />
It is requested, but not required, that you contact the authors of the Document well before redistributing any<br />
large number of copies, to give them a chance to provide you with an updated version of the Document.<br />
4. MODIFICATIONS<br />
You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3<br />
above, provided that you release the Modified Version under precisely this License, with the Modified<br />
Version filling the role of the Document, thus licensing distribution and modification of the Modified Version<br />
to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:<br />
A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those<br />
of previous versions (which should, if there were any, be listed in the History section of the Document). You<br />
may use the same title as a previous version if the original publisher of that version gives permission.<br />
B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the<br />
modifications in the Modified Version, together with at least five of the principal authors of the Document (all<br />
of its principal authors, if it has fewer than five), unless they release you from this requirement.<br />
C. State on the Title page the name of the publisher of the Modified Version, as the publisher.<br />
D. Preserve all the copyright notices of the Document.<br />
<strong>The</strong> <strong>Webcam</strong> <strong>HOWTO</strong><br />
E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.<br />
F. Include, immediately after the copyright notices, a license notice giving the public permission to use the<br />
Modified Version under the terms of this License, in the form shown in the Addendum below.<br />
G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the<br />
Document's license notice.<br />
A. Gnu Free <strong>Documentation</strong> License 22
H. Include an unaltered copy of this License.<br />
I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year,<br />
new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled<br />
"History" in the Document, create one stating the title, year, authors, and publisher of the Document as given<br />
on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.<br />
J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the<br />
Document and likewise the network locations given in the Document for previous versions it was based on.<br />
<strong>The</strong>se may be placed in the "History" section. You may omit a network location for a work that was published<br />
at least four years before the Document itself, or if the original publisher of the version it refers to gives<br />
permission.<br />
K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and<br />
preserve in the section all the substance and tone of each of the contributor acknowledgements and/or<br />
dedications given therein.<br />
L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section<br />
numbers or the equivalent are not considered part of the section titles.<br />
M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version.<br />
N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant<br />
Section.<br />
O. Preserve any Warranty Disclaimers. If the Modified Version includes new front−matter sections or<br />
appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at<br />
your option designate some or all of these sections as invariant. To do this, add their titles to the list of<br />
Invariant Sections in the Modified Version's license notice. <strong>The</strong>se titles must be distinct from any other<br />
section titles. You may add a section Entitled "Endorsements", provided it contains nothing but endorsements<br />
of your Modified Version by various parties−−for example, statements of peer review or that the text has been<br />
approved by an organization as the authoritative definition of a standard.<br />
You may add a passage of up to five words as a Front−Cover Text, and a passage of up to 25 words as a<br />
Back−Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of<br />
Front−Cover Text and one of Back−Cover Text may be added by (or through arrangements made by) any one<br />
entity. If the Document already includes a cover text for the same cover, previously added by you or by<br />
arrangement made by the same entity you are acting on behalf of, you may not add another; but you may<br />
replace the old one, on explicit permission from the previous publisher that added the old one.<br />
<strong>The</strong> author(s) and publisher(s) of the Document do not by this License give permission to use their names for<br />
publicity for or to assert or imply endorsement of any Modified Version.<br />
5. COMBINING DOCUMENTS<br />
<strong>The</strong> <strong>Webcam</strong> <strong>HOWTO</strong><br />
You may combine the Document with other documents released under this License, under the terms defined<br />
in section 4 above for modified versions, provided that you include in the combination all of the Invariant<br />
Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined<br />
work in its license notice, and that you preserve all their Warranty Disclaimers.<br />
A. Gnu Free <strong>Documentation</strong> License 23
<strong>The</strong> combined work need only contain one copy of this License, and multiple identical Invariant Sections may<br />
be replaced with a single copy. If there are multiple Invariant Sections with the same name but different<br />
contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the<br />
original author or publisher of that section if known, or else a unique number. Make the same adjustment to<br />
the section titles in the list of Invariant Sections in the license notice of the combined work.<br />
In the combination, you must combine any sections Entitled "History" in the various original documents,<br />
forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any<br />
sections Entitled "Dedications". You must delete all sections Entitled "Endorsements".<br />
6. COLLECTIONS OF DOCUMENTS<br />
You may make a collection consisting of the Document and other documents released under this License, and<br />
replace the individual copies of this License in the various documents with a single copy that is included in<br />
the collection, provided that you follow the rules of this License for verbatim copying of each of the<br />
documents in all other respects.<br />
You may extract a single document from such a collection and distribute it individually under this License,<br />
provided you insert a copy of this License into the extracted document and follow this License in all other<br />
respects regarding verbatim copying of that document.<br />
7. AGGREGATION WITH INDEPENDENT WORKS<br />
A compilation of the Document or its derivatives with other separate and independent documents or works, in<br />
or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the<br />
compilation is not used to limit the legal rights of the compilation's users beyond what the individual works<br />
permit. When the Document is included in an aggregate, this License does not apply to the other works in the<br />
aggregate which are not themselves derivative works of the Document.<br />
If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document<br />
is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket<br />
the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic<br />
form. Otherwise, they must appear on printed covers that bracket the whole aggregate.<br />
8. TRANSLATION<br />
Translation is considered a kind of modification, so you may distribute translations of the Document under the<br />
terms of section 4. Replacing Invariant Sections with translations requires special permission from their<br />
copyright holders, but you may include translations of some or all Invariant Sections in addition to the<br />
original versions of these Invariant Sections. You may include a translation of this License, and all the license<br />
notices in the Document, and any Warranty Disclaimers, provided that you also include the original English<br />
version of this License and the original versions of those notices and disclaimers. In case of a disagreement<br />
between the translation and the original version of this License or a notice or disclaimer, the original version<br />
will prevail.<br />
If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement<br />
(section 4) to Preserve its Title (section 1) will typically require changing the actual title.<br />
9. TERMINATION<br />
<strong>The</strong> <strong>Webcam</strong> <strong>HOWTO</strong><br />
A. Gnu Free <strong>Documentation</strong> License 24
You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this<br />
License. Any other attempt to copy, modify, sublicense, or distribute the Document is void and will<br />
automatically terminate your rights under this License. However, parties who have received copies, or rights,<br />
from you under this License will not have their licenses terminated so long as such parties remain in full<br />
compliance.<br />
10. FUTURE REVISIONS OF THIS LICENSE<br />
<strong>The</strong> <strong>Webcam</strong> <strong>HOWTO</strong><br />
<strong>The</strong> Free Software Foundation may publish new, revised versions of the GNU Free <strong>Documentation</strong> License<br />
from time to time. Such new versions will be similar in spirit to the present version but may differ in detail to<br />
address new problems or concerns. See http://www.gnu.org/copyleft/.<br />
Each version of the License is given a distinguishing version number. If the Document specifies that a<br />
particular numbered version of this License "or any later version" applies to it, you have the option of<br />
following the terms and conditions either of that specified version or of any later version that has been<br />
published (not as a draft) by the Free Software Foundation. If the Document does not specify a version<br />
number of this License, you may choose any version ever published (not as a draft) by the Free Software<br />
Foundation.<br />
ADDENDUM: How to use this License for your documents<br />
To use this License in a document you have written, include a copy of the License in the document and put the<br />
following copyright and license notices just after the title page:<br />
Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute, and/or modify this document<br />
under the terms of the GNU Free <strong>Documentation</strong> License, Version 1.2 or any later version published by the<br />
Free Software Foundation; with no Invariant Sections, no Front−Cover Texts, and no Back−Cover Texts. A<br />
copy of the license is included in the section entitled "GNU Free <strong>Documentation</strong> License".<br />
If you have Invariant Sections, Front−Cover Texts and Back−Cover Texts, replace the "with...Texts." line<br />
with this: with the Invariant Sections being LIST THEIR TITLES, with the Front−Cover Texts being LIST,<br />
and with the Back−Cover Texts being LIST. If you have Invariant Sections without Cover Texts, or some<br />
other combination of the three, merge those two alternatives to suit the situation.<br />
If your document contains nontrivial examples of program code, we recommend releasing these examples in<br />
parallel under your choice of free software license, such as the GNU General Public License, to permit their<br />
use in free software.<br />
A. Gnu Free <strong>Documentation</strong> License 25