Version 0.1 14 December 2004 Driver seem to work... Tested with both Fedora Core 1 & 3. Only tested with 324x248 resolution so far. Auto-exposure added. (Some tuning could be done though. Don't know how good qc-usb is with other cameras) One USB-packet is unknown ($42FF) and cause usb-errors and a lost frame. Version 0.2 16 December 2004 160x120, 240x160, 320x240 seem to work now. Don't know if 640x480 is unavailable in bayes format. It may be sent interlaced or something? Cleaned up in init-code. Found settings for shutter control, and have tried to make adaptive changes to it. Need some tuning, but is enabled by default. Version 0.3 17 December 2004 Updated the resolutions and tested 162x124, 162x248, 324x124, 324x248. testquickcam modified a bit to test all resolutions. It can save the picture to a ppm-file (hardcoded pic.ppm) right now. ./testquickcam /dev/video0 -m -1 ppmquant 256 pic.ppm | ppmtogif > pic.gif Modified the detection code to find newer cameras too. (0x046D, 0x08xx) 0x046D, 0x08F0 Quickcam Messenger 0x046D, 0x08F5 Quickcam Communicate Version 0.4 21 December 2004 Confirmed that Quickcam Communicate works from Martijn van de Streek. userlut enabled as default (Messenger really require some white-balance changes, don't know how it is with Communicate) Adaptive shutter options and settings added. It's actually a hardware exposure time that control how long the shutter should be open for each frame. Low value is used with good light and fast moving objects, and high values if it's dark and objects aren't moving. shutteradapt=y is depending on the setting adaptive=y. If shutteradapt=n, shutterval could be controlled by whiteness (qcset -w) I made this change since ioctl(VIDIOCSPICT) is very limited, and I think this setting is much more important than quality settings in bayer->rgb. Gnomemeeting have a whiteness slidebar, so try it from there if you want. qcset modified a bit to support hardware exposure time. qcset shutteradapt:y,n qcset shutterval: 0-65535 qcset -s qcset -w (if shutteradapt=n) insmod quickcam.ko shutteradapt=0 Changed the vv6450_set_size() to work better with CIF & QCIF resolutions which gnomemeeting use. Removed qc-mjpeg.c from Makefile since it's not used for Messenger. A small script print_exposure.sh for debugging purpose, which print some of the rows in /proc/video/quickcam/video0 in an endless loop. Version 0.5 27 December 2004 Reading interrupts from camera to handle button-events. Seem to be some major differences between 2.4.22 kernel in Fedora Core1 and 2.6.9 kernel in Fedora Core3. I'm not sure how the code works in 2.4-kernels later 2.4.22. Some interrupts are lost when pressing the button too quick. Button status displayed in proc-file so far. Improvements and changes will be done on this later. Removed all i2c-code in qc-driver.c. (Not used by qc-vv6450) Note: There are no transfer queue when writing to stv-registers. I don't know if this is bad performance wise, but it works good for me. Made some changes in code setting resolution, and hopefully it will work better with gnomemeeting now. Version 0.6 30 December 2004 Lots of bug-fixes and changes to handle newly attached and unplugged cameras. It should be possible to unplug the camera anytime now. Have tested it on Fedora Core 1 and Fedora Core 3, and both seem to be much more stable now. Version 0.7 30 December 2004 Quick update to 0.7 here... :) Bug for 2.4.x kernels fixed... Added camera button as an input device if kernel supports it. Version 0.8 4 January 2005 I have tested Fedora Core 1 with 2.4.22 kernel 100 times now (and that includes 50 reboots due to kernel-panics...), and unplugging camera while it's in use should work even better now... I hope it's stable for all 2.4 and 2.6 users now.... except the bug below (but it doesn't crash the kernel at least) Version 0.9 21 November 2005 Module compiles on kernels > 2.6.12 now. Added support for newer Messenger cameras (0x046D, 0x08F6) Ignore commands VIDIOCSCHAN,VIDIOCGCHAN (needed by RealProducer) Merged some of the changes from qc-usb-0.6.3. (thanks Daniel Neilson) Version 1.0 10 January 2006 Module compiles on kernels > 2.6.15 now. (Thanks Nepusz Tamas) Version 1.1 20 January 2006 owner was removed from usb_driver struct in 2.6.15, and this minor patch will get rid of the compilation error. Version 1.2 24 March 2006 Minor patch... Just ignore test of num-configurations which break compatibility when cross-compiling for NSLU2 with arm processor. Version 1.3 6 June 2006 Replace spin_lock() with spin_lock_irqsave to fix machine hangs Fix endian issues for compilation to ARM-processor. Update quickcam.sh to work with Messenger Cameras (and Ubuntu) Version 1.4 14 October 2006 Change MIN_SHUTTER to 300. Outdoor picture got overexposed when 3000. Some changes in Makefile and quickcam.sh script. This will probably fix all problems to find correct kernel version from header-files. Should support 2.6.18 kernels now. Version 1.5 5 November 2006 Fix compilation on Fedora Core 6. Version 1.6 10 December 2006 Fix compilation for kernel-2.6.19. Version 1.7 2 September 2007 Fix quickcam.sh script for Ubunto. Made some experiments with changing the default userlut-settings. Haven't changed the default array though... To print a new array to stdout you can use: qcset -G 1.0:1.2:1.4:1.4:1.4:1.4 If you find any new setting which give you good color-balance like: qcset -g 0.9:0.7:0.3:1.0:1.0:1.0 then tell me... and I will consider setting it as default value. -------------------------------------------- BUGS: I have problems with the USB-functions in the 2.6.9 kernel. When I want to read the Camera shapshot button, I have to read interrupt packets on the USB-bus. Initiation of this doesn't always work after the camera has been un-plugged, and I can't get rid of the ESHUTDOWN error-code. Unload quickcam module Plugin the camera (my Fedora Core 3 loads the quickcam module and the camera is found) Interrupt URBs are read without any problem and camera works. If you unplug the camera, a bunch of EILSEQ is received to the qc_int_handler(). qc_usb_disconnect() is called and cleaning up with usb_unlink_urb() seems to work, but qc_int_handler() ends with a ESHUTDOWN a last time. Next time I plugin the camera, qc_usb_probe() and qc_int_init() is called. After submitting the first Interrupt URB, qc_int_handler() is called and ESHUTDOWN is received. The device is closed? No matter how many times I plugin/plugout the camera, the usb device is not useable. (It doesn't matter if I remove all support of Interrupt URBs. either) If module is unloaded, and loaded again, ESHUTDOWN is gone and the camera works again?!? (can anyone help me?)