RE: Serieller Verbindungstreiber für Minolta Dimâge V

#1 von matthiaspaul , 12.03.2014 18:12

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.

Viele Grüße,

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

Known Bugs
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 '' 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!.

Serial Protocol
The serial protocol used by the DImageV (at least the part I cracked)
is the following:

The line discipline is:
speed: 38400
bits: 8
parity: none
stop: 1
hardware hand shake (RTS/CTS lines)

The low level commands (or control commands) follow the ASCII standard,
that is:

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
went wrong).

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 <>.

Warranty and redistribution
Absolutely no warranty. Freely redistributable.

Copyright© 1998 by Carlos Vidal. All rights reserved.

Contacting the author
send E-Mail to:

Revision history
98/8/28 Preliminary version[/quote]

"All the important human advances that we know of since historical times began
have been due to individuals of whom the majority faced virulent public opposition."
--Bertrand Russell (Minolta Forum Thread Index)

Aufgrund eingeschränkter Benutzerrechte werden nur die Namen der Dateianhänge angezeigt Jetzt anmelden! f112t34942p303415n2.bin f112t34942p303415n3.txt

Beiträge: 14.595
Registriert am: 08.06.2004

RE: Serieller Verbindungstreiber für Minolta Dimâge V

#2 von matthiaspaul , 30.03.2014 20:28

Ebenfalls schon aus dem Jahre 2000 - 2001, hier ein serieller Treiber von Gus Hartmann für die Minolta Dimage V, der Teil des Open Source-Projektes gPhoto ist und auf einer damals von Minolta zur Verfügung gestellten Original-Spezifikation des seriellen Protokolls basiert:

Viele Grüße,


"All the important human advances that we know of since historical times began
have been due to individuals of whom the majority faced virulent public opposition."
--Bertrand Russell (Minolta Forum Thread Index)

Aufgrund eingeschränkter Benutzerrechte werden nur die Namen der Dateianhänge angezeigt Jetzt anmelden!

Beiträge: 14.595
Registriert am: 08.06.2004


  • Ähnliche Themen
    Letzter Beitrag
| 2002- © | |
Xobor Einfach ein eigenes Forum erstellen