old-www/HOWTO/Webcam-HOWTO/troubleshooting.html

666 lines
11 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML
><HEAD
><TITLE
>Troubleshooting</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
REL="HOME"
TITLE="The Webcam HOWTO"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Framegrabbing Applications"
HREF="framegrabbers.html"><LINK
REL="NEXT"
TITLE="Gnu Free Documentation License"
HREF="appendix.html"></HEAD
><BODY
CLASS="SECT1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>The Webcam HOWTO</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="framegrabbers.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="appendix.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="TROUBLESHOOTING"
></A
>5. Troubleshooting</H1
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="IDCHIP"
></A
>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?</H2
><P
>Use <B
CLASS="COMMAND"
>lsusb</B
>; it can give you an idea of what other USB devices are available on your system, too:</P
><P
><TABLE
BORDER="1"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="SCREEN"
> $ 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</PRE
></FONT
></TD
></TR
></TABLE
></P
><P
>The numbers after 'ID' are the Vendor and Product numbers, respectively. They can then be looked up in <A
HREF="http://www.linux-usb.org/usb.ids"
TARGET="_top"
>the Linux USB ID catalog</A
>.</P
><P
>If <B
CLASS="COMMAND"
>lsusb</B
> is not available to you, and you have support for <TT
CLASS="FILENAME"
>/proc</TT
> filesystem support and USB-filesystem
support, issue the following at the command line: </P
><P
><TABLE
BORDER="1"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="SCREEN"
> $ cat /proc/bus/usb/devices</PRE
></FONT
></TD
></TR
></TABLE
></P
><P
>You should receive output including (but not necessarily limited
to) the following:</P
><P
><TABLE
BORDER="1"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="SCREEN"
> 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</PRE
></FONT
></TD
></TR
></TABLE
></P
><P
> The line beginning <SPAN
CLASS="QUOTE"
>"T:"</SPAN
> is the USB bus the
device is attached to.
The <SPAN
CLASS="QUOTE"
>"P:"</SPAN
> indicates (obviously) the vendor and product ID,
which are catalogued at the <A
HREF="http://www.linux-usb.org"
TARGET="_top"
>linux
USB Project homepage</A
>. </P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="NODEV"
></A
>5.2. Help, I can't find the camera device in
<TT
CLASS="FILENAME"
>/dev</TT
>!</H2
><P
> Assuming your connection type
is supported, and your camera is working, see <A
HREF="dev-intro.html#DEV-MANUAL"
>Section 3.1</A
>.</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="ACCESS"
></A
>5.3. Help, I can see the camera device (both in person and as a device node in <TT
CLASS="FILENAME"
>/dev</TT
>), but I
can't access it!</H2
><P
> See <A
HREF="dev-intro.html#PERMISSIONS"
>Section 3.2</A
>.</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="SRC"
></A
>5.4. Help, my camera has a driver that is source-only,
i.e., has to be built by me! Where do I start?</H2
><P
> 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.)</P
><P
>Download the driver source (in this example named
<TT
CLASS="FILENAME"
>src.tar.gz</TT
>) and uncompress/untar it: </P
><P
><TABLE
BORDER="1"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="SCREEN"
> $ tar -xvzf src.tar.gz</PRE
></FONT
></TD
></TR
></TABLE
></P
><P
>Then, change to the directory of your kernel source:</P
><P
><TABLE
BORDER="1"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="SCREEN"
> # cd /usr/src/linux</PRE
></FONT
></TD
></TR
></TABLE
></P
><P
>Make the necessary source files:</P
><P
><TABLE
BORDER="1"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="SCREEN"
> # make oldconfig # make dep</PRE
></FONT
></TD
></TR
></TABLE
></P
><P
>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
<B
CLASS="COMMAND"
>modprobe</B
>.
If you have any problems, see <A
HREF="troubleshooting.html#MOREHELP"
>Section 5.7</A
>. </P
><P
></P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="DEBSRC"
></A
>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?</H2
><P
>It is far simpler, in your author's humble opinion, to use the automated <TT
CLASS="FILENAME"
>kernel-package</TT
> utility.
First, install it and the dependencies using <B
CLASS="COMMAND"
>apt-get</B
>. Next,
install the kernel source that you want (e.g., <B
CLASS="COMMAND"
>apt-get install
kernel-source-2.X.X</B
>). Untar the bzip2'd kernel source with <B
CLASS="COMMAND"
>tar
-xvjf</B
> and then make a symbolic link called <TT
CLASS="FILENAME"
>linux</TT
> that points to the new source:&#13;</P
><P
><TABLE
BORDER="1"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="SCREEN"
> # ln -s /usr/src/kernel-source-2.X.X /usr/src/linux
</PRE
></FONT
></TD
></TR
></TABLE
></P
><P
>Then <B
CLASS="COMMAND"
>cd /usr/src/linux</B
> and clean: <B
CLASS="COMMAND"
>make-kpkg clean</B
>, followed
by <B
CLASS="COMMAND"
>make menuconfig</B
> or <B
CLASS="COMMAND"
>make xconfig</B
> as you would if compiling
a new kernel. Next, you can use <B
CLASS="COMMAND"
>make-kpkg kernel_image</B
> and then install your new
kernel package that has been deposited in <TT
CLASS="FILENAME"
>/usr/src</TT
> with <B
CLASS="COMMAND"
>dpkg -i ../kernel-image-2.X.X</B
>. Next, you can get the pre-packaged
source driver using <TT
CLASS="FILENAME"
>apt</TT
>. So, in the case of the Quickcam Express, the package is <TT
CLASS="FILENAME"
>qc-usb-source</TT
>:</P
><P
><TABLE
BORDER="1"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="SCREEN"
> # apt-get install qc-usb-source</PRE
></FONT
></TD
></TR
></TABLE
></P
><P
>...and untar the archive:</P
><P
><TABLE
BORDER="1"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="SCREEN"
> # tar -xvzf qc-usb-modules.tar.gz</PRE
></FONT
></TD
></TR
></TABLE
></P
><P
>This will uncompress the source into the <TT
CLASS="FILENAME"
>/usr/src/modules</TT
> directory. The final step, while still in <TT
CLASS="FILENAME"
>/usr/src/linux</TT
> is to make the modules with kernel-package:</P
><P
><TABLE
BORDER="1"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="SCREEN"
> # make-kpkg modules_image</PRE
></FONT
></TD
></TR
></TABLE
></P
><P
>Install the new package, in <TT
CLASS="FILENAME"
>/usr/src/</TT
>, called <TT
CLASS="FILENAME"
>qc-usb-modules-[arch].deb</TT
> using <B
CLASS="COMMAND"
> dpkg -i</B
>. Finally, load the module:</P
><P
><TABLE
BORDER="1"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="SCREEN"
> # modprobe quickcam</PRE
></FONT
></TD
></TR
></TABLE
></P
><P
>Check the documentation in /usr/share/doc/kernel-package for any problems.</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="PATCH"
></A
>5.6. Help, my camera is supported by a driver that
has to be patched into my kernel! What do I do?</H2
><P
>&#13;See <A
HREF="http://tldp.org/HOWTO/Kernel-HOWTO/patching_the_kernel.html"
TARGET="_top"
>the
section on patching</A
> of the Kernel-HOWTO at <A
HREF="http://tldp.org"
TARGET="_top"
>The Linux Documentation Project</A
>. </P
><P
> The short and unguaranteed version of patching, by your humble
author, goes as follows: Be sure you have the same prerequisites outlined
in <A
HREF="troubleshooting.html#SRC"
>Section 5.4</A
> 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 <TT
CLASS="FILENAME"
>patch.diff</TT
>). </P
><P
><TABLE
BORDER="1"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="SCREEN"
> # cd /usr/src/linux
# patch -p1 -E patch.diff</PRE
></FONT
></TD
></TR
></TABLE
></P
><P
> You should see a confirmation that the 'hunks' were successfully
applied.
At this point, you can <B
CLASS="COMMAND"
>make menuconfig</B
> 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 <B
CLASS="COMMAND"
>man patch</B
>
and <A
HREF="troubleshooting.html#MOREHELP"
>Section 5.7</A
>. </P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="MOREHELP"
></A
>5.7. Help--as in, where can I get more of it?</H2
><P
> See the video4linux mailing list headquarters at <A
HREF="https://listman.redhat.com/mailman/listinfo/video4linux-list"
TARGET="_top"
>https://listman.redhat.com/mailman/listinfo/video4linux-list</A
>.</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="V4L"
></A
>5.8. Help, I want to contribute to Video4Linux
support in Linux! Who do I get in touch with?</H2
><P
> See <A
HREF="http://www.thedirks.org/v4l2/peopleprojects.htm"
TARGET="_top"
>this page</A
>.</P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="framegrabbers.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="appendix.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Framegrabbing Applications</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Gnu Free Documentation License</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>