GNU Canon Camera Utilities

Canon camera unfortunately does not plug&play its flash memory card as mass storage but the camera appears in Scanners and cameras list. It seems logical but it brings many problems because it’s not possible to open files stored in the camera directly and – probably due Windows limitation even Microsoft RAW Image Thumbnailer and Viewer is installed – does not list RAW files.

Proprietary Canon utilities may download all kind of pictures, of course, but it’s another piece of GUI software. You have to open tool, select manually pictures, download them, delete from camera, ie. it’s good if you do all processing via Canon utilities but if 3rd party software is used then a simple script could do automatically. For example Adobe Photoshop CS2 support "digital negative" format. Images are stored in RAW format – original Canon’s .CRW, .CR2 – in Abobe’s .DNG with extra information how to transform RAW to JPG/TIF. Advantage of such approach – no data are lost.


Current version of Canon RCSDK v8.4 support following models:

  • EOS 5D
  • EOS 20D
  • EOS-1Ds Mark II
  • EOS-1D Mark II
  • EOS-1D Mark II N
  • EOS-1Ds
  • EOS-1D
  • EOS 10D
  • EOS 300D
  • EOS 350D
  • EOS D60
  • EOS D30

Note that EOS 400D is not unfortunately listed because Canon introduced new ED-SDK v1.3 which declares support for it. I don’t see why did it!

Currently tested with following models:

  • Canon EOS 350D / Rebel XT
  • Canon EOS 20D
Usage examples
List of connected cameras:
gcan list -l camera
List of flash cards:
gcan list -l volume
Camera properties:
gcan list -l devprop
List of files at flash recursively:
gcan list -r
gcan list -l file -r
List of RAW files at flash recursively:
gcan list *.cr2 -r
List of images at flash recursively:
gcan list -l image -r
List of images in directory:
gcan list a:\DCAM\CAN100\ -l image
Image properties:
gcan list _MG-0100.* -r -l imgprop,baseimgprop
Format card:
gcan format a:
Copy all RAW images to one directory:
gcan copy *.cr2 c:\images\ -r
Copy newer RAW images to one directory (do not overwrite existing):
gcan copy *.cr2 c:\images\ -r -y N
Copy all RAW images, keep structure:
gcan copy a:\DCIM\*.cr2 c:\images\ -r -R
Delete one RAW image:
gcan del _mg_0001.cr2 -r
Delete all RAW images:
gcan del *.cr2 -r
Set camera owner:
gcan devprop OWNER_NAME="new owner"
Set image owner:
gcan imgprop *.* OWNER_NAME="my" -r
Set image rotation:
gcan imgprop _mg_0002.* ROTATION_ANGLE=270 -r
Print camera state:
gcan state
List possible Tv and Av values:
gcan list -l av,tv
Set Tv to 1/125:
gcan setcam tv=125
Set ISO to 1600:
gcan setcam iso=1600
Take a picture:
gcan shot
Set Av,Tv,take a picture and save to PC:
gcan setcam av=5.6 ; setcam tv=250 ; shot "c:\images\image%u.cr2"
gcan -h
Help for list command:
gcan list -h

Note that Av, Tv values may be affected only in corresponding mode, e.g aperature value in Av or Manual, time value in Tv or Manual modes. When a parameter is to be modified in a mode when it’s not possible to change it then error is returned and no explanation provided!

Download project files from SourceForge

Bugs may be reported at SourceForge project pages

The latest sources available at CVS.


Currently Borland C++ 5.5 is used to build executables. BCC command line compiler is available for free.

Note that for-free Microsoft Visual C++ Toolkit 2003 does not contain Windows dependant header files.

Canon offer developer’s SDK called RC-SDK that reside above USB/WIA Canon USB driver and provides functions to transfer images between PC and camera, browse various properties, develop RAW images and even control camera remotely. Unfortunately only Windows and MAC OS are supported. There are two not fully compatible versions, ver 7.x (point&shoot PowerShot cameras) abd 8.x (EOS SLR cameras).

SDK may be acquired from Canon site (according developer location)

WIA hack alternative

Canon USB mini/micro port driver support logging of debugging messages to files.if HKEY_LOCAL_MACHINE\SOFTWARE\Canon\EOSDebug dslrLogLevel=1 and usdLogLevel=1 are added to registry (RegMon can help). Combining with SnoopyPro, disassebler, hexeditor may help to hack mini port drive (EOS 350D WINDOWS\system32\CNDCK189.dll) to list all files, not only JPG. It’s trivial if only RAW images are taken – change first occuranece of "JPG" string to "CR2" and open camera from Explorer’s Scanner and cameras. Unfortunately Windows changes extension from CR2 to JPG (sometimes to BMP), suprisingly properties dialog (Alt-Enter) shows CR2. Copy/paste works but requires correction of the bad extension.

Leave a comment