summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Meissner <marcus@jet.franken.de>2012-04-11 18:07:07 +0000
committerMarcus Meissner <marcus@jet.franken.de>2012-04-11 18:07:07 +0000
commit41fb9ce5a6130db28457666ac9f6d0cdc9696509 (patch)
treed9ad77c143cd337f1dbeec509521a6608f5d48bc
parent7c796e4dfab22f94b70267cb47b0d6c6fc6a9d83 (diff)
downloadlibgphoto2-41fb9ce5a6130db28457666ac9f6d0cdc9696509.tar.gz
eos customfunc description from alex
git-svn-id: https://svn.code.sf.net/p/gphoto/code/trunk/libgphoto2@13971 67ed7778-7388-44ab-90cf-0a291f65f57c
-rw-r--r--camlibs/ptp2/canon-eos-customfunc.txt109
1 files changed, 109 insertions, 0 deletions
diff --git a/camlibs/ptp2/canon-eos-customfunc.txt b/camlibs/ptp2/canon-eos-customfunc.txt
new file mode 100644
index 000000000..a05126653
--- /dev/null
+++ b/camlibs/ptp2/canon-eos-customfunc.txt
@@ -0,0 +1,109 @@
+From: Axel Waggershauser <awagger@web.de>
+
+
+
+To whom it may concern... ;-)
+
+attached is a patch to enable some _very_ low level (but therefore
+general) access to the custom functions of (modern) EOS cameras. But
+before anyone gets excited: this is nowhere near something like
+
+ gphoto2 --set-config mirrorlockup=on
+
+instead it's more like
+
+ gphoto2 --set-config
+customfuncex=60,1,1,54,6,101,1,1,102,1,0,104,1,0,105,1,0,106,2,2,1,108,1,0
+
+
+The background details: There is a PTP property called CustomFuncEx
+(hex code 0xd1a0) for accessing custom functions. Unfortunately, this
+property is not like any other standard PTP property (like e.g. the
+aperture property, which has exactly one meaning and one value at a
+time and you can select a value from an automatically enumerated list
+of supported values):
+ * the CustomFuncEx property represents all custom functions at the same time
+ * the list of available functions may differ from camera to camera
+ * there is no automatic enumeration of available values for
+individual custom functions
+ * the individual custom functions can only be changed/accessed in
+groups simultaneously
+Therefore it does not fit into the libgphoto2 supplied structures to
+access camera properties. And therefore I came up with this minimal
+invasive patch with the downside of having a horrible user interface.
+
+A 'value' of the CustomFuncEx property is a list of numbers (4 byte
+integers) that forms a two-level hierarchical structure of individual
+enumerated custom functions. First level is the group of functions,
+second level is the list of functions within that group. The 5DM3
+seems to have 3 groups (1,2,4), the 60D 4 groups (1,2,3,4). The groups
+seem to be somewhat related to the different pages in the custom
+functions menu structure on the camera. The first group of the 5DM3
+contains the individual functions numbered 101, 102, 104, 105, 106,
+108. On the 60D it's 101, 102, 104, 105, 108, 10f (beware: those
+numbers are all in base 16). To give an example: the 101 is the
+"Exposure level increments" custom function. Each function may have 1
+to several individual (integer) values. Most of them have only 1 value
+but e.g. the bracket-count function (number 106) is mapped to two
+numbers.
+
+The complete structure of a valid CustomFuncEx property value
+explained on the example
+60,1,1,54,6, 101,1,1, 102,1,0, 104,1,0, 105,1,0, 106,2,2,1, 108,1,0
+is as follows (remember: every number is hex encoded):
+1. size of the whole data set in bytes: here 0x60 = 96, i.e. 96/4=24 integers
+2. number of groups in this data set: always 1
+3. group id: here 1, I've seen 1, 2, 3 and 4
+4. size of the group part in bytes: here 0x54 = 84, i.e. 84/4=21 integers
+5. number of individual custom functions in the group: here 6
+--- and now for each custom function in this group ---
+a. function id: here 101, 102, 104, 105, 106, 108
+b. number of 'sub-values' of this function: mostly 1, in case of 106 it's 2
+c-?. the (final) sub-values of the functions
+
+One may construct valid 'values' for that property mentioning only
+individual functions (e.g. 20,1,1,14,1,101,1,1 which sets the 101
+function to '1') but the camera then sets all other available
+functions in the same group back to their default state. Notice: the
+group id is redundant since the function id completely determines the
+function. If you try to set a 10x function inside group 2 nothing
+happens.
+
+To actually make use of that feature (e.g. toggle mirror lockup on a
+5DM2) you may proceed as follows:
+1) set the mirror lockup to off
+2) gphoto2 --debug --debug-logfile=off.txt --get-config customfuncex
+3) set the mirror lockup to on (you may have to disconnect the camera
+if it says 'busy')
+4) gphoto2 --debug --debug-logfile=on.txt --get-config customfuncex
+5) grep custom off.txt | cut -d' ' -f 12
+6) grep custom on.txt | cut -d' ' -f 12
+
+The last two commands will output something like:
+
+68,1,1,5c,7,101,1,1,102,1,1,103,1,0,104,1,0,105,1,0,108,1,0,10f,1,0,
+50,1,2,44,5,201,1,0,202,1,0,203,1,0,204,1,0,205,1,0,
+84,1,3,78,8,505,1,0,506,1,0,50f,1,0,510,1,0,50e,1,0,60f,1,0,508,1,0,507,5,0,ff,0,ff,0,
+68,1,4,5c,7,701,1,0,702,1,0,704,1,0,706,1,0,80b,1,0,80f,1,0,70b,1,0,
+
+68,1,1,5c,7,101,1,1,102,1,1,103,1,0,104,1,0,105,1,0,108,1,0,10f,1,0,
+50,1,2,44,5,201,1,0,202,1,0,203,1,0,204,1,0,205,1,0,
+84,1,3,78,8,505,1,0,506,1,0,50f,1,0,510,1,0,50e,1,0,60f,1,1,508,1,0,507,5,0,ff,0,ff,0,
+68,1,4,5c,7,701,1,0,702,1,0,704,1,0,706,1,0,80b,1,0,80f,1,0,70b,1,0,
+
+You can see the 4 groups and after close inspection you'll find that
+the mirror lockup belongs to group 3 and has id 60f with the values 0
+and 1. Hence, to enable mirror lockup you may finally call
+
+ gphoto2 --set-config
+customfuncex=84,1,3,78,8,505,1,0,506,1,0,50f,1,0,510,1,0,50e,1,0,60f,1,1,508,1,0,507,5,0,ff,0,ff,0,
+
+In fact if you don't care for anything else than mirror lockup you may also call
+
+ gphoto2 --set-config customfuncex=20,1,3,14,1,60f,1,1
+
+DISCLAIMER: Throwing random numbers at your Canon may SET IT ON FIRE!
+(Well, that is actually pretty unlikely but anyway: _your_ risk. What
+is pretty likely is, that it will crash your gphoto2 process.)
+
+ - Axel