Logitech Quickcam Messenger How-to

At long last, the Logitech Quickcam Messenger - the two tone grey Logitech webcam - finally works under Linux!!

As usual, I first used dmesg to check the vid/pid details ( if not sure what I am on about - please refer to the Chicony TwinkleCam how to )
Oddly, dmesg didn't show the details of the camera! So, not deterred, I tried lsusb instead, and received the following information -

Bus 002 Device 001: ID 0000:0000
Bus 001 Device 002: ID 046d:08f0 Logitech, Inc.
Bus 001 Device 001: ID 0000:0000

Bingo! 046d and 08f0
Now, a quick head over to http://home.mag.cx/messenger/ will show that al long last, a driver is available for this webcam.
You need to download the driver next - http://home.mag.cx/messenger/source/qc-usb-messenger-0.8.tar.gz
The install for the driver is a little different to the usual installing procedure, so I will go through it. Note that you will need the kernel headers - please see the TwinkleCam how-to if not sure what I mean here.

Download the driver as you usually do, untar it using whatever method you prefer (I just used Ark). Once you have untarred it,cd into the directory where it now can be found. I will use my own case as an example. I downloaded the file to a folder I created called Logitech_messenger in my home directory. As my user name is mark, the path to it is  /home/mark/Logitech_messenger.
So, once the file is untarred ( I used the same directory), it will create a folder called qc-usb-messenger-0.8
You now need to cd into that directory from a Konsole - so in my case, I issued the command ( without the quotes of course) -

"cd /home/mark/Logitech_messenger/qc-usb-messenger-0.8"

and pressed enter.
My prompt will now tell me I am in the right directory.
The actual install is carried out with a shell script, so to run this, simply type in ( minus quotes) -


and press enter. The installation will begin. As I said, its totally different to most installs - this is pretty much automated - you mostly have to press enter :) At the bottom of this how-to, I have attached the output of my own install for comparison.
The first problem you may see is that you don't have xawtv. Well - if you have Camstream as I recommend in the TwinkleCam how-to, you can ignore the xawtv problem - or if you so desire, you can attempt to install that yourself. Basically, its a means of seeing the output of your camera - but Camstream does that - and is easier :) The install script will say there is important programs missing - but that is just xawtv, so you can ignore it.
During the install, you will see odd things complained about - don't worry.
When you get to the part about looking for a camera, you are likely to get a message about it not finding a compatible camera - I did! Don't worry! As long as the vid/pid was the same as mine (046d:08f0), you will be OK. You will be warned that if you continue it will probably fail - but don't worry about that- continue as usual.
The actual driver will now build.Once that finishes, you will be informed that the program will now try to load the module - and that if you are unlucky, it may crash your machine! Don't panic - just press enter as usual.
Amazingly, the driver can suddenly detect your camera! Press enter once you have seen this - and you will be then shown what device it will use (dev/video0).Next, it will test some applications out. When it gets to xawtv, unless you have installed xawtv, it will tell you that the xawtv command is not found. Don't worry. Open another Konsole, then open Camstream. You should find the Logitech camera is now detected in camstream :) Cool! So go back to the konsole which is installing the driver and continue to the end.I have tested by rebooting the PC - and the driver seems happy to install itself on boot if the Logitech webcam is attached to the PC. So that saves all the bother of modprobing various drivers.
As always with any of my how-tos, if you find any errors or problems, get stuck or simply wish to comment on the how-to, feel free to do so :)

The full output of my install is below - for comparison -

-=- Logitech QuickCam USB camera driver installer -=-
Hello! I am the (hopefully) easy-to-use, fully automated
qc-usb driver installation script.
At the moment, this is experimental, and if it doesn't work,
don't hesitate to quit this with Ctrl+C and install the
driver manually.

The driver is provided in source code form, so it has to be
compiled. This should happen automatically, but it does mean
that there are some steps required before installation.

You also need to know "root" user password to test and
install the driver.

Basically you need only to keep hitting Enter whenever you
see this prompt: --->. Sometimes you're asked root password.
Pay special attention to lines beginning with [!].
It means that some trouble has been detected.

To most important location is the path to your kernel source
or headers. This can be guessed, but you can specify it by
giving it as an argument to this script like this:
        ./quickcam.sh LINUX_DIR=/usr/src/linux

If you haven't done it yet, now it would be a good moment to
take a look at file README.

Next I'm going to check if you have some important programs installed
and if they and the kernel are of suitable version.
Press Ctrl+C to quit, Enter to continue --->

