------------------------------------------------------------------------ | Multican v0.0.5 | USB remote control tool for Canon EOS class cameras ------------------------------------------------------------------------ Copyright (c) 2006 Jindrich Novy (jnovy@users.sourceforge.net) Contents 0. Introduction 1. Which Canon EOS cameras is multican able to handle? 2. How to use it? 3. Which functions are supported? 4. Script format 5. Example script 6. Known Bugs 0. Introduction The purpose of this utility is to give an user a possibility to control Canon EOS class cameras remotely. Multican uses its own implementation of Canon communication protocol, i.e. it doesn't use the Canon SDK (Software Development Kit) libraries, which are neither multiplatform nor open-source. 1. Which Canon EOS cameras is multican able to handle? Multican can handle Canon cameras that use class 4 communication protocol (300D, 10D) and newer ones that use class 6 communication such as 350D, 30D, 20D, 5D. Multican won't work with 1D Mark II since I had no luck to investigate the communication format properly. It also won't work with 400D because Canon introduced a significantly incompatible protocol with previous models. Currently 300D, 350D, 20D, 10D, 5D cameras are tested. 2. How to use it? To keep multican focused on its functionality it doesn't use fancy GUIs, but a simple commandline interface. If multican is invoked without any argument, it detects all known attached Canon EOS cameras and reports their status, such as camera battery status, owner name and camera serial number. Then it starts a sample remote controlled shooting sequence, where there will be taken 3 shots with various Av, Tv and ISO parameters, storing the results on the internal camera compact flash card. 3. Which functions are supported? Several remote control functions are available in scripts, they are: - setting image quality [quality=fine-l|fine-m|fine-s|raw-fine-l|...|coarse-l|...|raw-coarse-l|...|raw] - setting shot mode (single, multi, self-timer) [sequence=single|multi|self-timer] - setting beep [beep=off|on] - setting exposure measurement area [auto-exp-mode=spot|middle-spot|middle|integral] - setting white balance [white-balance=auto|sunny|cloudy|art-light|flour-light|flash|manual|shade|color-temp] - setting autofocus mode [auto-focus=af-one-shot|ai-servo|ai-focus|mf] - setting ISO sensitivity [iso] - setting aperture size [av] - setting shutter release speed [tv] - setting exposure correction [exp-corr=-2.0|-1.6|-1.5|-1.3|...|0.0|+0.3|...|+2.0] - releasing shutter (currently only allows to store the image on CF) 4. Script format The script format consists of list of commands, one per line. The general format is: <time> function=value if the function takes an argument or <time> function if it doesn't take any argument. The <time> is in a format of HH:MM:SS and is set relatively to the sequence start. The processing of any script starts when multican is launched, all cameras for which the script is written are detected and ENTER is pressed to start the sequence. Empty lines are ignored and '#' denotes that the rest of the line is to be ignored (comment). The problem of assigning a particular camera to a script is solved in the way that a serial number of the a camera is associated to the script in the way that the script file name contains a serial number (always consists of 10 numbers) of the particular camera at the end of the filename. So a sample name for such script could be: scr-5D-0460286741 5. Example script Here is one example script for EOS 5D, scr-5D-0460286741: # # test script for 5D # # time sequence begins: 00:00:00.000 tv = 125 00:00:00.000 av = 5.6 00:00:00.000 iso = 100 00:00:00.000 shot 00:00:02.800 tv = 60 00:00:02.800 av = 6.3 00:00:02.800 iso = 200 00:00:02.800 shot 00:00:05.600 tv = 30 00:00:05.600 av = 7.1 00:00:05.600 iso = 400 00:00:05.600 shot 00:00:08.400 nop 6. Known Bugs The timing in the script strongly depends on the camera type and CF card which is used to do shooting. This is to be tested by multican user himself. If too short times are described in the script, the communication may hang or may skip some commands. Thanks to camera image caching, the shooting rate could be set even under 1s if only several images are taken since the most of the EOS camera models contain an image cache, so that the images are stored into a queue and written to the CF lately. Note that the remote control won't work with all modes that are set on camera, because sometimes the camera refuses to perform several remote control commands because of its settings. The ideal mode for remote control is if the camera is in the full manual mode (M) and the objective auto-focus is switched off. Note that the Canon EOS cameras won't communicate at all if you set on mirror lockup. The known bug in this multican release is that cameras need to be switched off and on again when a scripted sequence is finished and a new one is to be done. This is likely caused by the fact that the communication is not correcly terminated in the actual multicam release. You may also want to run multican as root to have proper priviledges to access USB devices.