Here is a dump of the comments that came with the patches for EOS 5D capture implementation. From: Paul Walmsley a01_start_end_remote_control.patch: Replace the open-coded CANON_USB_CONTROL_INIT and CANON_USB_CONTROL_EXIT commands with functions, and set a flag in the host computer's camera state when the camera is in remote release control. a02_add_capture_size_class.patch gphoto2's Canon driver currently supports two capture modes: canon_int_capture_preview(), which captures a thumbnail to the host computer; and canon_int_capture_image(), which captures a full-sized image to the camera's drive. We'd like to control each parameter -- the capture image size class and the capture destination -- independently, without breaking compatibility with current applications. So, add a configuration option, "Capture size class," by which the user can specify whether to operate in "compatibility mode" (the default -- represents the driver's previous behavior), or whether to capture thumbnails, or full-sized images. capture_preview() then always captures to the host computer, and capture_image() always captures to the camera's drive, no matter what the image's size. Our primary interest is in remote capture of full-sized images to the host computer. We've observed that on the EOS 5D, with these patches applied, it's possible to capture full-sized images to the host computer or to the camera's drive. Capturing thumbnails alone is supported only in name by these patches -- further work will be required to make that function. a03_add_eos_5d_usb_id.patch Add the USB ID for the EOS 5D in PC connection mode. (0x04A9, 0x3102 is the corresponding ID for PTP mode.) b01_add_canon_usb_dialogue_full.patch Split canon_usb_dialogue() into two functions: canon_usb_dialogue_full(), which returns the full camera response packet, needed by canon_usb_long_dialogue() (and also by canon_int_get_release_params(), later in this patch series). b02_add_canon_control_dialogue.patch Add canon_int_do_control_dialogue() and canon_int_do_control_dialogue_payload(). These functions execute a remote capture command on the camera and return the camera's response. canon_int_do_control_dialogue_payload() gives the caller full control over the payload. We need these to retrieve and set the camera's release parameters. b03_add_get_release_params.patch Add support for querying the camera's shutter speed, ISO speed, aperture, resolution, and focus mode via gphoto2's configuration interface. Tested on the Canon EOS 5D. c01_add_set_release_params.patch This patch adds remote control over "release parameters" -- shutter speed, ISO speed, aperture, resolution, autofocus mode -- for the Canon EOS 5D camera. You must build with CANON_EXPERIMENTAL_20D and CANON_EXPERIMENTAL_SET_RELEASE_PARAMS defined for this code to be compiled. This patch also depends on the Canon EOS 5D 'query release parameters' patch series posted earlier, also available from PLEASE NOTE THAT THESE PATCHES HAVE ONLY BEEN TESTED WITH THE CANON EOS 5D. I suspect that they might work with other Canon "class 6" cameras, such as the EOS 20D, the EOS 350D, etc., but do not know for sure. If you wish to use this code, please first query the camera's current parameters, and ensure that the values returned match what is displayed on the camera, before trying any parameter set operations. USE THIS CODE AT YOUR OWN RISK. It seems to work fine on the EOS 5D, but that's all I can test here. These release parameters can be changed via libgphoto2's configuration interface. For example, to query the camera's current shutter speed, try: gphoto2 --get-config "Shutter speed" The shutter speed can be set via the following: gphoto2 --set-config "Shutter speed"="1/30 second" Thanks to the Internet Archive, , for funding the development of this code. This patch is used in the Internet Archive's book scanner. The patch applies against libgphoto2-2.1.99 and current svn. A copy of this patch can also be downloaded from . d01_add_secondary_image_support.patch This patch adds support for downloading "secondary images" -- the JPEGs created when the capture resolution is set to the "RAW + JPEG" modes -- for the Canon EOS 5D camera. You must build with CANON_EXPERIMENTAL_20D and CANON_EXPERIMENTAL_SECONDARY_IMAGE defined for this code to be compiled. This patch also depends on the Canon EOS 5D 'query release parameters' patch series posted earlier, also available from Note that currently the code does nothing with the downloaded secondary image - it merely discards it. The primary motivation for this patch is to work around a nasty bug in the Canon EOS 5D firmware. While shooting RAW images directly to the host computer, the camera can shoot no more than 137 images before refusing to transfer any further image data. The camera menus still work, the shutter will still release on command, but no image data can be downloaded until the camera power switch is toggled. Chuck Westfall of Canon USA confirmed the bug and provided some helpful workarounds; the most practical for us was to shoot in a "RAW + JPEG" mode. However, this setting requires extra protocol support on the host computer side - otherwise, the camera will stop transferring images after only 5 or 6 shots. This patch provides this extra support. The secondary image code is marked with a separate define because it attempts to automatically determine whether a secondary download is necessary based on the camera's current capture resolution setting. This works fine on the 5D, but other Canon cameras may have different resolution setting bytes which could confuse this code. Testers welcome! Thanks to the Internet Archive, , for funding the development of this code. This patch is used in the Internet Archive's book scanner. The patch applies against libgphoto2-2.1.99 and current svn. A copy of this patch can also be downloaded from . e01_return_photographic_status.patch When the camera cannot capture an image due to a 'photographic failure,' return a gphoto2 error code resembling the actual failure code, rather than simply returning a generic error. Tested on the Canon EOS 5D. Thanks to the Internet Archive, , for funding the development of this code. This patch is used in the Internet Archive's book scanner. The patch applies against libgphoto2-2.1.99 and current svn. A copy of this patch can also be downloaded from .