The Connectix Quickcam Technical FAQ (Proposal)
December 4, 1997
This document is archived at http://www.cs.duke.edu/~reynolds/quickcam/
This file lists answers to some of the often heard technical
questions about the Connectix Quickcam line of digital cameras.
The information in this text was gathered by independent
developers on the "Connectix Third Party Drivers mailing
list" and is NOT official and was NOT approved by Connectix.
In other words - we cannot guarantee that this information is
100% correct, and if you destroy your camera using these
information, don't sue us, please. You were warned.
0. First of all
0.1. Where you should go on the Web
1. The Connectix Quickcam digital camera
1.1. Technical differences between Mac and PC versions
1.2. Technical differences between B&W and color versions
1.3. Can I use the parallel version on a serial port (or vice
versa)?
1.4. Now what about that parallel port of my PC? Is it
bidirectional?
1.5. Can I connect the Quickcam to a XYZ computer?
1.6. Can I connect more than one camera to one PC?
1.7. Oddments of the serial Quickcam
1.8. Can I connect the Quickcam to a network? (Web-Cam)
2. Home repairs and extra fun with the Quickcam hardware
2.1. The infrared filter / night vision
2.2. The lens / video-microspope
2.3. Disassembling the B&W Quickcam ball
3. Writing software for the Quickcam
3.1. Connectix official developer support
3.2. Is there a driver available for the XYZ operating system
(e.g. Linux)?
3.3. The low level programming specs
3.4. What mistakes exist in the specs?
4. Troubleshooting
4.1. How to make my PC's parallel port bidirectional?
4.2. Linux Autoprobing: Sometimes, the driver finds the camera,
sometimes not.
4.3. There is that clinkering noise in my QC ball. What's wrong?
5. About this text
0. First of all
If you are interested in Linux or FreeBSD drivers, read section
3.1, please.
Low-level interface specifications for the B&W and Color
Quickcams used to be available from Connectix. Logitech has taken
these documents offline and shows no interest in making them
available to developers. Windows NT drivers also used to be
available from Connectix and were removed from the Quickcam web
site when Logitech took over development of the Quickcam line.
People are still working on Unix drivers for the B&W
Quickcam, Color Quickcam, Quickcam VC, and Quickcam Pro. If you
wish to join the discussion or support the development, please
join the Third Party Drivers mailinglist through
http://www.crynwr.com/qcpc/.
0.1. Where you should go on the Web
Check the Quickcam Third Party Drivers website at
http://www.crynwr.com/qcpc/.
This is the main non-official resource for developers. It is
mainly intended for people who do write software for OTHER
operating systems than Windows or MacOS (but even if you do, you
will find a lot of interesting things there). Please join the
mailing list to hear the latest discussion.
There is a FTP archive available at
ftp://ftp.cs.unm.edu/pub/chris/quickcam/
There is a list of third-party drivers at
http://www.cs.duke.edu/~reynolds/quickcam/
1. The Connectix Quickcam digital camera
The Quickcam comes in several versions - the original Greyscale
Quickcam, the Color Quickcam, the Color Quickcam 2, the Quickcam
VC, the Quickcam Home, and the Quickcam Pro. The Greyscale
Quickcam and the Color Quickcam are available in Macintosh
(serial) and PC (parallel) versions. The Color Quickcam 2 is
parallel-only. The Quickcam VC and Quickcam Pro are available in
parallel and USB versions. All Mac versions include a microphone;
the PC versions do not.
The Color Quickcam and the Color Quickcam 2 use the same
protocols, so the same drivers work for both. The Quickcam VC,
Quickcam Home, and Quickcam Pro use new protocols (clearly the
USB version is a new protocol!). The Quickcam VC and Quickcam Pro
use one protocol.
The Quickcam's main advantages: it's cheap and it's easy to use.
While most computer video hardware products need complicated A/D
chips to convert an analog video signal to a digital computer
bitmap, the QC directly transfers the data of its digital CCD
chip to the computer. This results in simple, small hardware and
low price. These features have made the Quickcam the most popular
digital camera to date.
Its main disadvantage: the image quality is okay, but not
professional, and it's too slow to take movies with high frame
rates. The QC is great for surveillance, videoconferencing or
other low bandwidth applications, but not for high quality video
processing. But hey - what did you expect for that price?
[That's it for a very brief overview. You'll find more technical
data at Logitech's website. If you think that I should include a
full data sheet table, let me know.]
1.1. Technical differences between Mac and PC versions
The Mac version connects to a RS422 serial port and includes a
built-in microphone. (With video conferencing, it looks pretty
silly when you approach your camera and yell into it...)
The PC version connects to a Centronics parallel (printer) port
and needs an additional link at the keyboard connector for 5V
power supply. There is no built-in microphone.
The PC version allows bi-directional data transfers on parallel
ports. This feature is not supported by some older PC computers.
(The parallel port was originally designed to send data bytes to
the printer and receive only a few status bits like "printer
online" or "out of paper". Bidirectional ports
allow to receive data bytes, too.) This makes the image transfer
about 2.5x faster compared to uni-directional transfers.
In an earlier version of this text, I assumed that the Mac and
the PC versions are basically the same hardware except for a
serial to parallel converter in the PC version's connector plug.
Here's what William Lewis (wiml@omnigroup.com) had to say about
that:
"Actually, in the PC version, the only thing in the eyeball
itself is the CCD and some power-supply stuff and signal
conditioning stuff. Everything else, including the A/D converter,
is in the connector shell, which contains a 20-MHz PIC 16C64. The
PC camera seems to be a completely new design, not just a Mac
camera with a parallel interface; for example, the circuit board
in the eyeball says "WCAM100" on it and doesn't appear
to have any blank spots where a microphone would have been
connected for a Mac version.
One consequence of this is the cable between the eyeball and the
shell is actually carrying the pixel values as analog voltages. I
gather from some postings to this list that it's not too hard to
induce noise on this line, which shows up as sparkles in the
image. This gets worse if you hack up the camera to extend the
cable length."
The color version of the camera appears to send digital signals
between the eyeball and the shell. The analog-digital conversion
and optional compression are taking place in the eyeball.
1.2. Technical differences between Quickcam versions
The color Quickcam's firmware implements a new image compression
algorithm, VIDEC, that reduces the data size needed for one image
frame by about 4:1. This is about as much data per frame as with
the B&W version, so the color version can send 15-bit color
data at about the same frame rate as the B&W version.
VIDEC compression works only on still images (like GIF or JPEG),
not on streams of images (like MPEG). There is not enough memory
in the eyeball to store multiple frames at once. VIDEC
compression is very lossy, though not in a manner similar to
JPEG. The color depth is reduced repeatedly, and then bits are
shaved using a Huffman table. The processing required is much
simpler than for GIF or JPEG; thus compression can be performed
real-time by simple circuitry.
The algorithm has been patented by Connectix. As of this writing,
they have not entered any licensing agreements with 3rd-party
free software developers.
The color protocols as published by Connectix only describe how
to use the camera without compression. The uncompressed protocols
use 4 to 6 times as much data per frame as the B&W protocols,
and thus the frame rate is much lower.
The Quickcam VC and Quickcam Pro support ECP-mode parallel ports
in addition to older, SPP-mode ports. Thus transfers are faster.
The VC and Pro models also use a new CCD layout and low-level
image-transfer protocol. Little is known about either aspect of
these cameras.
1.3. Can I use the parallel version on a serial port (or
vice versa)?
Many people ask if they can connect their QC to the serial port
of their IBM PC, using a parallel-to-serial converter or using
the Mac version of the camera.
This is not possible, due to restrictions of the PC's serial
hardware.
Why? The QC was originally designed as a serial device and was
first built for the Mac. It needs (according to Connectix' Mac
programming specs) a speed of 918 kbps. The Macintosh's RS422
serial ports can easily handle this speed. The early PC's RS232
serial ports however had a maximum secure speed of 9600 bps,
today's PCs can handle 115200 bps.
This is why Connectix had to use the parallel port.
Too bad, because parallel ports are a lot harder to program than
serial. Third Party Driver developers would be much better off if
the PC version was a serial device. (Ok, but you can't blame
Connectix for that...)
[Is it really easier to write software for the serial QC? Not
necessairily - read the comment in section 1.5. for details.]
So what you'd need is special additional hardware. You could use
high-speed serial ports (RS422 cards are available for the PC).
But since there is no Connectix driver support for this kind of
hardware, you'd have to write your own drivers from scratch.
If you are just concerned about your PC's single parallel port
that you need for your printer: buy a mechanical port switch or
an additional printer port card. The latter is less hassle, more
elegant and even cheaper (<$20, make sure to buy a
bi-directional port).
1.4. Now what about that parallel port of my PC? Is it
bidirectional?
Now let's first explain some details about the parallel port of
your PC.
There are three kinds of parallel ports: SPP (Standard Parallel
Port), EPP (Extended Parallel Port) and ECP (Extended Capability
Port). The EPP and ECP ports are extensions to the SPP that
permit rapid I/O-Transfer to devices with an EPP or ECP port. The
SPP port was designed for doing output to a printer. It wasn't
intended for efficient input. However later it was extended to
permit higher-speed input in what is called bidirectional mode.
Since the advent of EPP and ECP (which also provide fast input)
the presence of a bidirectional SPP mode isn't as important, thus
computer and CPU board manuals often don't mention the
bidirectional SPP capability.
Transferring an image through the parallel port takes a
relatively long time. To make matters worse the PC has to be
involved in the whole transfer (unlike other slow devices on a PC
where the transfer is done via DMA or is interrupt-driven).
Therefore, reducing the transfer time means that you'll get your
images faster and that you'll be able to run other programs while
capturing images. You don't want to do image capture as a low
priority background task since if you take too long to capture an
image it will fade out of the camera's memory. A bidirectional
parallel port will permit the data to be transfered through the
parallel port nearly three times as fast.
The Linux and Freebsd quickcam libraires (that you can find at
the Third Party Drivers website) test to see if the parallel port
a camera is attached to is bidirectional. You'll probably want to
add some code to print out whether the port was found to be
bidirectional. If the libraries say that the port is not
bidirectional but you're pretty sure it is, then it may be a BIOS
setup problem. Check your BIOS setup and see how the parallel
port's mode is specified. In one case setting the mode to SPP
(from ECP) allowed the port to run in bidirectional mode.
Connectix recommends using the EPP mode or the SPP bidirectional
mode. Users have reported problems with the ECP mode.
One quick note regarding ECP and EPP modes: the features of these
modes are a superset of the features provided by bidirectional
SPP ports. ECP and EPP have the ability to use interrupts or a
DMA channel to make I/O easier on the CPU. However, Connectix
chose a proprietary pinout that isn't compliant with either ECP
or EPP, so drivers must use the standard bidirectional style of
transfer.
1.5. Can I connect the Quickcam to a XYZ computer?
If you are trying to connect a QC to a non-Apple and non-Intel
platform, check section 1.3. first for some basic information.
If your computer has a RS422 serial port (some Unix machines do)
or a serial port fast enough for the QC, get the Mac version and
the Mac programming specs. Consider yourself lucky: programming
is much easier with a serial device.
If your computer has a fully PC compatible 25-pin parallel port,
the PC version might work. Consider yourself lucky if your
hardware allows bi-directional transfers . However, you need to
be able to control every single data pin of that parallel port,
which might not be easy with your platform. Not all resellers of
Unix workstations have the low level programming specs of their
parallel hardware available...
As I write this, I know of only two non-Apple/Intel drivers:
1) John Bashinski has written a driver for Sun SparcStations
running Solaris: ftp://ftp-eng.cisco.com/s2qcam.
2) The cqcam driver, originally for Linux/x86 also works with
Linux/Alpha on Alpha-PC hardware and Linux/ARM on the Netwinder.
Look at http://www.cs.duke.edu/~reynolds/cqcam/.
Other Linux/x86 drivers may work on Alpha hardware, also.
1.6. Oddities of the serial Quickcam
With my earlier comments, some developers felt encouraged to try
and connect the serial (Macintosh) version of the QC to their PC.
But it seems that my comments were more harm than good.
While it's certainly true that writing software for a serial
device is easier than for one connected to the parallel port,
people are still having trouble with the serial QC.
I should make clear that currently, there is no third-party
serial driver available. If you want to try, you will do
pioneer's work. I also have to admit that all my earlier comments
were just things I made up reading the serial specs of the QC.
First of all, the serial technical specs are rather poor compared
to the document describing the parallel version of the camera.
Or, as Roy M. Lovejoy III (roy@adeptsolutions.com) notes:
"The FAQ was QUITE mistaken when it said that serial is much
easier... The Tech notes for the serial cam are a hair less than
worthless."
Jonathan Laventhol (jonathan@pavilion.co.uk) adds some further
technical oddments of the serial Quickcam:
"You say (section 1.3) that it uses 918 kbs. This looks
unlikely - but possible. Apple's documentation (Technical
Introduction to the Macintosh Family, 2nd ed.) says, p154, that
'both ports can be operated up to about 256 kilobaud using the
internal clock generator, or somewhat faster using an externally
supplied clock. [...] In most Macintosh models, the modem port
can use an incoming handshake line as a second external clock
source to support synchronous modems requiring separate receive
and transmit clocks.'"
"Your statement that Mac serial port can 'easily handle that
speed' seems suspect: it would be right at the limit, according
to the Apple doc just quoted. It also is rather a strange
speed."
[Note: Jonathan is right - the serial specs of the QC say:
"the minimun data clock rate from the camera is 918 kbps...
a nonsymetric, bipolar clock output is generated by the camera to
supply the external clock input required by the computer to
support this rate..."]
1.7. Can I connect more than one camera to one Mac/PC?
Yes, if you have the sufficient number of ports or a port switch.
The Connectix Windows software "QuickPict" supports
using more than one camera, although only the active application
polls the image stream and the others show a still image.
1.8. Can I connect the Quickcam to a network? (Web-Cam)
There are different approaches.
First, you can turn your computer to a camera server. There are a
lot of different solutions out there for exactly this kind of
thing, software, drivers and scripts for all kinds of operation
systems.
For still images, you should check the long list of Third Party
drivers at http://www.crynwr.com/qcpc/. Most people are
interested in drivers for the various unix flavours, (e. g.
Linux, FreeBSD) - you'll find it here!
If you want to see moving images over the net, a video
conferencing software is on your shopping list. Connectix sells
it's own, but I'd recommend CuSeeMe. It is available for many
platforms and it's shareware. Check http://www.cu-seeme.com.
There is a Linux program, Q-SeeMe, that speaks the CuSeeMe
protocols. It works by capturing an X window, so an X Quickcam
driver such as xcqcam or xqcam is required. See http://www.pangea.org/~mavilar/qseeme/qseeme.html
The nv and vic programs also work with the Quickcam. Pointers to
these programs, hacked versions, and patches, can all be found at
http://www.cs.duke.edu/~reynolds/quickcam/#vc
If you do not have a computer to spare and all you want is a
plain simple Web-Cam, you can also buy a box that connects your
camera on one side and the LAN on the other. There is a
commercial product out there called "Network Eye" and
you can find more information at http://microplex.com/ne.html.
2. Home repairs and extra fun with the Quickcam hardware
You can do a few foolish things with your QC, but maybe this
section is also helpful if you hear a strange noise from within
your camera after it fell down once too often.
2.1. The infrared filter / night vision
The QC has a tendency to follow earth's gravitational field. In
other words, it falls down pretty often. One of the first things
to break off is the internal infrared filter (if it's loose,
you'll hear it rattling when you shake the camera ball). I cannot
understand why Connectix used only three drops of glue to attach
the filter - a very cheap flaw in an otherwise good design.
You can have it repaired and wait a few weeks until the technical
support sends your camera back, or you can repair it yourself (at
your own risk, of course). Check the section below for that.
Some people even want to have the IR filter removed. According to
Connectix's specs, the QC's CCD chip is so sensitive to infrared
light, that after removing the IR filter, a room lit by the light
of a TV remote control can be seen perfectly through the eye of
the QC. So if you are interested in night vision, you might want
to remove the IR filter intentionally.
Michiel de Rond has done this with the Color Quickcam, you can
see some interesting images on
http://www.rcd-net.com/infrared/index.html.
2.2. The lens / video-microspope
The B&W QC has a "fixed-focus" lens. If you want to
refocus it (e.g. to make images of very close objects), you will
have to open the camera ball. Since you have to set the focus
manually, this is probably not the kind of thing you want to do
very often.
The color camera's lens is not fixed-focus and can be refocused
using the ring on the front of the camera.
2.3. Disassembling the B&W Quickcam ball
PLEASE NOTE that this is a very delicate procedure and that the
QC was not designed to be opened by anyone else but by the
Connectix technical support. If you follow these instructions,
you will greatly reduce the danger of cracking your camera. If
your camera is broken after this procedure, don't blame or sue me
- it worked perfectly for me. But even if it doesn't - you will
probably only break the exterior plastic shell and not the
electronics inside.
[Note by William Lewis (wiml@omnigroup.com): "I'd just like
to mention that I've ripped my QuickCam apart a zillion times
(the first time I didn't know about the paper-clip-in-the-pinhole
trick; I think I was one of the first people to mention it here)
and have broken off two of the three clips that hold the ball
together, but it stays together just fine by friction. So it's
not quite the end of the world if you're a little clumsy taking
it apart. (I would recommend being careful about static
electricity, though, on general principles.)"]
On the backside of the ball, there is a little hole behind a
sticker. Use a paper clip or a similar small metal stud to gently
press in there until you feel resistance. That is the first lock
clip. Push it gently forward until it unlocks (you'll hear a
little "click"). Don't push too hard or it will break
off.
There are two other clips above and below the lens' opening. To
unlock these, you have to tear apart the two plastic caps of the
ball. This is the most dangerous part, so be very careful. (I
almost broke one of the clips while doing this, luckily I had
some glue to fill the crack.)
You will now get the interiour parts of the camera ball: the
circuit board, the plastic box that covers the CCD chip, that
contains the infrared filter and that holds the lens.
You can refocus the lens (B&W camera only) after loosening a
small screw - see the section above.
You can also remove (or repair) the infrared filter. It is inside
the plastic cover box, so you have to take it off the circuit
board after loosening two small screws. The filter is attached
only by a few drops of glue, so that it comes off pretty easy if
the QC falls down.
If everything went smoothly, you can reassemble the QC with no
visual trace of the opening process. Before you do that, check
the three clips and all other plastic parts for any cracks.
3. Writing software for the Quickcam
If you want to write software for Apple's MacOS or Microsoft's
Windows 3.1x, Windows 95, and Windows NT, you're lucky: the QC
comes with drivers that make the camera a "video-in
device" to the operating system. You do not need to hassle
with the QC's internal structure. Refer to your operating
system's programming specs to find out how to handle such a video
input device.
3.1. Connectix official developer support
Connectix's Quickcam developer support program was discontinued
when Logitech bought the rights to the Quickcam.
3.2. Is there a driver available for the XYZ operating
system (e.g. Linux)?
To find drivers for plain DOS, Linux, FreeBSD and many other
platforms, check the Third Party Drivers list on
http://www.cs.duke.edu/~reynolds/quickcam/.
There is a FTP archive available at
ftp://ftp.cs.unm.edu/pub/chris/quickcam/.
If your OS isn't there, you need to get the programming specs
from Connectix and lock yourself in your office for a few days.
Some of the sources for existing drivers is portable; porting a
working Linux driver is probably easier than writing one from
scratch. If you wish to announce a driver for your OS, please
join the mailing list; information regarding the mailing list can
be found at http://www.crynwr.com/qcpc/.
3.3. The low-level programming specs
Connectix used to hand out their low-level specs with a
non-disclosure agreement. This meant that source code written
following their specs was not allowed to be freely available. But
that's exactly what you need for a project like Linux or FreeBSD.
A few brave people started re-engineering the QC to find out on
their own. (That way, you are not bound by the NDA.) The first
independent drivers were based on the information gathered by
that project.
Connectix made low-level specifications available for the B&W
Quickcam and Color Quickcam, but Logitech removed these documents
and has not made specifications available for any newer
Quickcams. For programming information for older cameras, examine
the source for any of the readily available Linux Quickcam
drivers, or contact the Quickcam third-party developers list.
3.4. What mistakes exist in the specs?
There exists an errata page for the PC grayscale spec, version
1.11.It gives corrections for two graphs in section 4.2.1.1 and
4.2.1.2 and for two equations. If you got the current version of
the grayscale specs, you also have this page at the end of your
document.
Currently, these mistakes are known for the PC Grayscale spec,
version 1.3, Sept 24, 1996:
page 31, section 4.3.3.8 correct info is:
in 6-bit mode, 0x00 is white and 0x3f is black
in 4-bit mode, 0x00 is black, 0x01 is white and 0x02 through 0x0f
are a smooth gradient from almost white to almost black
4. Troubleshooting
The obvious answer to many questions is: Did you read the
Documentation that came with your software? Sometimes it's wise
to actually read the README and/or INSTALL files. Some of the
software even has man pages.
4.1. How to make my PC's parallel port bidirectional?
If you have a very old computer, chances are that you can't. Some
older models only support unidirectional parallel transfers.
Maybe you want to buy an additional printer port card (available
for $20 or less) and plug it in of your PC's extension slots.
If your PC is not a stone-aged model, use your PC's BIOS setup to
set the parallel port to EPP mode. This worked for most users,
though some reported problems. SPP should work, too.
Check section 1.4. for details.
4.2. Linux Autoprobing: Sometimes, the driver finds the
camera, sometimes not.
Don't always autoprobe. Let me explain why.
The autoprobe code used by the Linux drivers is not using the
method recommended by Connectix. The Connectix method can mess up
a printer that is attached to your parallel port, so the author
chose a more "polite" method that will try to find your
camera without barking at the printer. [ note: This is not the
case for all drivers. Some of the color QC drivers use
Connectix's method, at least by default. ]
Autoprobe was only made to make the first steps easier for you,
the user. So that you do not have to check all the hardware port
addresses of your parallel connectors, the autoprobe code will
check all of them and try to find the camera. Then it tells you
at which address the camera was found. Once it is found, you can
write this port address into your qcam configuration file. The
driver will skip autoprobe and use this address right away. Read
the README file for details.
Here are some details by Sean Foderaro (jkf@tiger.franz.com):
"You have to first understand how the Quickcam works. From
the moment the camera is powered on, it cycles between 'picture
mode' and 'command mode'. In 'picture mode' the Quickcam measures
the light falling on the CCD. Then it copies that picture to its
memory and enters 'command mode' where it awaits a command from
the PC (such as one to copy the image to the PC). Command mode
ends when the Quickcam determines that the last image saved is
beginning to fade from its memory at which point to goes back to
picture mode.
While in picture mode the Quickcam periodically toggles status
bits readable by the PC. This is to let the PC know that the
Quickcam is still alive. It is these status bits being toggled
that tells the autoprobing software that a quickcam is attached
to a particular parallel port.
The problem with detecting a camera this way is that the duration
of picture mode depends on the last brightness setting given the
camera (or some random value when the camera is turned on). If
the camera stays in picture mode too short a time then the
autoprobing code may never see the toggling bits and may not
realize there is quickcam attached."
4.3. There is that rattling noise in my QC ball. What's
wrong?
Uh-oh. There should be NO noise at all when shaking the QC ball.
If there is however, this does not really mean trouble. Most of
the times, it's just the infrared filter inside that got loose.
It's relatively easy to repair this at home (check section 2.).
Be aware that you lose any warranty when doing home repairs.
5. About this text
This is a proposal. Its first draft version was written by Hanno
Mueller of Kabel New Media, Hamburg, Germany. Hanno quietly quit
maintaining the document, and so Patrick Reynolds has released an
updated version and resumed maintenance.
The following people added valuable information. Thanks to...
Sean Foderaro (jkf@tiger.franz.com) for parallel port
hardware descriptions (1.4.) and for a buglist of the grayscale
specs (3.5.).
Paul Fox (pgf@foxharp.boston.ma.us) for helping me [Hanno] with
my English
Charles Henrich (henrich@crh.cl.msu.edu) for further corrections
William Lewis (wiml@omnigroup.com) for additional hardware
specific information
Roy M. Lovejoy III (roy@adeptsolutions.com) for a helpful
complaint
Chris Snell (chris@cs.unm.edu) for setting up the Third Party
Drivers FTP site
I'd be more than happy to hear your opinion and to include your
additions about this text. Please e-mail to reynolds@cs.duke.edu.
Thanks.