Canon 5D Mark III / 5D3 / Firmware 1.3.4

Started by dfort, February 15, 2017, 02:04:51 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

dfort

Posted a pull request for 5D3.134 firmware support.

Why?

  • Because Canon tells us to update our cameras to their latest firmware release.
  • Once you do update Canon says you can't go back (though you can, really).
  • Canon removes prior firmware revisions from their product support web pages so you need to download from unofficial sources in order to use Magic Lantern.
  • There are 5D3 owners out there that might want to try ML but are unwilling to rollback the firmware installed on their cameras.
  • Because it was a challenge and seemed like a worthwhile thing to do.
Ok, that last point was just to make a point--you don't need to be an experienced developer to contribute to Magic Lantern. In fact doing a minor firmware update is a good project for someone who is able to compile the ML code and is willing to put in some time searching through a ROM disassembly looking for changes. It is also a good project to learn some very basic reverse engineering.

What this version is not:

  • If you want the most stable ML experience and don't need the new firmware features, stick with 5D3.113.
  • This update will not replace the 113 and 123 versions--it can live right alongside the previous versions.
With the recently added option to support more than one firmware revision per platform in the ML source code this might be a good opportunity to add experimental releases closer to the Canon firmware revision release dates. Provided of course that it passes the ML stress tests and that enough people test and approve the pull request.

To make testing easier for users to try it out, I'll be posting builds to my bitbucket repository download area until it gets into the Experiments download page. Note that this first very early build doesn't have the ML-SETUP.FIR file yet so make sure your camera bootflag is set before doing the firmware update. To go back to 113 or 123, follow the instructions on the Firmware Update/Downdate? tutorial.

Big thanks to:

  • a1ex for his guidance and encouragement and keeping this project alive.
  • chris_overseas who did the 5D3.133 port which had the last few missing pieces to get this working.
  • dmilligan for his patience answering my noob questions.
  • Danne and DeafEyeJedi my ML buddies.


Just as a footnote: Firmware revision 1.3.4 was released November, 2016 and the 5D300134.FIR file is timestamped September 1, 2016 while the 5D300123.FIR has a timestamp of August 30, 2013 and the 5D300113.FIR has a timestamp of May 28, 2012.


DeafEyeJedi

Thanks Dan for taking this leap of faith and I decided to join along...



Some things I noticed that may seem out of the ordinary...

