MltRec

A Free Remote Control Program for Minolta DiMAGE A1 Camera

News

News 2005-02-04: Stay tuned! However you can see no progress on this page (except FTP), I am learning principles of GUI programming. I am working on device object and live image widget. I plan to improve thread support and use multi-platform gthreads in GLib.

News 2004-10-30: Read loop works again. It is much more complicated than ever before, but it has no benefit. It is because that thread synchronization experiments in last week discovered many limitations of data flow. Enhanced list of protocol limitations in protocol description. Simplification of read loop is scheduled for future. Now I plan to write custom GTK+ widget for live preview, probably the only correct solution of live preview.

News 2004-10-21: Live previev attempt without idle loop. Research on source of live preview freezes – callbacks in read_loop are executed with usb_mutex and somewhere it causes dead lock. Needs more research, whether to call callbacks with usb_mutex or adopt code to avoid dead locks in this situation. New sections: protocol and porting.

Good news 2004-10-19: Version 0.00. Basic GUI functions work again with threads, which brings quick responses. I must learn much about GSignal to avoid 100% CPU load in preview loop (correctly wait for next image, if previous is not yet rendered or transfered). Basic backend is finished and works. Needs to add more callbacks and usable settings notify interface.

Code is ready for third party testers, which can help with with guessing of more camera settings (i. e. set camera manually to defined state, connect it, read settings, disconnect, set to another state, read again, compare) and unknown parameters of functions in commands.c (i. e. edit test program, try command with various arguments and guess what happened).

News 2004-10-16: Threading code works! Code has option for verbose messages.

News 2004-10-10: Started debugging phase of threading code.

News 2004-08-16: Working on three thread design without delays after command submission (and learning about threads).

News 2004-07-02: Firmware bug work-around works. To finish pseudo-threading API, some order-critical operations still needs to be identified and forced sync needs to be added.

News 2004-07-01: Total API rewrite. New API is threading ready, and uses submit/callback instead of waiting for each reply. It will allow faster camera responds, simple coding of fast GUI, capture and live image during file transfer. Unfortunately, it seems, that camera firmware has a bug: if two same commands are pending, camera replies more times to last one and loses all these previous commands. I am working on work-around.

Good news 2004-06-15: Version 0.000. Deciphered instant preview confirmation after capture with both transfer confirmation and reject. “Deciphered” file names – it seems, that there is no image numbering done by camera, and picture number has to be replaced in computer, only suffix is significant. Now I have probably deciphered all basic functions.

Recollecting all available information, I have decided to do again small library rewrite to split device device dependent and independent parts and prepare future threading – usb_{os}.c will contain OS dependent things, protocol.c low-level camera protocol, commands.c low level command set, interface.c advanced commands and ui.c helpers for textual representation of data.

News 2004-06-13: More than a half of all settings deciphered. Deciphered settings change notification. No progress in file names and instant preview confirmation.

News 2004-06-11: Deciphered capture, many settings and some replies.

News 2004-06-07: Deciphered some command arguments.

News 2004-06-05: First successful capture by mltrec. No timeouts any more. Still needed to decipher most arguments.

News 2004-06-04: First capture command. But many timeouts before, data are not yet written, camera hard freeze after.

News 2004-06-03: Library rewrite. First attempts to capture image without any settings in mltrec. Camera rejects it – required command has to be found.

Note 2004-05-23: This is preliminary home page of project, primarily for developers. This project is not yet intended for users.

What is MltRec

MltRec is a library, command line and GUI program to control Minolta DiMAGE cameras using Minolta DiMAGE Capture USB Remote Computer Control Protocol. Currently it is tested only with model A1, but maybe it can work on other models, too (especially on Minolta DiMAGE A2). It allows remote camera control, remote capture, getting live image and downloading snapshots. It is written in architecture independent C and should be portable to all operating systems. It is developed on GNU/Linux, but it can be simply ported to other platforms.

MltRec contains command line application (mltrec) and GNOME GUI application (gmltrec).

MltRec is free software and is distributable in terms of GNU General Public License.

WARNING: This application is based only on my own experiments, it was done without any protocol description from Minolta. It means, that MltRec is only a guesswork and there is no guarantee of correct understanding of remote control protocol or even camera damage (Especially if you plan to experiment with libmltrec, please note that UNKNOWN commands can do anything, including chip or gyro calibration or even firmware flashing!).

Project state

MltRec is in early state of development (pre-pre-alpha version). It is not yet ready for real work. But it is subject of development. Functions will be added after progress in the protocol deciphering.

You can need to run this program as root.

NOTE: By my mistake, to compile it you need headers from cdparanoia for endian conversion. I will fix it in next version.

Screenshot

Not all buttons really works yet!

screenshot of GMltRec

Hardware protocol

Hardware protocol basics are described in separate page. It references to source code for details.

Porting

Porting of MltRec library should be simple, it uses only few trivial libusb calls (can be easily replaced by native calls; on Windows you should use libusb-win32) and POSIX threads (it will change in next version). Everything other is platform independent. If you want to port to other platforms, feel free to send me your patches.

GMltRec requires GTK+ toolkit. It also requires GNOME, but currently only for stock icons.

Home page

MltRec home page is located at http://www.penguin.cz/~utx/mltrec.

Download

You can download latest source code from
http://www.penguin.cz/~utx/ftp/mltrec/
http://www.penguin.cz/~utx/ftp/mltrec/

Testing changes are available from FTP lib_redesign_snapshot directory (no guarantee that it works).

Author

MltRec was written by Stanislav Brabec.

Alternative software

As far as I know, there is only commercial alternative to this software – application DiMAGE Capture software from Minolta, which works only with few versions of one operating system (Microsoft Windows ME, 2000 and XP) and Dimage Capture SDK, which allows you to write your own software supporting this protocol.

HOWTO

  1. Add a ferrite core FRC-100 to your USB cable (one piece came with the camera).
    See the ferrite core on the cable.
  2. Turn the camera into the Computer Control mode.
    See the camera menu.
  3. Connect the camera to the computer and start gmltrec.
  4. If things are working OK, you can see REC PC on the top LCD display of the camera.

Notes and questions send to: Stanislav Brabec

Main page of Penguin's UTX WWW

Penguin server Valid XHTML 1.0! Valid CSS!