Open Digita Services

New! August 18, 1999: Version 0.0.2 released:





About Digita

Digita is an "operating environment" designed by specifically for use in digital imaging products, and currently found in digital cameras such as the Kodak DC-220, DC-260, DC-265, DC-290, and Minolta EX-1500. Digita provides cameras with a graphical user interface, enables developers to write scripts for the camera, and manages the host interface by which images are downloaded to PCs from the camera.

Neither Flashpoint nor Kodak provide Linux software for interfacing with the Kodak cameras. However, Kodak has released the Host Interface Specification (HIS), written by Flashpoint, which describes how to communicate with Digita cameras.

Note: Digita is a trademark of Flashpoint Technology, Inc. This page is not sponsored, supported, or sanctioned by FlashPoint Technology, Inc. or the Eastman Kodak Company.


About OpenDiS

OpenDiS, the Open Digita Services project, is an effort to write Open Source tools for accessing Digita cameras from Linux and other unix operating systems. Initial targets for support are the Kodak DC-220 and DC-260 digital cameras (these are the cameras that the developers happen to own).

OpenDiS has been tested with and is known to work with the following cameras:

  • Kodak DC-220
  • Kodak DC-260
The following cameras use Digita, and may be compatible with OpenDiS, but have not been tested:
  • Kodak DC-265
  • Kodak DC-290
  • Minolta EX-1500
If anyone is able to try OpenDiS with any of the untested cameras above, please let us know. Success or failure, we'd like to hear from you either way. The project members' e-mail addresses are listed at the bottom of this page.

OpenDiS will not support cameras that don't use Digita; this includes the Kodak DC-200, DC-210, DC-240, DC-280, and earlier cameras.


About the Software

OpenDiS currently consists of two products: a communications library and a download tool. Although these two products currently reside in the same source tree and are distributed together, it is an important goal of the project to maintain a clear line between generic library functions and application-specific features. In other words, we want the library to be suitable for embedding in any application, and so we are taking care not to taint the core library with application-specific code. This distinction will become clearer as the project matures, and the products grow in their own directions.

The OpenDiS communications library is a body of C code that implements the Digita HIS protocol and enables applications to easily interface to Digita cameras. The library API is broken into three levels:

Level-0 API
Provides protocol primitives and basic buffer management for talking to Digita cameras. The Level-0 API is not yet well defined, but will be provided for applications that need low-level access to the camera.

Level-1 API
Provides a set of calls nearly identical to the command set described in the Digita HIS. The Level-1 API is suitable for use by any application, though it requires the application program to perform more detailed management of the camera than the Level-2 API.

Level-2 API
Provides the highest-level and most convenient access to the camera. For example, the ODSInitialize function creates a camera connection, and automatically initializes the communications protocol based on environment variables and command-line flags.

The utility tool, currently called ks, is a small command-line program that uses the comm library to control the camera. Although other, better, tools exist (see the "Related Projects" section) for managing digital cameras, we will probably continue to develop ks to provide support for Digita-specific features not supported by more general-purpose products.


Current State

The current version of OpenDiS is 0.0.2, released August 18, 1999. Most of the commands specified in the HIS (Host Interface Specification) have been added to the core library. Ks has gained extra functionality, and more functions will be added. For now deleting pictures, downloading, taking pictures, status/time queries, and turning the camera off are now implemented in ks. Although functionality is easy to add, we developers have added the functionality as we need to have basis. Please contact the developers if you would like to get a specific task supported.

The comm library only supports serial connections; this means downloading is slow. The library does not yet support USB and IrDA connections.

The Level-0 API has not been defined, but all the constituent code has been written, and appears to be fairly stable for pre-alpha code.

The Level-1 API is well-defined, but only a few of the HIS commands have been coded.

The Level-2 API is not well-defined, but work has begun on the setup and teardown code. These functions are used by ks to set up the camera connection.

Ks is still under development. It is capable of downloading/taking/deleting pictures from a camera.


Future Directions

It should go without saying that we intend to flesh out the core comm library. This means fully defining the Level-0 and Level-2 APIs, and completing coding of the Level-1 and Level-2 APIs. We will add support for USB and IrDA connections as soon as linux kernel support for these devices matures.

We intend to develop ks into a tool that can use all the capabilities of Digita cameras:

  • Copying and deleting photos from the camera.
  • Setting photo-specific attributes.
  • Configuring the camera.
  • Taking pictures with the camera.
  • Uploading Digita scripts and firmware upgrades to the camera.
  • Setting user-definable camera attributes, such as the "user copyright string".

EXIF Library

Image files downloaded from Kodak Digita cameras contain embedded files in "EXIF" format. These embedded files contain information about the image, such as the date and time the photo was taken, the lens aperature and flash setting when the photo was taken, etc. When the image file is still in the camera, this information is available through the host interface. But once the image has been downloaded, it is accessible only through the EXIF file.