which: no xawtv in (/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/usr/NX/bin)
Warning: xawtv missing
[!] Some important programs can not be found on default path.
Probably they aren't installed.
You should install them, for example, by using apt-get or rpm.
WARNING: If you press Enter, I'll try to continue anyway,
but this probably will fail. You SHOULD press Ctrl+C now.
Press Ctrl+C to quit, Enter to continue --->

which: no realpath in (/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/usr/NX/bin)
which: no realpath in (/usr/local/bin)
gcc version: gcc version 3.4.1
gcc version: gcc version 3.4.1
Make version: GNU Make 3.80
Linker version: GNU ld version 2.15
Kernel compiler: gcc version 3.4.1
Looking for more necessary programs...
Found program /sbin/depmod
Found program /sbin/insmod
Found program /sbin/rmmod
Found program /sbin/modprobe
Found program /bin/mount
Found program /sbin/lsusb
depmod version: module-init-tools 3.0
insmod version: module-init-tools version 3.0
rmmod version: module-init-tools version 3.0
modprobe version: module-init-tools version 3.0
Checking whether we're root... mark
Checking for driver source code...
Checking for write permission...

Previous round done. Now checking if you have kernel source installed.
Press Ctrl+C to quit, Enter to continue --->

Kernel source directory: /lib/modules/
Detected kernel version is 2.6.x.
Kernel version name:
Kernel source version code: 132616
Driver file name: quickcam.ko
Module install directory: /lib/modules/
Driver source directory (PWD):         /home/mark/Logitech_messenger/qc-usb-messenger-0.8
Kernel source directory (LINUX_DIR):   /lib/modules/
Module install directory (MODULE_DIR): /lib/modules/
Utility install directory (PREFIX):    /usr/local
User options (USER_OPT):
Driver file name (use with insmod):    quickcam.ko
Kernel version code:                   132616

The QuickCam driver requires other drivers from kernel.
I'll now check if those seem to be loaded.
Press Ctrl+C to quit, Enter to continue --->

Modules loaded into the kernel:
videodev snd_usb_audio audio isofs zlib_inflate lp apm ohci_hcd 8250_pnp 8250 serial_core nvidia 8139too snd_via82xx snd_ac97_codec gameport snd_mpu401_uart snd_rawmidi snd_seq_device parport_pc parport pci_hotplug via_agp agpgart tsdev evdev snd_pcm_oss snd_pcm snd_page_alloc snd_timer snd_mixer_oss snd soundcore genrtc via_rhine uhci_hcd ehci_hcd usbcore

Next round: let's see if you have a supported QuickCam.
Please plug in your USB camera before continuing.
Press Ctrl+C to quit, Enter to continue --->

I can find the following probably compatible devices:
Unknown line at line 4969
Unknown line at line 4970
Unknown line at line 4971
Unknown line at line 4972
Unknown line at line 4973
Unknown line at line 4974
Unknown line at line 4975
Unknown line at line 4976
Unknown line at line 4977
Unknown line at line 4978
Unknown line at line 4979
Unknown line at line 4980
Unknown line at line 4981
Unknown line at line 4982
Unknown line at line 4983
Unknown line at line 4984
Unknown line at line 4985
Unknown line at line 4986
Unknown line at line 4987
Unknown line at line 4988
Unknown line at line 4989
Unknown line at line 4990
Unknown line at line 4991
Unknown line at line 4992
Unknown line at line 4993
Unknown line at line 4994
Unknown line at line 4995
Unknown line at line 4996
Unknown line at line 4997
Unknown line at line 4998
Unknown line at line 4999
Unknown line at line 5000
Unknown line at line 5001
Unknown line at line 5002
Unknown line at line 5003
Unknown line at line 5004
[!] Didn't find compatible cameras.
If you got message: "Permission denied", it means that
you simply have too old lsusb, and you can ignore this problem.
In this case you have to be root to use lsusb, but I won't do that.
WARNING: If you press Enter, I'll try to continue anyway,
but this probably will fail. You SHOULD press Ctrl+C now.
Press Ctrl+C to quit, Enter to continue --->

Another round done. Let's now compile the driver, it takes a while.
This step will also clear old unnecessary files from the directory.
Press Ctrl+C to quit, Enter to continue --->

