14 April 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.  There is a python script
for accessing these cameras (see archives of the linux-usb mailing list)
and a "Digita Services" library that can also use this driver.

The HP PhotoSmart C500 should also work, since it's another Digita camera
with USB support.


USB HARDWARE

Recent kernels have had no particular problems using this driver with
either OHCI or UHCI chipsets, and have worked on the PowerMac 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, and some old hardware may not handle USB correctly.


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 0660 /dev/usb/dc2xx0 c 180 80
    # mknod -m 0660 /dev/usb/dc2xx1 c 180 81
    ...

NOTE:  you would normally configure PAM so that the user logged in at
the console is granted ownership of these devices.  console.perms(5)
explains how to do this.

The driver supports multiple device nodes.  The USB framework supports
a maximum of sixteen device nodes (up to minor device number 96).

When you plug in one camera, it will use the first device node (dc2xx0
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 and correctly mounted the
      usbdevfs on /proc/bus/usb.

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, as may the strings presented, but "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
	S:  Manufacturer=Eastman Kodak Company
	S:  Product=KODAK DC240 Zoom Digital Camera
	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
	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/usb/dc2xx0"
      (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.