After each camera restart upon pressing 'Trash Can' button for to get into ML menu (suddenly Canon menu pop's up intermittently for a second or two) and this is reproducible.

Also noticed dual_iso.mo gives an Error when enabled under Modules section within ML menu.

Seems that crop_rec.mo doesn't get along with this build because if I enable this on then all Modules gives errors (meaning I have to leave this one off in order to make use of ML) which seemed odd.

Will continue to play around with it some more...
5D3.113 | 5D3.123 | EOSM.203 | 7D.203 | 70D.112 | 100D.101 | EOSM2.* | 50D.109

dfort

crop_rec shouldn't be in there. I must have had a Makefile.modules.user file active when I did the build, correcting that now. I'll also check into the dual_iso. The flashing menu thing was also affecting chris_overseas 5D3.133 builds so I could use some hints on where to look for a solution for that.

chris_overseas

EOS R5 1.1.0 | Canon 16-35mm f4.0L | Tamron SP 24-70mm f/2.8 Di VC USD G2 | Canon 70-200mm f2.8L IS II | Canon 100-400mm f4.5-5.6L II | Canon 800mm f5.6L | Canon 100mm f2.8L macro | Sigma 14mm f/1.8 DG HSM Art | Yongnuo YN600EX-RT II

dfort

Thanks Chris -- I could use some help on figuring out how to find those register values. In the meantime it looks like your 1.3.3 code might just work for 1.3.4.

Frankly I completely skipped most of the modules and just followed some of the current firmware update pull requests so those might need fixing too.

Put up a new test build with the dual_iso fix and no crop_rec module--also no raw_rec module because that was recently replaced by mlv_lite.

https://bitbucket.org/daniel_fort/magic-lantern/downloads

chris_overseas

Quote from: dfort on February 15, 2017, 08:22:12 PM
Thanks Chris -- I could use some help on figuring out how to find those register values. In the meantime it looks like your 1.3.3 code might just work for 1.3.4.

Those dual ISO addresses were obtained by looking at cmos[0] from the adtg_gui module (enabled via CONFIG_GDB=y, http://www.magiclantern.fm/forum/index.php?topic=6751.msg71720#msg71720). So eg for FRAME_CMOS_ISO_START, make sure you're in movie mode ISO 100 and check the cmos[0] value. Similarly for PHOTO_CMOS_ISO_START but make sure you're in photo mode liveview instead.

Are there any other specific addresses you're stuck on? I'm not sure I can help much as my knowledge is limited, but will do my best. I'm also not sure when I'll get a chance to switch to 1.3.4 to try your build, though by the sounds of it you're about at the point where I got stuck with 1.3.3 (flickering menus - I don't know how to solve that one unfortunately).
EOS R5 1.1.0 | Canon 16-35mm f4.0L | Tamron SP 24-70mm f/2.8 Di VC USD G2 | Canon 70-200mm f2.8L IS II | Canon 100-400mm f4.5-5.6L II | Canon 800mm f5.6L | Canon 100mm f2.8L macro | Sigma 14mm f/1.8 DG HSM Art | Yongnuo YN600EX-RT II

dfort

@chris_overseas

I got adtg_gui working in the unified branch but considering how close 123 is to 134 I'm getting a large difference in the addresses. For example, your 133 numbers look like this:

        FRAME_CMOS_ISO_START = 0x40452C72; // CMOS register 0000 - for LiveView, ISO 100 (check in movie mode, not photo!)
        PHOTO_CMOS_ISO_START = 0x40451120; // CMOS register 0000 - for photo mode, ISO 100


I'm getting this on 134:

        FRAME_CMOS_ISO_START =   0x146C80; // CMOS register 0000 - for LiveView, ISO 100 (check in movie mode, not photo!)
        PHOTO_CMOS_ISO_START =   0x146C80; // CMOS register 0000 - for photo mode, ISO 100


Then I remembered using adtg_gui from the iso_research branch. There were a few more addresses to look up for that version of adtg_gui but even though everything seemed to check out properly it kept crashing. Fun times!

In any case, those funky addresses are giving me an "ISOless PH err(2)" with the dual_iso module so I'll stick with your 133 values for now.

dfort

Borrowed a couple of EF lenses in order to check out the focus tests. Big thanks to @DeafEyeJedi !

Did some more digging in consts.c and was able to come up with a change in the FOCUS_CONFIRMATION.

Passes the lua API test from the unified branch:


===============================================================================
ML/SCRIPTS/api_test.lua - 2017-2-19 08:38:37
===============================================================================

Strict mode tests...
Strict mode tests passed.

Generic tests...
camera = table:
  shutter = table:
    raw = 104
    apex = 6.
    ms = 16
    value = 0.015624
  aperture = table:
    raw = 48
    apex = 5
    value = 5.599999
    min = table:
      raw = 13
      apex = 0.624999
      value = 1.2
    max = table:
      raw = 72
      apex = 8
      value = 16
  iso = table:
    raw = 80
    apex = 6.
    value = 200
  ec = table:
    raw = 0
    value = 0
  flash_ec = table:
    raw = 0
    value = 0
  kelvin = 6500
  mode = 3
  metering_mode = 3
  drive_mode = 0
  model = "Canon EOS 5D Mark III"
  model_short = "5D3"
  firmware = "1.3.4"
  temperature = 147
  state = 0
  shoot = function: p
  reboot = function: p
  bulb = function: p
event = table:
  pre_shoot = nil
  post_shoot = nil
  shoot_task = nil
  seconds_clock = nil
  keypress = nil
  custom_picture_taking = nil
  intervalometer = nil
  config_save = nil
console = table:
  hide = function: p
  show = function: p
  write = function: p
  clear = function: p
lv = table:
  enabled = true
  paused = false
  running = true
  zoom = 1
  info = function: p
  start = function: p
  pause = function: p
  resume = function: p
  stop = function: p
  wait = function: p
lens = table:
  name = "EF50mm f/1.2L USM"
  focal_length = 101
  focus_distance = 261120
  hyperfocal = 62915
  dof_near = 50655
  dof_far = 1000000
  af = true
  af_mode = 0
  focus = function: p
display = table:
  idle = true
  height = 480
  width = 720
  pixel = function: p
  draw = function: p
  clear = function: p
  print = function: p
  circle = function: p
  rect = function: p
  off = function: p
  load = function: p
  notify_box = function: p
  screenshot = function: p
  on = function: p
  line = function: p
key = table:
  last = 0
  press = function: p
  wait = function: p
menu = table:
  visible = false
  new = function: p
  set = function: p
  block = function: p
  get = function: p
  close = function: p
  open = function: p
testmenu = userdata:
  value = 0
  name = "Script API tests"
  help = "Various tests for the Lua scripting API."
  help2 = "When adding new Lua APIs, tests for them should go here."
  advanced = 0
  depends_on = 0
  edit_mode = 0
  hidden = false
  icon_type = 5
  jhidden = false
  max = 0
  min = 0
  selected = true
  shidden = false
  starred = false
  submenu_height = 0
  submenu_width = 0
  unit = 0
  works_best_in = 0
  run_in_separate_task = 0
  select = function: p
  update = nil
  info = nil
  rinfo = nil
  warning = nil
movie = table:
  recording = false
  stop = function: p
  start = function: p
dryos = table:
  clock = 25
  ms_clock = 25085
  prefix = "1Y7A"
  dcim_dir = table:
    exists = true
    create = function: p
    children = function: p
    files = function: p
    parent = table:
      exists = true
      create = function: p
      children = function: p
      files = function: p
      parent = table:
        exists = true
        create = function: p
        children = function: p
        files = function: p
        parent = nil
        path = "B:/"
      path = "B:/DCIM/"
    path = "B:/DCIM/100EOS5D/"
  config_dir = table:
    exists = true
    create = function: p
    children = function: p
    files = function: p
    parent = table:
      exists = true
      create = function: p
      children = function: p
      files = function: p
      parent = table:
        exists = true
        create = function: p
        children = function: p
        files = function: p
        parent = nil
        path = "B:/"
      path = "ML/"
    path = "ML/SETTINGS/"
  ml_card = table:
    cluster_size = 131072
    drive_letter = "B"
    file_number = 2489
    folder_number = 100
    free_space = 62705024
    type = "SD"
    _card_ptr = userdata
    path = "B:/"
  shooting_card = table:
    cluster_size = 131072
    drive_letter = "B"
    file_number = 2489
    folder_number = 100
    free_space = 62705024
    type = "SD"
    _card_ptr = userdata
    path = "B:/"
  date = table:
    min = 38
    day = 19
    wday = 1
    month = 2
    hour = 8
    year = 2017
    isdst = false
    yday = 50
    sec = 40
  directory = function: p
  remove = function: p
  call = function: p
interval = table:
  time = 10
  count = 0
  running = 0
  stop = function: p
battery = table:
  level = 53
  id = 0
  performance = 3
  time = 5724
  drain_rate = 33
task = table:
  yield = function: p
  create = function: p
property = table:
Generic tests completed.

Module tests...
Copy test: autoexec.bin -> tmp.bin
Copy test OK
Append test: tmp.txt
Append test OK
Testing exposure settings, module 'camera'...
Camera    : Canon EOS 5D Mark III (5D3) 1.3.4
Lens      : EF50mm f/1.2L USM
Shoot mode: 3
Shutter   : Ç60 (raw 104, 0.015624s, 16ms, apex 6.)
Aperture  : Å5.6 (raw 48, f/5.599999, apex 5)
Av range  : Å1.2..Å16 (raw 13..72, f/1.2..f/16, apex 0.624999..8)
ISO       : 200 (raw 80, 200, apex 6.)
EC        : 0.0 (raw 0, 0 EV)
Flash EC  : 0.0 (raw 0, 0 EV)
Setting shutter to random values...
Setting ISO to random values...
Setting aperture to random values...
Please switch to Av mode.
Setting EC to random values...
Setting Flash EC to random values...
Exposure tests completed.

Testing module 'lv'...
LiveView is running; stopping...
Starting LiveView...
Setting zoom to x1...
Setting zoom to x5...
Setting zoom to x10...
Setting zoom to x5...
Setting zoom to x1...
Setting zoom to x10...
Setting zoom to x1...
Pausing LiveView...
Resuming LiveView...
Stopping LiveView...
LiveView tests completed.

Focus distance: 261120
Focusing backward...
Focus distance: 261120
Focusing forward with step size 3, wait=true...
.......................
Focus distance: 261120
Focusing backward with step size 3, wait=true...
.......................
Focus distance: 261120
Focus range: 23 steps forward, 23 steps backward.
Focusing forward with step size 3, wait=false...
.......................
Focus distance: 261120
Focusing backward with step size 3, wait=false...
.......................
Focus distance: 261120
Focus range: 23 steps forward, 23 steps backward.
Focusing forward with step size 2, wait=true...
...
Focus distance: 261120
Focusing backward with step size 2, wait=true...
...
Focus distance: 261120
Focus range: 161 steps forward, 162 steps backward.
Focusing forward with step size 2, wait=false...
...
Focus distance: 261120
Focusing backward with step size 2, wait=false...
...
Focus distance: 261120
Focus range: 161 steps forward, 162 steps backward.
Focusing forward with step size 1, wait=true...
...
Focus distance: 261120
Focusing backward with step size 1, wait=true...
...
Focus distance: 261120
Focus range: 1237 steps forward, 1232 steps backward.
Focusing forward with step size 1, wait=false...
...
Focus distance: 261120
Focusing backward with step size 1, wait=false...
...
Focus distance: 261120
Focus range: 1237 steps forward, 1237 steps backward.
Focus test completed.

Done!


However, the "lua_fix" branch has some extended tests and it stops here.



Any hints on what might be causing this?

a1ex

Quote from: dfort on February 08, 2017, 05:28:39 AM
one valuable lesson I learned from dmilligan is to look at the code

The error happens here:

        printf("Autofocus outside LiveView...\n")
        assert(lens.autofocus())


In lua_lens.c, luaCB_lens_autofocus, it simulates a half-shutter press (which probably works OK, being covered in the stubs test), then it waits for... FOCUS_CONFIRMATION!

If your lens cannot autofocus, it should not reach this code at all.

dfort

Ah, but I did look at the code and am checking against three different firmware versions. Note that the first thing I wrote was about FOCUS_CONFIRMATION. Looking at consts.h it says:

// see "focusinfo" and Wiki:Struct_Guessing

So I went to that wiki page and worked my way through it until I came up with the value for the 134 firmware. Interesting that when using the 123 values the line number reported was api_test.lua:734 and when using the newly found FOCUS_CONFIRMATION constant it changed to api_test.lua:724. It seems that on one run the camera was in LiveView and in the other it wasn't but I ran the tests multiple times, always starting in LiveView mode and these results were repeatable.

consts.h
722    if not lv.running then
723        printf("Autofocus outside LiveView...\n")
724 ->     assert(lens.autofocus())
725
726        lv.start()
727        assert(lv.running)
728    end
729
730    if lens.af then
731        printf("Focus distance: %s\n",  lens.focus_distance)
732
733        printf("Autofocus in LiveView...\n")
734 ->     assert(lens.autofocus())


In both cases it seems to trip up in pretty much the same spot, waiting for FOCUS_CONFIRMATION. So maybe I didn't figure it out properly?

#define FOCUS_CONFIRMATION (*(int*)0x27650)

Something I did regularly back when I was having to make bug reports was to do regression tests so I installed 5D3.123 and ran the lua_fix test.



That's not good, I got further with the 5D3.134 build. Ok, how about the gold standard -- 5D3.113:



Oops, did I compile it improperly? Downloaded lua_fix from the Experiments download page and got the same results.

So maybe when this is fixed on 5D3.113 it will also work with 5D3.134?

a1ex

It works fine here. Of course, the camera must have something to focus on.

dfort

Ok--sanity check. What would Walter do? Remove battery, remove card, reset custom settings, ah! Got through that sticking point but then the camera would just shut down after about a minute. Doh! Disable Auto Power off.

Here we go:


===============================================================================
ML/SCRIPTS/api_test.lua - 2017-2-19 20:23:08
===============================================================================

Strict mode tests...
Strict mode tests passed.

Generic tests...
arg = table:
  [0] = "api_test.lua"
camera = table:
  shutter = table:
    raw = 101
    apex = 5.625
    ms = 20
    value = 0.020263
  aperture = table:
    raw = 48
    apex = 5
    value = 5.599999
    min = table:
      raw = 13
      apex = 0.624999
      value = 1.2
    max = table:
      raw = 72
      apex = 8
      value = 16
  iso = table:
    raw = 92
    apex = 7.5
    value = 560
  ec = table:
    raw = 0
    value = 0
  flash_ec = table:
    raw = 0
    value = 0
  kelvin = 5200
  mode = 3
  metering_mode = 3
  drive_mode = 0
  model = "Canon EOS 5D Mark III"
  model_short = "5D3"
  firmware = "1.3.4"
  temperature = 160
  state = 0
  burst = function: p
  reboot = function: p
  bulb = function: p
  shoot = function: p
event = table:
  pre_shoot = nil
  post_shoot = nil
  shoot_task = nil
  seconds_clock = nil
  keypress = nil
  custom_picture_taking = nil
  intervalometer = nil
  config_save = nil
console = table:
  clear = function: p
  write = function: p
  show = function: p
  hide = function: p
lv = table:
  enabled = true
  paused = false
  running = true
  zoom = 1
  resume = function: p
  wait = function: p
  info = function: p
  pause = function: p
  start = function: p
  stop = function: p
lens = table:
  name = "EF50mm f/1.2L USM"
  focal_length = 101
  focus_distance = 261120
  hyperfocal = 62915
  dof_near = 50655
  dof_far = 1000000
  af = true
  af_mode = 0
  autofocus = function: p
  focus = function: p
display = table:
  idle = true
  height = 480
  width = 720
  on = function: p
  screenshot = function: p
  line = function: p
  load = function: p
  off = function: p
  clear = function: p
  notify_box = function: p
  pixel = function: p
  draw = function: p
  circle = function: p
  rect = function: p
  print = function: p
key = table:
  last = 20
  wait = function: p
  press = function: p
menu = table:
  visible = false
  close = function: p
  set = function: p
  new = function: p
  block = function: p
  get = function: p
  open = function: p
movie = table:
  recording = false
  start = function: p
  stop = function: p
dryos = table:
  clock = 14
  ms_clock = 14657
  prefix = "1Y7A"
  dcim_dir = table:
    exists = true
    create = function: p
    children = function: p
    files = function: p
    parent = table:
      exists = true
      create = function: p
      children = function: p
      files = function: p
      parent = table:
        exists = true
        create = function: p
        children = function: p
        files = function: p
        parent = nil
        path = "B:/"
      path = "B:/DCIM/"
    path = "B:/DCIM/100EOS5D/"
  config_dir = table:
    exists = true
    create = function: p
    children = function: p
    files = function: p
    parent = table:
      exists = true
      create = function: p
      children = function: p
      files = function: p
      parent = table:
        exists = true
        create = function: p
        children = function: p
        files = function: p
        parent = nil
        path = "B:/"
      path = "ML/"
    path = "ML/SETTINGS/"
  ml_card = table:
    cluster_size = 131072
    drive_letter = "B"
    file_number = 2502
    folder_number = 100
    free_space = 62705152
    type = "SD"
    _card_ptr = userdata
    path = "B:/"
  shooting_card = table:
    cluster_size = 131072
    drive_letter = "B"
    file_number = 2502
    folder_number = 100
    free_space = 62705152
    type = "SD"
    _card_ptr = userdata
    path = "B:/"
  date = table:
    wday = 1
    day = 19
    month = 2
    sec = 10
    isdst = false
    year = 2017
    hour = 20
    min = 23
    yday = 50
  call = function: p
  directory = function: p
  remove = function: p
  rename = function: p
interval = table:
  time = 10
  count = 0
  running = false
  stop = function: p
battery = table:
  level = 49
  id = 0
  performance = 3
  time = nil
  drain_rate = 33
task = table:
  create = function: p
  yield = function: p
property = table:
Generic tests completed.

Module tests...
Testing file I/O...
Copy test: autoexec.bin -> tmp.bin
Copy test OK
Append test: tmp.txt
Append test OK
Rename test: apple.txt -> banana.txt
Rename test OK
Rename test: apple.txt -> ML/banana.txt
Rename test OK
File I/O tests completed.

Testing half-shutter...
Half-shutter test OK.

Testing module 'lv'...
LiveView is running; stopping...
Starting LiveView...
Setting zoom to x1...
Setting zoom to x5...
Setting zoom to x10...
Setting zoom to x5...
Setting zoom to x1...
Setting zoom to x10...
Setting zoom to x1...
Pausing LiveView...
Resuming LiveView...
Stopping LiveView...
LiveView tests completed.


Testing lens focus functionality...
Autofocus outside LiveView...
Focus distance: 261120
Autofocus in LiveView...
Focus distance: 261120
Focusing backward...
Focus distance: 261120
Focusing forward with step size 3, wait=true...
.......................
Focus distance: 261120
Focusing backward with step size 3, wait=true...
.......................
Focus distance: 261120
Focus range: 23 steps forward, 23 steps backward.
Focusing forward with step size 3, wait=false...
...
Focus distance: 261120
Focusing backward with step size 3, wait=false...
...
Focus distance: 261120
Focus range: 106 steps forward, 108 steps backward.
Focusing forward with step size 2, wait=true...
...
Focus distance: 261120
Focusing backward with step size 2, wait=true...
...
Focus distance: 261120
Focus range: 161 steps forward, 162 steps backward.
Focusing forward with step size 2, wait=false...
...
Focus distance: 261120
Focusing backward with step size 2, wait=false...
...
Focus distance: 261120
Focus range: 482 steps forward, 485 steps backward.
Focusing forward with step size 1, wait=true...
...
Focus distance: 261120
Focusing backward with step size 1, wait=true...
...
Focus distance: 261120
Focus range: 1237 steps forward, 1235 steps backward.
Focusing forward with step size 1, wait=false...
...
Focus distance: 261120
Focusing backward with step size 1, wait=false...
...
Focus distance: 261120
Focus range: 1679 steps forward, 1681 steps backward.
Focus test completed.

Testing picture taking functions...
Snap simulation test...
Single picture...
Two burst pictures...
Ideally, the camera should be in some continuous shooting mode (not checked).
Bulb picture...
Elapsed time: 13658
Picture taking tests completed.

Testing exposure settings...
Camera    : Canon EOS 5D Mark III (5D3) 1.3.4
Lens      : EF50mm f/1.2L USM
Shoot mode: 3
Shutter   : Ç50 (raw 101, 0.020263s, 20ms, apex 5.625)
Aperture  : Å5.6 (raw 48, f/5.599999, apex 5)
Av range  : Å1.2..Å16 (raw 13..72, f/1.2..f/16, apex 0.624999..8)
ISO       : 560 (raw 92, 560, apex 7.5)
EC        : 0.0 (raw 0, 0 EV)
Flash EC  : 0.0 (raw 0, 0 EV)
Setting shutter to random values...
Setting ISO to random values...
Setting aperture to random values...
Please switch to Av mode.
Setting EC to random values...
Setting Flash EC to random values...
Exposure tests completed.


Testing movie recording...
Please switch to Movie mode.
Movie recording tests completed.

Done!


A few interesting observations. The 113 firmware gave one error while the 134 firmware seemed to pass all tests:

Setting aperture to random values...
Error: aperture delta 0.25 EV (expected < 0.1875, Å11, method=3)


I have a couple of borrowed lenses for these tests, a gorgeous 50mm f1.2 L USM and a curious looking Canon 40mm f/2.8 STM. The STM lens focused much quicker and quieter than the USM lens. Here is just the focus section for the lua API test run with the 40mm "pancake" lens:


===============================================================================
ML/SCRIPTS/api_test.lua - 2017-2-19 20:49:13
===============================================================================
...

Testing lens focus functionality...
Autofocus outside LiveView...
Focus distance: 473600
Autofocus in LiveView...
Focus distance: 473600
Focusing backward...
Focus distance: 483840
Focusing forward with step size 3, wait=true...
.........
Focus distance: 432640
Focusing backward with step size 3, wait=true...
..........
Focus distance: 483840
Focus range: 9 steps forward, 10 steps backward.
Focusing forward with step size 3, wait=false...
...
Focus distance: 432640
Focusing backward with step size 3, wait=false...
...
Focus distance: 483840
Focus range: 151 steps forward, 146 steps backward.
Focusing forward with step size 2, wait=true...
................................................................
Focus distance: 432640
Focusing backward with step size 2, wait=true...
................................................................
Focus distance: 483840
Focus range: 64 steps forward, 64 steps backward.
Focusing forward with step size 2, wait=false...
...
Focus distance: 432640
Focusing backward with step size 2, wait=false...
...
Focus distance: 483840
Focus range: 224 steps forward, 220 steps backward.
Focusing forward with step size 1, wait=true...

Focus distance: 483840
Focusing backward with step size 1, wait=true...

Focus distance: 483840
Focus range: 0 steps forward, 0 steps backward.
Focusing forward with step size 1, wait=false...
.
Focus distance: 483840
Focusing backward with step size 1, wait=false...

Focus distance: 483840
Focus range: 1 steps forward, 0 steps backward.
Focus test completed.

Testing picture taking functions...
Snap simulation test...
Single picture...
Two burst pictures...
Ideally, the camera should be in some continuous shooting mode (not checked).
Bulb picture...
Elapsed time: 13680
Picture taking tests completed.

Testing exposure settings...
Camera    : Canon EOS 5D Mark III (5D3) 1.3.4
Lens      : EF40mm f/2.8 STM


So the good new is that it looks like this 1.3.4 build is passing all the tests. The bad new is that there are still some wrinkles to iron out.

adtg_gui from the unified branch is reporting the wrong CMOS[0] values that are needed for dual_iso and the adtg_gui from the iso-research branch is crashing. I'm pretty sure that I got the right values for 134 to work:

    else if (is_camera("5D3", "1.3.4"))
    {
        ADTG_WRITE_FUNC = 0xE440;     // 0xFFA02514 - RAM_OFFSET
        CMOS_WRITE_FUNC = 0xE7CC;     // 0xFFA028A0 - RAM_OFFSET
        CMOS2_WRITE_FUNC = 0xE584;    // 0xFFA02658 - RAM_OFFSET
        CMOS16_WRITE_FUNC = 0xE8B8;   // 0xFFA0298C - RAM_OFFSET
        ENGIO_WRITE_FUNC = 0xFF2910FC+8;
        ENG_DRV_OUT_FUNC = 0xFF290DE4;
    }


Yeah, ENGIO_WRITE_FUNC is funky but I took that from the 123 code.

There is also some Canon menu flashing when first opening the ML menu with LiveView off.

a1ex

So it was a custom setting? Would be nice to find which one.

These settings are saved in ROM, so just keep a backup safe if the troublesome setting(s) can't be identified easily. If I'll manage to get Canon menu navigation working on 5D3 in QEMU (it now works on 500D), it should be easy to reproduce.

dfort

Quote from: a1ex on February 20, 2017, 08:29:00 AM
...keep a backup safe if the troublesome setting(s) can't be identified easily....

Will do. I'm also going to disassemble the new ROM1.BIN to double check some of the addresses. This camera had 1.3.3 installed when I got it and I have gone from 1.1.3 to 1.3.4 to 1.2.3, etc. without ever clearing the Canon settings so I can imagine that they might have gotten corrupted. Maybe corrupt custom setting is why Canon doesn't want users to downgrade from the 1.3.x firmware series?

grosten

How's the process going? How stable is it compared to the 1.2.3/1.1.3 and where can I get it?
(Newbie)

dfort

The only hiccup so far is a flashing menu when you first turn it on. This is something that the 1.3.3 port also had. The pull request is here:

https://bitbucket.org/hudson/magic-lantern/pull-requests/816/update-to-5d3134/diff

I also posted a test build on my bitbucket download area (201 downloads):

https://bitbucket.org/daniel_fort/magic-lantern/downloads/

If you want to regress to an earlier firmware from 1.3.4 (or 1.3.3) make sure you follow these instructions:

http://www.magiclantern.fm/forum/index.php?topic=18941.msg179783#msg179783

ruc

Hallo friends,
I read first after that the ML-SETUP.FIR is not there. Where can i get it? So i can upload it to the card??
I have now just the 1.3.4 and no magic lantern.
Please Help.

nexiabass

Also problem here.
Downloaded "magiclantern-Nightly.2017Apr22.5D3134.zip"
Camera Firmware 1.3.4.
But installation failed.
ML installer is expecting firmware 1.2.3.

Walter Schulz

Format card in cardreader.
Downgrade to firmware 1.2.3.
Install ML for firmware 1.2.3.
Use a second card (clean one, format in cardreader, then in cam) and install firmware 1.3.4.
Backup and delete "ML" card's Autoexec.bin, ML-SETUP.FIR and ML directory.
Copy extracted 1.3.4 build contents to "ML" card.
Does it work now?

Report back.

dfort

Quote from: nexiabass on May 08, 2017, 08:36:00 PM
ML installer is expecting firmware 1.2.3.

Oops, my fault. I uploaded a package with the 1.2.3 ML-SETUP.FIR, fixed it. Strange, 319 downloads of that build and this is the first report of the problem.

Sorry, we don't have a 1.3.4 ML-SETUP.FIR yet so you'll have to follow Walter's advice. Make sure your camera boot flag is set before updating the Canon firmware. In other words don't uninstall 1.2.3 before you update.

nexiabass

The advice worked.

Now i can use ML with the newest Firmware  8) Thanks!

