13 November 1999
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-260, DC-265, and DC-290 are currently 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.)  The DC-220 should also work with this driver, given information
about the USB product IDs.  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.

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.

As yet, no reports have come from Linux users on non-Intel hardware.
(You could color coordinate your iMac with a DC-240i ... :-)


SETUP

Configure in the DC2XX USB driver, and have it in your kernel.  Recently I
compile it right in, but I've done it as a module in the past.

Create a device, perhaps like this (both read and write):

    # mknod -m 0666 /dev/kodak c 10 170

That "170" is not formally assigned, and this command may change.  If you're
using a non-Kodak camera, you may prefer another name.

Don't plug in more than one compatible camera at this time.  One of them
will be ignored, but I'd not be sure which one!


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/misc for the a Kodak DC-2xx
      minor device number

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

Second:  when you connect your camera to the computer, does it get recognized
by the driver?

    - 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

    - if you don't have /proc support for USB, see if "dmesg" output
      tells you that you plugged in your camera.

	USB new device connect, assigned device number 1
	Manufacturer: Eastman Kodak Company
	Product: KODAK DC240 Zoom Digital Camera
	USB Camera is connected
	usbcore: dc2xx driver claimed interface c3a68600
	ohci-control thread sleeping

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

    - When you configure your camera, tell it to use "/dev/kodak" (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.
