Brick camera with wrong C.Fn settings?

Started by Marsu42, May 22, 2014, 04:13:57 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.


I'd like to add some c.fn toggling to my hotkey module (esp. switch to different af tracking "scenarios" on 6d by modifying the 3 relevant c.fn settings).

I'd currently hardcode this for my 6d, but I could also add a gui for "set c.fn (enter value).(enter value) to (enter value)." Alas, I certainly won't read all Canon manuals what c.fn settings are valid on what model, thus the question: Can users brick cameras by setting c.fn to out of bounds values - or does Canon code simply ignore wrong settings?


Some settings (properties) will safely ignore wrong values (e.g. ISO), others work with out-of-range values just fine (e.g. AFMA), and others cause permanent err70 (e.g. picture quality or video mode). There's no way to tell until you try it.

CFn's are just properties, with a higher chance of being camera-specific.

That's why I recommend to first check the valid values for any property, and only then try to change it.


I should be able to find some time somewhere, to compile a list of C.Fn functions on support bodies.

Did you need something specific, or just what each function does on each body, so you can spot the odd ball cases?


Quote from: Audionut on May 23, 2014, 07:28:04 AM
Did you need something specific, or just what each function does on each body, so you can spot the odd ball cases?

What would be useful is a cfn_check(int cfn_group, int cfn_number, int cfn_value) core function that checks via a lookup table if some cfn value is valid. The function would return 0 if everything's peachy, or 1 if the cfn doesn't exist on that camera or the value is out of bounds so a warning can be issued in the help line.

There are lots of potential cfn functions that users might want to toggle with a hotkey, and I'd let them figure out for themselves what cfn does what so the gui menu would only allow them to choose cfn x.y=z with numbers ... but ML shouldn't give users to brick a camera with wrong gui settings.


In the cameras' ROM there is a table with all the available menu items code.
These codes are unique.
I know it's not exactly the same thing you need but you can check if a CF function exists.
I discovered some code values long time ago:
0x00000: 'White Balance';
//    0x00001: '';
    0x00002: 'WB Shift/BKT';
    0x00003: 'Color space';
    0x00004: 'Picture Style';
//    0x00005: '';
//    0x00006: '';
    0x00007: 'Review time';
    0x00008: 'Beep';
    0x00009: 'Release shutter without card';
    0x0000a: 'Dust Delete Data';
    0x0000b: 'Quality';
    0x0000c: 'Red-eye On/Off';
//    0x0000d: '';
//    0x0000e: '';
    0x0000f: 'Custom WB';
//    0x00010: '';
    0x00011: 'Expo comp./AEB';
    0x00012: 'Peripheral illum. correct';
    0x00013: 'Metering mode';
    0x00014: 'Flash control';
//    0x00015: '';
    0x00016: 'Auto Lighting Optimizer';
    0x00017: 'One-touch RAW+JPEG';
    0x00018: 'Live View shoot.';
    0x00019: 'AF mode';
    0x0001a: 'Grid display';
    0x0001b: 'Expo simulation';
    0x0001c: 'Silent shooting';
    0x0001d: 'Metering Timer';
//    0x0001e: '';
    0x0001f: 'Movie rec. size';
    0x00020: 'Sound recording';
    0x00021: 'ISO Auto';
    0x00022: 'Image Review';
    0x00023: 'Red-eye reduc.';
//    0x00024: '';
    0x00025: 'Aspect ratio';

    0x10000: 'Protect images';
    0x10001: 'Rotate';
    0x10002: 'Erase images';
    0x10003: 'Print order';
    0x10004: 'Transfer order';
//    0x10005: '';
//    0x10006: '';
    0x10007: 'Highlight alert';
    0x10008: 'AF point disp.';
    0x10009: 'Histogram';
//    0x1000a: '';
    0x1000b: 'Image jump w/';
//    0x1000c: '';
    0x1000d: 'Slide show';
    0x1000e: 'Ctrl over HDMI';
    0x1000f: 'RAW image processing';
    0x10010: 'Creative filters';
    0x10011: 'Resize';
    0x10012: 'Rating';

    0x20000: 'Auto power off';
//    0x20001: '';
    0x20002: 'File numbering';
//    0x20003: '';
    0x20004: 'Auto rotate';
    0x20005: 'Format';
    0x20006: 'LCD brightness';
    0x20007: 'Date/Time';
    0x20008: 'Language';
    0x20009: 'Video system';
    0x2000a: 'Battery info.';
    0x2000b: 'Live View function settings';
    0x2000c: 'External Speedlite control';
//    0x2000d: '';
//    0x200  0e: '';
    0x2000f: 'Clear all camera settings';
    0x20010: 'Sensor cleaning';
    0x20011: 'Firmware version';
    0x20012: 'WFT settings';
    0x20013: 'INFO button';
