19 January 2000
david-b@pacbell.net

This is an overview of how to use the "dc2xx" USB driver with certain
digital still cameras from Kodak and other vendors.


CAMERAS

This driver will mostly be used with Kodak DC-2xx series digital still
cameras, but it should be trivial to tell it about several non-Kodak
USB-enabled cameras.

You'll most likely want to hook it up to recent versions of "gPhoto"
(www.gphoto.org), since version 0.4 and later know how to use it to talk
to Kodak DC-240 and DC-280 cameras over USB.

In addition the DC-220, DC-260, DC-265, and DC-290 are also recognized.
However, like other cameras using the "Digita OS" (from www.flashpoint.com)
there is no gPhoto support for this camera.  At this writing the best
known support for these cameras is a Python script that supports image
downloading from those cameras.  (See archives of the linux-usb mailing
list.)  When it becomes available, the HP PhotoSmart C500 should also
work ... it's another Digita OS camera with USB support.

It's likely that other digital still cameras can also use this USB driver,
even if they're not from Kodak and don't use Digita.  The reason is that
most currently known USB still camera protocols treat USB like a faster
packet-carrying connection than a serial line, which is exactly how this
driver looks to an application.


USB HARDWARE

This has been shown to work on x86 OHCI and UHCI (Intel) chipsets.  OHCI has
been trouble free; not so with UHCI, which was first seen to be happy with
2.3.24 kernels, and has not been as fast as OHCI.  Users on the PowerMac
platform have had success, although the stock kernel doesn't yet support
that platform.

Note that in some cases changes in BIOS settings may be needed before
your USB works.  At least one user has reported a need for SMP-related 
settings as well.


SETUP

Configure in the DC2XX USB driver, and have it in your kernel.  It works
as a module, or compiled in directly.

Create at least one device, perhaps like this (both read and write):

    # mknod -m 0666 /dev/kodak00 c 180 80
    # mknod -m 0666 /dev/kodak01 c 180 81
    ...

The driver supports multiple device nodes.  The USB framework supports
a maximum of sixteen device nodes (up to minor device number 96), though
by default fewer devices are available.

When you plug in one camera, it will use the first device node (kodak00
in the example above).  A second camera will use the second device node,
and so on.


SANITY TESTING

First:  if you've got /proc support, make sure that the driver has hooked
itself up correctly.

    - You should see an entry in /proc/bus/usb/drivers for "dc2xx",
      if you enabled USB /proc support.

Second:  when you connect your camera to the computer, does it get recognized
by the driver?  (Make sure the camera is powered on!)

    - if you've got /proc/bus/usb/devices, you should see an entry
      something like this.  The "ProdID" may be different if you didn't
      plug in a DC-240, but the "Driver=dc2xx" had better be there.

	T:  Lev=01 Prnt=00 Port=00 Cnt=01 Dev#=  1 Spd=12  MxCh= 0
	D:  Ver= 1.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
	P:  Vendor=040a ProdID=0120 Rev= 1.08
	C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr=100mA
	I:  If#= 0 Alt= 0 #EPs= 2 Cls=00(>ifc ) Sub=00 Prot=00 Driver=dc2xx
	E:  Ad=01(O) Atr=02(Bulk) MxPS=  64 Ivl=  0ms
	E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=  0ms

    - see if "dmesg" output tells you that you plugged in your camera.

	Manufacturer: Eastman Kodak Company
	Product: KODAK DC240 Zoom Digital Camera
	Serial Number: ?
	dc2xx.c: USB Camera #0 connected

Third:  (optional) can you use gPhoto to talk to the camera?

    - When you configure your camera, tell it to use "/dev/kodak00" (or
      whatever name you used).  Right now, gPhoto emits a diagnostic
      message (non-GUI) saying that it since it didn't act like a TTY,
      it's assuming it's got a USB connection.

    - With the camera turned on, get the "camera summary".  It'll
      talk to the camera -- and tell you you're using USB.

If you got that far, you should be able to use everything fine.


ADDITIONAL INFORMATION

You may find that you need more driver-specific information, which is
currently accessible through a link from http://www.linux-usb.org/
along with other Linux USB resources.