rm -f *.o qcset input_read show *~ .\#* .*.cmd *.mod.c *.ko
rm -rf .tmp_versions
cd testquickcam ; make clean
make[1]: Entering directory `/home/mark/Logitech_messenger/qc-usb-messenger-0.8/testquickcam'
rm -f testquickcam *~ pic.ppm pic.gif
make[1]: Leaving directory `/home/mark/Logitech_messenger/qc-usb-messenger-0.8/testquickcam'
make -C "/lib/modules/" SUBDIRS="/home/mark/Logitech_messenger/qc-usb-messenger-0.8" modules V=1 USER_OPT=""
make[1]: Entering directory `/usr/src/linux-'
mkdir -p /home/mark/Logitech_messenger/qc-usb-messenger-0.8/.tmp_versions
make -f scripts/Makefile.build obj=/home/mark/Logitech_messenger/qc-usb-messenger-0.8
  gcc -Wp,-MD,/home/mark/Logitech_messenger/qc-usb-messenger-0.8/.qc-driver.o.d -nostdinc -iwithprefix include -D__KERNEL__ -Iinclude  -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -pipe -msoft-float -mpreferred-stack-boundary=2 -fno-unit-at-a-time -march=pentium2 -Iinclude/asm-i386/mach-default -Os -fomit-frame-pointer -Wdeclaration-after-statement-DNOKERNEL   -DMODULE -DKBUILD_BASENAME=qc_driver -DKBUILD_MODNAME=quickcam -c -o /home/mark/Logitech_messenger/qc-usb-messenger-0.8/.tmp_qc-driver.o /home/mark/Logitech_messenger/qc-usb-messenger-0.8/qc-driver.c
  gcc -Wp,-MD,/home/mark/Logitech_messenger/qc-usb-messenger-0.8/.qc-vv6450.o.d -nostdinc -iwithprefix include -D__KERNEL__ -Iinclude  -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -pipe -msoft-float -mpreferred-stack-boundary=2 -fno-unit-at-a-time -march=pentium2 -Iinclude/asm-i386/mach-default -Os -fomit-frame-pointer -Wdeclaration-after-statement-DNOKERNEL   -DMODULE -DKBUILD_BASENAME=qc_vv6450 -DKBUILD_MODNAME=quickcam -c -o /home/mark/Logitech_messenger/qc-usb-messenger-0.8/.tmp_qc-vv6450.o /home/mark/Logitech_messenger/qc-usb-messenger-0.8/qc-vv6450.c
  gcc -Wp,-MD,/home/mark/Logitech_messenger/qc-usb-messenger-0.8/.qc-formats.o.d -nostdinc -iwithprefix include -D__KERNEL__ -Iinclude  -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -pipe -msoft-float -mpreferred-stack-boundary=2 -fno-unit-at-a-time -march=pentium2 -Iinclude/asm-i386/mach-default -Os -fomit-frame-pointer -Wdeclaration-after-statement -DNOKERNEL   -DMODULE -DKBUILD_BASENAME=qc_formats -DKBUILD_MODNAME=quickcam -c -o /home/mark/Logitech_messenger/qc-usb-messenger-0.8/.tmp_qc-formats.o /home/mark/Logitech_messenger/qc-usb-messenger-0.8/qc-formats.c
  gcc -Wp,-MD,/home/mark/Logitech_messenger/qc-usb-messenger-0.8/.qc-memory.o.d -nostdinc -iwithprefix include -D__KERNEL__ -Iinclude  -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -pipe -msoft-float -mpreferred-stack-boundary=2 -fno-unit-at-a-time -march=pentium2 -Iinclude/asm-i386/mach-default -Os -fomit-frame-pointer -Wdeclaration-after-statement-DNOKERNEL   -DMODULE -DKBUILD_BASENAME=qc_memory -DKBUILD_MODNAME=quickcam -c -o /home/mark/Logitech_messenger/qc-usb-messenger-0.8/.tmp_qc-memory.o /home/mark/Logitech_messenger/qc-usb-messenger-0.8/qc-memory.c
  ld -m elf_i386  -r -o /home/mark/Logitech_messenger/qc-usb-messenger-0.8/quickcam.o /home/mark/Logitech_messenger/qc-usb-messenger-0.8/qc-driver.o /home/mark/Logitech_messenger/qc-usb-messenger-0.8/qc-vv6450.o /home/mark/Logitech_messenger/qc-usb-messenger-0.8/qc-formats.o /home/mark/Logitech_messenger/qc-usb-messenger-0.8/qc-memory.o
  Building modules, stage 2.
make -rR -f /usr/src/linux-
  scripts/mod/modpost -i /usr/src/linux- vmlinux /home/mark/Logitech_messenger/qc-usb-messenger-0.8/quickcam.o
  gcc -Wp,-MD,/home/mark/Logitech_messenger/qc-usb-messenger-0.8/.quickcam.mod.o.d -nostdinc -iwithprefix include -D__KERNEL__ -Iinclude  -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -pipe -msoft-float -mpreferred-stack-boundary=2 -fno-unit-at-a-time -march=pentium2 -Iinclude/asm-i386/mach-default -Os -fomit-frame-pointer -Wdeclaration-after-statement    -DKBUILD_BASENAME=quickcam -DKBUILD_MODNAME=quickcam -DMODULE -c -o /home/mark/Logitech_messenger/qc-usb-messenger-0.8/quickcam.mod.o /home/mark/Logitech_messenger/qc-usb-messenger-0.8/quickcam.mod.c
  ld -m elf_i386 -r -o /home/mark/Logitech_messenger/qc-usb-messenger-0.8/quickcam.ko /home/mark/Logitech_messenger/qc-usb-messenger-0.8/quickcam.o /home/mark/Logitech_messenger/qc-usb-messenger-0.8/quickcam.mod.o
make[1]: Leaving directory `/usr/src/linux-'
gcc -Wall -O2 -s qcset.c -o qcset -lm
gcc -Wall -O2 -s input_read.c -o input_read
-rw-r--r--  1 mark users 128881 2005-03-20 00:34 quickcam.ko

