5. Troubleshooting
5.1. Help, I have a USB webcam and don't know exactly what model it is and/or who the manufacturer is. What do I do?
Use lsusb; it can give you an idea of what other USB devices are available on your system, too:
$ lsusb
Bus 007 Device 001: ID 0000:0000
Bus 006 Device 001: ID 0000:0000
Bus 005 Device 001: ID 0000:0000
Bus 004 Device 001: ID 0000:0000
Bus 003 Device 003: ID 0545:8080 Xirlink, Inc. IBM C-It WebCam
Bus 003 Device 002: ID 046d:0840 Logitech, Inc. QuickCam Express
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 003: ID 051d:0002 American Power Conversion Back-UPS Pro 500/1000/1500
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000 |
The numbers after 'ID' are the Vendor and Product numbers, respectively. They can then be looked up in the Linux USB ID catalog.
If lsusb is not available to you, and you have support for /proc filesystem support and USB-filesystem
support, issue the following at the command line:
$ cat /proc/bus/usb/devices |
You should receive output including (but not necessarily limited
to) the following:
T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=3 Spd=12 MxCh=0
D: Ver= 1.01 Cls=ff(vend.) Sub=ff Prot=ff MxPS=8 #Cfgs=1
P: Vendor=0545 ProdID=8080 Rev= 3.0a
S: Product=USB IMAGING DEVICE |
The line beginning "T:" is the USB bus the
device is attached to.
The "P:" indicates (obviously) the vendor and product ID,
which are catalogued at the linux
USB Project homepage.
5.2. Help, I can't find the camera device in
/dev!
Assuming your connection type
is supported, and your camera is working, see Section 3.1.
5.3. Help, I can see the camera device (both in person and as a device node in /dev), but I
can't access it!
See Section 3.2.
5.4. Help, my camera has a driver that is source-only,
i.e., has to be built by me! Where do I start?
First, check
if your Linux distribution offers a pre-compiled binary of the driver. You
can then load it as you normally would for a module.
If that is not the case, be sure you have kernel sources installed.
You will also need at a minimum GNU make, gcc, binutils and perhaps
other programs installed depending on your distribution.
(Debian users should see the next section for instructions specific
to that distribution.)
Download the driver source (in this example named
src.tar.gz) and uncompress/untar it:
Then, change to the directory of your kernel source:
Make the necessary source files:
# make oldconfig # make dep |
Now, change to the directory where you unpacked the driver source and
read the README and/or INSTALL files for instructions on how to make
the driver.
Usually this involves some combination of "make" "make all" and/or
"make install."
Assuming it compiles correctly, you can simply load the new module with
modprobe.
If you have any problems, see Section 5.7.
5.5. I am using Debian GNU/Linux. Is there an easier way to go through all this kernel compiling stuff and building of source modules?
It is far simpler, in your author's humble opinion, to use the automated kernel-package utility.
First, install it and the dependencies using apt-get. Next,
install the kernel source that you want (e.g., apt-get install
kernel-source-2.X.X). Untar the bzip2'd kernel source with tar
-xvjf and then make a symbolic link called linux that points to the new source:
# ln -s /usr/src/kernel-source-2.X.X /usr/src/linux
|
Then cd /usr/src/linux and clean: make-kpkg clean, followed
by make menuconfig or make xconfig as you would if compiling
a new kernel. Next, you can use make-kpkg kernel_image and then install your new
kernel package that has been deposited in /usr/src with dpkg -i ../kernel-image-2.X.X. Next, you can get the pre-packaged
source driver using apt. So, in the case of the Quickcam Express, the package is qc-usb-source:
# apt-get install qc-usb-source |
...and untar the archive:
# tar -xvzf qc-usb-modules.tar.gz |
This will uncompress the source into the /usr/src/modules directory. The final step, while still in /usr/src/linux is to make the modules with kernel-package:
# make-kpkg modules_image |
Install the new package, in /usr/src/, called qc-usb-modules-[arch].deb using dpkg -i. Finally, load the module:
Check the documentation in /usr/share/doc/kernel-package for any problems.
5.6. Help, my camera is supported by a driver that
has to be patched into my kernel! What do I do?
See the
section on patching of the Kernel-HOWTO at The Linux Documentation Project.
The short and unguaranteed version of patching, by your humble
author, goes as follows: Be sure you have the same prerequisites outlined
in Section 5.4 installed.
First, on the command line or in an xterm change to the source directory
of the kernel version you are (or will be) running with the camera patch
(in this example named patch.diff).
# cd /usr/src/linux
# patch -p1 -E patch.diff |
You should see a confirmation that the 'hunks' were successfully
applied.
At this point, you can make menuconfig or whatever
program you use to recompile, enabling the appropriate support.
If any of the hunks failed, or you run into any problems in addition to
the link referenced above you, should consult man patch
and Section 5.7.
5.8. Help, I want to contribute to Video4Linux
support in Linux! Who do I get in touch with?
See this page.