Chapter 4. New USB Interface

Table of Contents

Summary of available (known) commands in new protocol
Get Picture
Unknown function
Unknown function
Unknown function
Unknown function
Unknown function
Delete file
Get Directory
Disk Info Request
Flash Device Identification
Identify Camera
Get time
Set Time
Get Owner
Set Owner
Power supply status
Get Custom Functions
Unknown Command
Unknown Command
Get EOS Body ID
Get Photo Abilities
Remote Capture Control
Camera control initialization: 00
Exit release control: 01
Release shutter: 04
Set release parameters: 07
Set transfer mode: 09
Get release parameters: 0A
Get available shot: 0D
Get size of extended release parameters: 10
Get extended release parameters: 12
Set extended parameters: 12
Unknown command: 1B
Unknown command: 1C
Get captured image
Lock Keys
Unknown command

The EOS 20D introduced a new version of the Canon native protocol. While it still seems to use the same basic format of command and response blocks, some command codes have been abandoned, new ones added, and, worst of all, some codes have changed their meanings. This section describes what we know so far about this revised protocol. I assume that there will be other cameras using this new protocol; the first candidates would be the EOS 1D Mk. II and 1D Mk. II, which share the CR2 raw image format with the 20D.

Summary of available (known) commands in new protocol

Table 4.1. New Storage Control Commands (cmd2=0x11)

cmd1cmd3Argument(e.g.)Response LengthOperationOld code
0x010x2020x00000001 "A:/DCIM/100CANON\IMG_0098.CR2" <NUL>LGet picture0x01
0x040x201none0x54Unknown 
0x050x201none0x54Unknown 
0x060x201none0x54Unknown 
0x070x201none0x54Unknown 
0x090x201none0x54Unknown 
0x0A0x201"A:/DCIM/101CANON/IMG_0105.JPG" 0x0007 0x0005 0x0100 0x0008 0x008f7668 0x008f8078 "A:/DCIM/101CANON/" LDelete file0x0D
0x0B0x2020x01 "D:\DCIM"<NUL> <NUL> <NUL>LGet directory0x0B
0x0D0x201"A:" <NUL>0x5cDisk info request0x09
0x0E0x202noneLFlash Device Identification0x0A

Table 4.2. New Camera Control Commands (cmd2=0x12)

cmd1cmd3Argument(e.g.)Response LengthOperationOld code
0x010x201none0x9cIdentify camera0x01
0x030x201none0x60Get time0x03
0x040x2010x390873f0 0x000000000x54Set time0x04
0x050x201none0x74Get ownerNA
0x060x201"Cornell University" <NUL>0x54Set owner0x05
0x130x201none0x58Power supply status0x0A
0x1D0x2010x000000000x94Get custom function settings0x13/???
0x210x2010x000000000x54Unknown command 
0x220x2010x0000000f0x54Unknown command 
0x230x201none0x58Get Body ID0x1D
0x240x201none0x458Get Photo Abilities0x1F
0x250x2019 bytes: 00 00 00 00 00 00 00 00 000x5cRemote Capture Control0x13
0x260x2020x10 bytes: 00 00 00 00 00 00 01 00 02 00 00 00 07 00 00 00variesGet captured image0x17
0x350x201none0x5cLock keys0x1B
0x360x20100 00 00 00 00 00 00 000x54Unknown