I found only one issue for me - in the "normal" canon menus the Q button no longer works.

Is there any workaround?

dfort

Quote from: nexiabass on May 31, 2017, 04:07:25 PM
I found only one issue for me - in the "normal" canon menus the Q button no longer works.

Well that is an issue. I've been busy on other projects and could use some help tracking that down. So if you don't load ML the Q button works as expected on the Canon menus?

nexiabass

The Q button works perfect if i start the camera without the card.
Otherwise ML seems to run perfectly.

gianni_1967

Hiya all. I am buying a second hand Mkiii with 1.3.4 firmware installed. I will want to use ML on it, reason why I am reading this post. I am getting that I will need to downgrade it to 1.2.3. Where do I get the downgrade from? And I am not getting the procedure. Can anyone please explain it step by step? Get second card, so that will be after downgrading the camera to 1.2.3?? And how do I then install 1.3.4 if I downgraded the camera? Sorry for being probably a bit slow... :-(

Quote from: Walter Schulz on May 08, 2017, 08:46:43 PM
Format card in cardreader.
Downgrade to firmware 1.2.3.
Install ML for firmware 1.2.3.
Use a second card (clean one, format in cardreader, then in cam) and install firmware 1.3.4.
Backup and delete "ML" card's Autoexec.bin, ML-SETUP.FIR and ML directory.
Copy extracted 1.3.4 build contents to "ML" card.
Does it work now?

Report back.

dfort

@gianni_1967

Pelican keeps an archive of Canon firmware updates on his website:

http://pel.hu/eoscard/

Here are instructions how to do a Canon firmware downgrade:

http://www.magiclantern.fm/forum/index.php?topic=18941.msg179783#msg179783

Just a tip--for the best Magic Lantern experience on 5D3 use 1.1.3, if you need HDMI output and some other updated features use 1.2.3 if you want to live on the bleeding edge and help with development then maybe 1.3.4 is for you.