Frequently Asked Questions (FAQ) about pwc
Since this is a Wiki you are welcome to improve the answers or add new questions/answers. You do not need to ask for permission. If you see spam feel free to delete it. Do not ask a question unless you have the answers. This is not a page for asking questions. It is for finding answers.
General Questions
645 & 646 - XXX is only supported with the decompressor module (pwcx)
At 17-May-2005 compression is not supported for 645 and 646 cameras.
Download
http://www.saillard.org/linux/pwc/files/
Compilation
Compiling fails due to "scripts/basic/fixdep: No such file or directory"
This happens with SUSE 10.0 as well as some other distros where you do not actually compile the kernel. You'll need to do a few things to the kernel source first:
- Open /usr/src/linux (or the location of the kernel source on your system) in a console.
- Run the command: make cloneconfig
- Run the command: make modules_prepare
This should put an end to the missing fixdep issue.
Compiling fails due to "make: * /lib/modules/2.6.15-27-386/build: No such file or directory. Stop."
This happens with Ubuntu 6.06 Dapper-Drake. You have two problems: no source, and no symbolic link to source.
- sudo apt-get install linux-source-2.6.15 (or whatever minor version number you see in `uname -r`)
- sudo ln -s /usr/src/linux-source-2.6.15 /lib/modules/2.6.15-27-386/build
Now compiling should work.
Installation
http://www.saillard.org/linux/pwc/INSTALL.en
Loading the module
modprobe fails with "FATAL: Error inserting pwc (...) Unknown symbol in module, or unknown parameter (see dmesg)
Try and run dmesg. If you see
pwc: Unknown parameter `index'
then the problem is that you have a parameter in /etc/modprobe.conf saying something line
options pwc index=1
.
Delete this line. It comes from an older version of the driver. Then try
modprobe pwc
again.
Modprobe doesn't recognize the usb modules
You may have an old version of 'modutils' (modprobe, insmod, rmmod etc). Old versions of modprobe won't recognize the usb modules. Try and upgrade to a newer version. Any distribution less than a couple of years old should not have this problem.
Also, don't forget to run 'depmod -a' once when you just installed the module (make install does this for you).
Running Applications
The box says I can take images at 800x600 and even 1280x960, but I can't seem to set this resolution
The point is that these resolutions are not really possible with the cams: the CCDs (light sensitive sensors) only have a resolution of 352x288 (PCVC645/646) or 640x480 (PCA675/680/690/730/740) pixels. This is the physical limit of the cameras. Any larger pictures are simply enlarged versions of the images at maximum resolution (though you would have to look real close to see it). The pwc driver only supports sizes given by the physical characteristics of the cameras.
Below are 3 tables that show the possible resolutions and framerates for the webcams. On the left, all physical resolutions are listed and at the top the various framerates.
If a cell is blank it means the combination of resolution and framerate is not supported. A
means the combination is supported uncompressed and
indicates that combination is only available in compressed mode.
Size |
PCA 645/646* & VC010 |
3.75 |
5 |
7.5 |
10 |
12 |
15 |
20 |
24 |
sQCIF 128x96 |
|
|
|
|
|
|
|
|
QSIF 160x120 |
|
|
|
|
|
|
|
|
QCIF 176x144 |
|
|
|
|
|
|
|
|
SIF 320x240 |
|
|
|
|
|
|
|
|
CIF 352x288 |
|
|
|
|
|
|
|
|
VGA 640x480 |
|
|
|
|
|
|
|
|
* If you check the code you can see that compression is not supported on these 2 cameras and you can't go below 4 fps. In other words 176x144 is the highest resolution possible with the 645 and 646 cameras at the moment.
Size |
PCVC 675/680/690 |
5 |
10 |
15 |
20 |
25 |
30 |
sQCIF 128x96 |
|
|
|
|
|
|
QSIF 160x120 |
|
|
|
|
|
|
QCIF 176x144 |
|
|
|
|
|
|
SIF 320x240 |
|
|
|
|
|
|
CIF 352x288 |
|
|
|
|
|
|
VGA 640x480 |
|
|
|
|
|
|
Size |
PCVC 730/740/750 |
5 |
10 |
15 |
20 |
25 |
30 |
sQCIF 128x96 |
|
|
|
|
|
|
QSIF 160x120 |
|
|
|
|
|
|
QCIF 176x144 |
|
|
|
|
|
|
SIF 320x240 |
|
|
|
|
|
|
CIF 352x288 |
|
|
|
|
|
|
VGA 640x480 |
|
|
|
|
|
|
Note that VGA resolutions are limited to 15 fps: there isn't enough bandwidth available on the USB bus to squeeze through more, even with compression.
The box says I can take images at 60 frames per second, but I seem to be stuck at 15 fps?!
Philips lied a bit. See the answer above.
Dumping frame...
The pwc module produces a few messages in the kernel log (e.g. /var/log/messages). Most of them speak for themselves, but you might see this:
linux: usb-pwc: dumping frame XXX.
where XXX is a number that jumps up. This is nothing serious; it just means that the program that currently reads information from the driver is lagging behind and that the driver had to dump incoming frames from the camera. After 20 such messages it will stop nagging you, and print a total when the webcam device is closed.
Scratch buffer under/overflow...
Some messages that you might see in your kernel log are about scratch buffer over- or underflow. This is harmless; it means that the driver received too much or too little data in one frame and it can't be used to decode an image. The video frame is discarded and the driver waits for a new frame to arrive. This message could appear now and then when the system is loaded heavily or when there's a lot of USB traffic.
I see 3 repeated gray images
In case you don't get one color image but a grayscale image that is repeated three times on a row, the program you are using does not support the VIDEO_PALETTE_YUV420P palette. Contact the author of the program.
I want to hook up 10 cameras and take high resolution snapshots from them in succession. Is this possible?
Presently, no. The reason is that the cameras are built for streaming data, not stills. There's no way to pause the image stream easily so you can take snapshots at a whim. The only method is to open the camera device, take a snapshot and close it again, then go to the next.
Applications hang when the camera is connected through a USB hub or active extension cable
Indications:
dmesg
shows an error message like this:
pwc isoc_init() submit_urb 0 failed with error -12
pwc isoc_init() submit_urb 1 failed with error -12
This could be due to a problem with the enhanced host controller interface (EHCI) driver, try using the universal driver instead.
Check which usb controller driver you are using (this is assuming your drivers are modules):
lsmod | grep usbcore
You should see something like
usbcore 107384 6 uhci_hcd,pwc,snd_usb_audio,snd_usb_lib,usbhid
If your
*_hcd
driver is
ehci_hcd
you could try swapping it for the
uhci_hcd
by doing this (as root):
rmmod ehci_hcd && modprobe uhci_hcd
Try reconnecting the hub or extension cable, cross your fingers and fire up your favorite webcam application.
How do I improve images with...
MPlayer
For example MPlayer has many fancy image enhancing filters.
One way of invoking it would be this:
mplayer tv:// -tv driver=v4l:device=/dev/video1:width=640:height=480:noaudio -x 800 -y 600 -vf-add pp=hb:a/vb:a,hqdn3d,mirror
-vf defines a single filter, and -vf-add daisy-chains filters (the filters themslves are seperated by commas, their options by = and :).
The 'mirror' filter flips the image horizontally, the 'pp=' or postprocessing filter does some vertical (vb) and horizontal (hb) de-blocking, both are automatically turned off (:a) if they use too much CPU, and finally hqdn3d is a hi-quality de-noising filter. See the mplayer man page, or do a
mplayer -vf help
for an abundance of other usable filters.
ImageMagick
After you have taken a shot with your cam, for example using:
streamer -s 640x480 -c /dev/video1 -o webshot.ppm
you can use the 'convert' tool from ImageMagick to get an improved, bigger version of it.
Again, the tool offers a lot of different options, but for a start the following usually yields good results:
convert webshot.ppm -enhance -resize 800x600 big-webshot.png
convert webshot.ppm -despeckle -resize 800x600 big-webshot.png