We want our tools to be able to read and use the information embedded in EXIF format, so the OpenDiS project may eventually add an EXIF-access library as a product seperate from, but used by, the Digita access tools.


A number of external products are candidates for OpenDiS support in the form of plug-ins. These plug-ins would adapt the OpenDiS comm library Level-1 or Level-2 API to the API required by the host product. The external products we're currently thinking of supporting are:

A SANE wrapper around the OpenDiS comm library would enable the GIMP and other SANE-capable tools to download images directly from the camera.

The GNU Photo project is an open-source application for managing collections of digital images, including automated management of digital cameras. Supporting gPhoto would require writing a wrapper around OpenDiS to adapt it to gPhoto's camera API.

Eugene Crosser's command-line tool for downloading images from cameras. Supporting PhotoPC would be similar to supporting gPhoto: by writing an adapter layer between OpenDiS and the PhotoPC API.

Other plans for the future include cross-platform support to ensure that OpenDiS works on all unix OSes, not just Linux.



OpenDiS 0.0.2 is available from /opendis-0.0.2.tar.gz.

RPMs coming soon!


Building OpenDiS

Building OpenDiS is simple: unpack the distribution, change to the source directory, and run make:

    tar xzf opendis-0.0.2.tar.gz
    cd opendis-0.0.2/src

During development, OpenDiS is built using the glibc-2 libraries, but it should also build and work with libc5. It now works on FreeBSD and Solaris 2.x too. If not, let us know.


Using ks

The utility program is invoked as follows:

ks [ options ] command
where options specify the device connections of the camera, as explained below. Command is one of the commands listed below:

Delete all files in the camera

Download pictures

Get camera's date/time

Take a picture

Show pictures taken, available and raw count

Checks if camera is on

Turn the camera off

To find your camera, ks needs three configuration parameters: the device the camera is plugged into, the type of device, and, for serial ports, the rate at which to talk to the camera.

Specified either with the ODSDEVICE environment variable, or the --device command-line option. Points to the device file under /dev at which the camera will be found.

Specified either with the ODSTYPE environment variable or the --type command-line option. May contain one of the values serial, usb, or irda. Ks will attempt to guess the device type based on the device name, so the type does not always need to be explicitly specified.

Specified either with the ODSRATE environment variable, or the --rate command-line option. Applies only to serial-port connections. Serial rate defaults to 9600 bps, so users should specify as fast a rate as their serial ports will support. The actual rate is negotiated with the camera, so rates that are too high for the camera will be lowered automatically.
The recommended way to configure ks is to set environment variables in your .profile. For example, my configuration is:
    export ODSDEVICE=/dev/ttyS2
    export ODSRATE=115200
Because I use a normal serial device, I don't have to specify the device type. An equivalent configuration, specified from the command-line is:
    ks --device=/dev/ttyS2 --rate=115200

Configuring via environment variables is recommended because the settings are automatically inherited by ks from the shell, so the command-line settings can be omitted. However, if both environment and command-line options are used, the command-line options take precedence. Please use "ks -h" for extra help, and "ks -l" for supported commands.


Related Projects

The following project descriptions were taken from the appindex:

The GIMP is the GNU Image Manipulation Program. It is a freely distributed piece of software suitable for such tasks as photo retouching, image composition and image authoring. It can be used as a simple paint program, an expert quality photo retouching program, an online batch processing system, a mass production image renderer, a image format converter, etc.
gPhoto (with the photopc library) allows you to download, organize, and manipulate pictures from your digital camera. It supports a wide range of cameras, and more support is in the works. There's also a mailing list gphoto-kodak for discussion about Kodak cameras, for more information please see
PhotoPC is a "freeware" software which may be used to control and retrieve photos from Epson PhotoPC digital cameras under Unix/Linux, Microsoft Windows 95, Windows NT, and MS-DOS. (This software may also work with Agfa ePhoto, Olympus D-xxxL, and Sanyo digital cameras based on firmware from Sierra Imaging, Inc.) The software is command-line oriented, and does not make use of a graphical user interface (GUI). By using this software with a "batch file" or Windows short-cut icon, photos can be downloaded from the camera quickly, with a minimum off effort.
kdcpi is a perl program written to control the Kodak DC210 and DC200 Digital Cameras. It is command line based, supports downloading pictures, deleting pictures, taking pictures and viewing camera status.



OpenDiS source code is distributed under the terms of the .



Please report any bugs to project members (see addresses below)


Project Members

Web hosting for OpenDiS provided by Netpedia. See the Open Source Web Presence Project at

Jim Thompson
Last modified: Tue Oct 26 13:51:38 /etc/localtime 1999