Now everything should be well and the driver compiled.
Let's then try actually loading the fresh driver and testing
if it works.
Press Ctrl+C to quit, Enter to continue --->

To load the driver, I need to know the root password.
=== Entering root mode ===
Now I finally will try to load the module.
If you're unlucky, your computer might crash right now!!!!
Consider long if you really want to continue.
Press Ctrl+C to quit, Enter to continue --->

You decided to do it, here we go...
=== Leaving root mode ===
The driver detected the following supported cameras:
quickcam [58.327170]: ----------LOADING QUICKCAM MODULE------------
quickcam [58.327190]: struct quickcam size: 3924
quickcam: QuickCam USB camera found (driver version QuickCam Messenger/Communicate USB $Date: 2004/12/30 10:00:00 $)
quickcam: Kernel: bus:1 class:FF subclass:FF vendor:046D product:08F0
quickcam [58.327269]: poisoning qc in qc_usb_init
quickcam [58.353803]: E00A contains 08F0
quickcam: Sensor VV6450 detected
quickcam [58.455279]: Quickcam snapshot button registered on usb-0000:00:07.2-1/input0
quickcam: Registered device: /dev/video0
I will be using /dev/video0, if there are more cameras I'll not test them.
Press Ctrl+C to quit, Enter to continue --->

Testing if /dev/video0 is correct.
crw-rw-rw-  1 root root 81, 0 2004-04-13 11:07 /dev/video0

Right now driver is loaded and should be ready to run.
Let's test if user applications can see it, starting with qcset.
Press Ctrl+C to quit, Enter to continue --->

Name          : Logitech QuickCam USB
If you like, you can quit now and start using the camera -
you have good chances that it works, if no problems were detected.
If you have X Window System running and xawtv installed,
I can now run it automatically for you.
You will then also have opportunity to install the driver permanently.
Press Ctrl+C to quit, Enter to continue --->

Launching xawtv (press q on xawtv window to quit it)...
If the image is not sharp, try focusing it by turning the
wheel around the camera lens.
        xawtv -noscale -noxv -c "/dev/video0"
./quickcam.sh: line 753: xawtv: command not found

Well, did it work, did you get a picture?
If you did, you might now want to install the driver
permanently. Just proceed to do that...
Press Ctrl+C to quit, Enter to continue --->

Just an extra warning: the driver (quickcam.ko) and
the utility (qcset) will be now copied into system
directories. If you have already other versions,
they will be overwritten. Verify by giving root password.
=== Entering root mode ===
/bin/install -c -D -m 644 quickcam.ko    /lib/modules/
/bin/install -c -D -m 755 qcset /usr/local/bin/qcset
/sbin/depmod -a
=== Leaving root mode ===
Hopefully the driver is now installed and can be loaded
with command
        modprobe quickcam
as root. You can put this command into some startup
script to do it always automatically at boot.
The exact location depends on distribution, and this
script is yet too dumb to do this automatically.
Press Ctrl+C to quit, Enter to continue --->