This is the 0.20 release of the SPCA50X based USB camera driver for Linux.
(Intel PC Camera Pro, Intel Create and Share, Viewquest Technologies range)
* This release is for developers only *
should work fine.
!! As with any kernel module, you risk serious data corruption !!
!! Please read below for essential module parameters before inserting !!
!! this module !!
* at
spca50x-devs@lists.sourceforge.net *
volunteers. Many thanks to all of them!
The project page on sourceforge is at
http://spca50x.sourceforge.net/
polesworth@users.sourceforge.net
Initialises the camera and begins streaming color or greyscale data
You can take still shots with it, and see moving video.
Brightness and contrast and some mode switching on external input.
External input support is stable enough for experimental use.
Internal brightness/contrast and mode switch coming when I get
the chance to run and interpret some more traces.
Experimental brightness and colour on internal CCD (need compile
flag to enable)
Otherwise untested. Please try only if you are developer and
prepared to suffer crashes and lost data. I need the vendor
and product ID's for a camera with this IC - if you have one
please send me your boot log. The GrandTec V.cap is one AFAIK
Otherwise untested. Please try only if you are developer and
prepared to suffer crashes and lost data. This one seems to
be closer to the SPCA501 not the SPCA506. The 0.10 release
significantly improves support for this device.
interested developers.
------------------
The driver module can be built without modifying your kernel source tree.
and updated the dependencies: 'make [config|menuconfig|xconfig]; make dep'.
installed one, build the driver with
'make KINCLUDE=/usr/src/linux-<version>/include', or similar.
/usr/src/linux.
------------------------------
This version of the driver offers an automatic installation facility.
Use 'make install' to have the driver installed into your kernel modules
directory, which is assumed to be /lib/modules/<version>/kernel/drivers/usb.
<version> is picked up from the currently running kernel, so if that's not
the right place, then don't use 'make install'!
Compiling against the linux kernel 2.4 source tree, there should be no warnings
at all.
If you compile against the linux kernel 2.2 source tree, you may see:
{standard input}: Warning: ignoring changed section attributes for .modinfo
outputs two modinfo sections. It doesn't affect the running of the module,
however.
If you see complaints about modules using kernel include files, ensure that
the include files for linux and asm in the /usr/include tree are symbolic
links to the same directories in the kernel source tree.
************************************************** *********************
in <kernel root>/drivers/usb.
Diff Config.in and <kernel root>/drivers/usb/Config.in and add the changes
for the SPCA50X. Add a line to <kernel root>/include/linux/videodev.h for
#define VID_HARDWARE_SPCA50X 29 /* Or first free number */
Add this line to the makefile in <kernel root>/drivers/usb
obj-$(CONFIG_USB_SPCA50X) += spca50x.o
Reconfigure the kernel (proc and videodev are required) and make modules.
Warnings about unused variables may be safely ignored.
insmod drivers/usb/spca50x.o
or
insmod spca50x.o
if you use the outside kernel source compile
Remember to use
insmod spca50x.o ccd=0 dumppix=6
for the internal CCD on the SPCA506 (Intel PC Camera Pro) if you
want to see bright mono video, otherwise you will need a bright external
light source to see something resembling colour.
************************************************** *********************
strange, the brightness and contrast are probably incorrect. If you use the
internal CCD, aren't using dumppix=6 and see a black image, this is a color
image which is too dark to show anything. I'm working on brightness control
for the CCD, in the meantime use an external camera with a very bright light.
gqcam also has a filter which will exchange RGB and BGR formats. If your
colour is strange it may be this filter which needs changing.
************************************************** *********************
bright=25 <-- Set camera initial brightness (25 for greyscale, ~90 for color)
contrast=16 <-- Set camera initial contrast (16 for greyscale, ~32-64 for
color)
dumppix=4 <-- return raw camera data for use with raw.c
dumppix=6 <-- return greyscale video from the YUV decoder [use with internal
CCD]
debug=<n> <-- set debug level (!! 5 crashes kernel, 4 sometimes crashes
kernel !!)
ccd=0 <-- SPCA505 only. Switch between the internal CCD (zero) and
the external video input (non-zero)
osd=1 <-- Enable on-screen display if kernel patches applied (see below)
* Works with either the internal CCD or an external video device with an
SPCA505
* Camera must be connected and live before opening video device
* Sometimes fails to start streaming - suspect a sync/lock problem with the
SAA7113
If you don't get a picture, unload and re-load the module, then try again
* To take still shots, use vgrabber to grab a frame as a PNM format image
* Limited colour support. You may find that this works now with the
internal CCD
* Only supports 160x120 [Some limited support for larger sizes on external
input and CCD on 505]
* No compression support
* Some instability, particularly on SMP machines.
* Brightness and contrast controls are fixed for external inputs, and may
now work for CCD
Enable this support with the DANGER_WILL_ROBINSON define on the
compile line
* Only tested with the SPCA505 and SAA7113. Work in progress for
SPCA506/SPCA501 (ish) support
* Some limited image size changing is supported for the external input
only. (Expect some image corruption when switching size, I know what
causes this and I'm working on fixing it).
Supported resolutions are 160x120, 176x144, 352x288, but the driver
will accept other sizes and map to the closest smaller size it
supports.
* Only tested on X86 - maybe byte ordering problems on other systems.
* GQCam throttles frames at 10 frames per second - the driver supports up
to about 25 if you change the gcqam command line parameter.
* Some support for on-screen display of frame index and size. See below.
compile-time option ENABLE_OSD. This option displays the current frame number,
along with other data, in the resultant image. To use this, you need to make
some patches to the kernel and re-compile the kernel with the VGA(VESA) frame
buffer on (we don't use the frame buffer, but we need it compiled in to get
the fonts). The options you need are VESA frame buffer, and 8 pixel fonts, and
font VGA 8x8. These are the patches (they export the methods needed to lookup
font tables) :
22a23
> #include <linux/module.h>
131a133,135
>
> EXPORT_SYMBOL(fbcon_find_font);
> EXPORT_SYMBOL(fbcon_get_default_font);
18c18
< .. cyber2000fb.o fbcon-hga.o
---
> .. cyber2000fb.o fbcon-hga.o fonts.o
ensure that the following symbols are defined:
CONFIG_FBCON_FONTWIDTH8_ONLY 1 <--- this may not be necessary
CONFIG_FBCON_FONTS 1
CONFIG_FONT_8x8 1
bzImage). Once you have installed it and rebooted then you can check for the
existance of fbcon_find_font in the /proc/ksyms file.
display
Thanks to all the authors of the ov511 driver and its ancestors
Thanks to Darrell Scott for debug assistance and suggestions.
Thanks to Razvan Surdulescu for kicking me back into action.
Thanks to Bill Roehl for traces on the Create and Share (id 0x401). I WILL
make this work... or die trying...
Thanks to everyone who has tested this driver and given me feedback on it.
Enjoy !