//    0x20014: '';
//    0x20015: '';
    0x20016: 'Flash control';
    0x20017: 'Camera user settings';
    0x20018: 'LCD auto Off';
    0x20019: 'Screen color';
    0x2001a: 'Custom functions(C.Fn)';
    0x2001b: 'Clear settings';
//    0x2001c: '';
    0x2001d: 'Select folder';
    0x2001e: 'Live View/Movie func. set.';
    0x2001f: 'Copyright information';
    0x20020: 'VF grid display';
    0x20021: 'INFO button display options';
    0x20022: 'LCD brightness';
    0x20023: 'Lock';
//    0x20024: '';
//    0x20025: '';
//    0x20026: '';
    0x20027: 'Date/Time/Zone';

    0x30000: 'C.Fn I: Exposure';
//    0x30001: '';
    0x30002: 'C.Fn III: Autofocus/Drive';
    0x30003: 'C.Fn IV: Operation/Others';
    0x30004: 'Clear all custom func (C.Fn)';
//    0x30005: '';
    0x30006: 'C.Fn II: Image';
                                                     // C.Fn I Exposure
    0x40000: 'Exposure level increments';
    0x40001: 'ISO speed setting increments';
//    0x40002: '';
    0x40003: 'Bracketing auto cancel';
    0x40004: 'Bracketing sequence';
//    0x40005: '';
//    0x40006: '';
    0x40007: 'Safety shift';
//    0x40008: '';
//    0x40009: '';
//    0x4000a: '';
//    0x4000b: '';
//    0x4000c: '';
//    0x4000d: '';
    0x4000e: 'Flash sync. speed in Av mode';
    0x4000f: 'ISO Expansion';
                                                     // C.Fn II Image
    0x50000: 'Long exp.noise reduction';
    0x50001: 'High ISO speed noise reduct''n';
    0x50002: 'Highlight tone priority';
//    0x50003: '';
//    0x50004: '';
//    0x50005: '';
//    0x50006: '';
//    0x50007: '';
//    0x50008: '';
    0x50009: 'Auto Lighting Optimizer';

                                                     // C.Fn III Autofocus/Drive
//    0x60000: '';
    0x60001: 'AI servo tracking sensitivity';
    0x60002: 'AI servo 1st/2nd img priority';
    0x60003: 'AI servo AF tracking method';
    0x60004: 'Lens drive when AF impossible';
    0x60005: 'Lens AF stop button fuction';
    0x60006: 'AF microadjusment';
//    0x60007: '';
//    0x60008: '';
//    0x60009: '';
//    0x6000a: '';
//    0x6000b: '';
//    0x6000c: '';
    0x6000d: 'AF assist beam firing';
    0x6000e: 'Mirror lockup';
//    0x6000f: '';
//    0x60010: '';
//    0x60011: '';
//    0x60012: '';
    0x60013: 'AF point selection method';
    0x60014: 'Superimposed display';
    0x60015: 'AF point area expansion';
    0x60016: 'Orientation linked AF point';
    0x60017: 'Select AF area selec. mode';
    0x60018: 'Manual AF pt. selec. pattern';
    0x60019: 'VF display illumination';
    0x6001a: 'Display all AF points';
    0x6001b: 'Focus display in AI SERVO/MF';
                                                     // C.Fn IV Operation/Others
    0x70000: 'Shutter button/AF-ON button';
    0x70001: 'AF-ON/AE lock button switch';
//    0x70002: '';
//    0x70003: '';
//    0x70004: '';
    0x70005: 'Dial direction during Tv/Av';
//    0x70006: '';
//    0x70007: '';
//    0x70008: '';
//    0x70009: '';
    0x7000a: 'Focusing screen';
//    0x7000b: '';
//    0x7000c: '';
    0x7000d: 'Add aspect ratio information';
    0x7000e: 'Add image verification data';
//    0x7000f: '';
    0x70010: 'Shutter/AE lock button';
    0x70011: 'LCD display when power ON';
    0x70012: 'Assign FUNC button';
    0x70013: 'Assign SET button';
//    0x70014: '';
    0x70015: 'Custom controls';
    0x70016: 'AF and metering buttons';
EOS 7D Mark II, EOS 7D, EOS 5, EOS 100 + lenses (10mm to 300mm), 600EX, 550EX, YN600EX x 3
EOScard, EOS DSLR firmwares, ARMu, NiControl, etc.:


Quote from: Pelican on May 23, 2014, 12:03:37 PM
In the cameras' ROM there is a table with all the available menu items code.

Intersting to know and it's bound to be in the Canon code somewhere :-> but it could be useful for getting the stings of a certain cfn for the ml gui help line. But of course unless someone manages to extract the valid settings from the Canon rom, we'd still need a ml-filled static lookup table for each model.