Seit etlichen Jahren nicht mehr online, aber aus dem Internet Archive gefischt:
Ein kleines Tool von Carlos Vidal (mit Quelltext), um auf die auf der SmartMedia-Karte gespeicherten Bilder einer Minolta Dimage V über die serielle Schnittstelle unter Linux (und im Prinzip beliebigen anderen Betriebssystemen) zuzugreifen. Nebenbei auch eine nette Dokumentation des von Minolta verwendeten Schnittstellenprotokolls. Das angehängte .TGZ-Archiv habe ich auch ins .ZIP-Format konvertiert, um es für Leute, die mit komprimierten TARs nichts anfangen können, etwas leichter zu machen.
ZITATMinolta DImageV Linux Driver
This is a simple program to read an delete the photos taken with a Minolta DImageV. It has been
in use under Linux for a while and seems pretty stable. It should be possible to compile it under other Unixes or Windows, but I didn't tried.
Source code: dimagev-1.0.tgz
README file with user guide, installation instructions and protocol description: README
As usual, any feedback, upgrade, suggestions and money donations are welcome! :-)
ZITATDriver for the Minolta DImageV digital camera
This is a very primitive program to download and remove the images from
a Minolta DImageV digital camera.
As Minolta did not publish the technical information about the serial
protocol used to control the camera (as I understood because of a
non-disclosure agreement with the company developing it) the present
code is based on the commands identified by snooping at the serial line.
Future versions will have the possibility to shot images from a nicer
interface and to set the resolution and flash modes. So far I didn't had
the time to look at this.
Once in the source code directory run:
make install (as super-user or use it locally)
If you are in Windows/DOS, just run 'unzip' the file and run the executable
from a DOS window.
dimagev [(-p|-port) /dev/xxx] [(-v|verbose) (0-9)] [(-h|-help|--help)]
'-port' indicates the port to be used. Default is /dev/cua1 under Unix
and COM2 under DOS.
'-verbose' increases the verbose mode. This is used most for debugging.
The camera needs some time outs that may be too tight just now. This
flag can tell how far it comes.
'-help' gives a short help.
The program asks if all the images should be downloaded or if the user
wants to say which ones to skip. The images are saved in files called
WARNING: If the file already exists it will be overwritten. The idea
is to download the images as fast as possible, without asking all the
time if you are sure to do what you want to do.
After downloading the images the program asks if all images should be
removed from the camera or if the user wants to say which ones should
If the camera has low battery the whole procedure breaks down because
this message is not handled properly.
Source code details
The source code is prepared to support future protocol changes or even
completely different protocols for other digital cameras. So far it is
a library of digital camera functions written in C++. DigiCam.h defines
the basic functionality and DImageV.* implements it for the DImageV.
Serial.h is the base class definition for a generic serial line control.
DImageVSerial implements it for the DImageV.
The 'main.cc' is just an example about how to use these classes.
In the future a interactive program can be build (but it can end up
as slow as the one coming with the camera for Win95!.
The serial protocol used by the DImageV (at least the part I cracked)
is the following:
The line discipline is:
hardware hand shake (RTS/CTS lines)
The low level commands (or control commands) follow the ASCII standard,
ACK = 0x06 = acknowledge
NAK = 0x15 = negate acknowledge
EOT = 0x04 = End of task
STX = 0x02 = Start block
ETX = 0x03 = End block
The communication between the camera and the computer is done basically
in form of blocks. A block has the following structure:
Offset Length Value Meaning
0 1 STX Start block
1 1 seq Sequence number (0 if not in sequence)
2 2 len+4 Block length
3 len data data
4+len 2 checksum
6+len 1 ETX End block
That is, tha block starts with STX, then comes the sequence number (used for
multiblock transmissions, for instance when downloading an image).
Then comes the block length as a two byte number in network byte order. The
length is counted from the STX to the ETX.
Then follows the data and finally comes the checksum and the end block
The checksum is just the 16 bit sum of all the bytes from the STX byte up
to the end of the data.
After sending a block the other end answers with an ACK (or NAK if something
The data is either a command or the answer to a command.
These are the known commands:
0x01 Ask the DImageV software version. The camera answers with
a string of the form "MINOLTA L1 1.001.00"
0x07 Get the number of photos taken, remaining and the current one,
and probably some extra status information.
0x09 Get the camera's date and time. The format is such that if you
print it in hexadecimal you can read the date and time (weird!.
0x03 N Get the date (and probably some extra data) of the photo number N.
N is a 2 byte number (so the command length is 3 bytes). The date
and time have the same format than with the command '0x09'.
0x0d N Get thumbnail of photo 'N'. The format of the answer is a EXIF
thumbnail, but I don't know how to transform it to JPEG.
0x04 N Get the photo number 'N'. The format of the photo is EXIF and can
easily be transformed to JPEG by replacing the workd "JFIF" with
0x05 N Remove photo 'N' from the camera.
There is a misterious command '0x80' used to select the current photo.
I thought it was used to synchronize the camera timer but it didn't
work that way. I left the code anyway (in DImageV::setcurr) because
it seems to be something like this (may be somebody else can crack it!.
There are some time-outs introduced here and there because the camera does
not respond instantly and if things go too fast it get lost. These are
implemented by calling a home breed "sleep" function. So far most of the
"sleep" wait 250ms, this was the lowest I could have without messing things
All this was deduced by logging the serial communication using 2 computers:
one running Win95 and connected to another running Linux with a null-modem
cable, and this one connected to the camera.
The program used on Linux to manage the two communication ports and log
the traffic was a slightly modified version of "snooper" by
Jun-ichiro itojun Itoh <email@example.com>.
Warranty and redistribution
Absolutely no warranty. Freely redistributable.
Copyright© 1998 by Carlos Vidal. All rights reserved.
Contacting the author
send E-Mail to: firstname.lastname@example.org
98/8/28 Preliminary version[/quote]