Main Builds » 70D 1.1.2

Latest Build (2018-02-17 01:57)

Change Log

8e53e66: Merged patchmgr into 70D_merge_fw112

41088c5: Merged lua_fix into 70D_merge_fw112

b632855: Fix compiling with CONFIG_DIGIC_POKE

deeeced: Modules: patch.h no longer needed

20a52d5: Modules: fix enabling "long" modules when using config presets (issue #2789)
to reproduce: -> ML/SETTINGS/MENU.KEY/arkanoid. -> file create error on exfat
modules with shorter name: -> ML/SETTINGS/MENU.KEY/adv_int.e -> it appears to work fine, but it's incorrect
worst case: -> ML/SETTINGS/MYPRESET.NAM/adv_i -> it appears to work fine, possible name clash with other modules

cb083db: shoot: attempt to make public photo capture functions thread safe, to some extent
a bit of a hack; some serious rework needed to fix this properly
at least it appears to fix

b8626f4: Bracketing: debug messages for troubleshooting

379b1af: shoot: make the so-called remote_shoot always take pictures, not movies
(moved movie functionality in lcdsensor/lightsensor - anything else broken?)

5d7a200: lens_take_picture: always wait until the image capture process starts (and optionally wait for it to finish)

d592d0a: Lua: fix camera.wait() not appearing in API docs

25a4a03: selftest: also test get_task_name_from_id, not just get_current_task_name
(they use different Canon APIs)

8677441: Attempt to fix conflict between ML and Canon overlays on recent DIGIC 4 models
confirmed on 1200D, likely applies to 1300D as well

2d21002: gui-common: remove outdated comment

412a401: Menu: some rough support for sumbenus where the initial field enables the entire group
- the initial field should have the same .priv field as the master entry, and .select = menu_open_submenu
- prevent graying out the field used for enabling, even if it gives the truth value for the master menu entry
- do not print value by default for submenus (we already draw a forward sign)

ac878e5: gui-common: make translated longpress events (such as Q on certain models) available to other modules (tested with Lua)

5ac9cf6: Menu: refactored long-press checks with a common function and data structure
(to be tested; may affect every single camera model)

f8b9f9f: Menu: use animation for all longpress handlers

bc8a5a0: Merged 100D_merge_fw101 into lua_fix
(going to refactor the SET/Q button handling)

4b9a5c2: lens.h: some models have larger PROP_LV_LENS
EOSM: 61; 70D/100D: 58; 5D3.123/6D: 56

ac97c5d: Lens info: attempt to update outside LiveView, to be tested
focus distance, focal length on zoom lenses etc are now updated every second
credits Greg:

d0e55b3: lens_info: use lens_info.lens_exists instead of[0]
(from manual_lens_info)

d863156: 100D: attempt to fix Q/SET regression (tested in QEMU, unsure about the exact hardware behavior)
also reduced long-press delay to 0.5 seconds

f3bfa26: Merged allocate-raw-lv-buffer into lua_fix
(minor; 5D3.123 fix)

2a04a9a: Merged unified into lua_fix
(DOF fixes)

36acb0f: Merged in garry23/dof-fix-for-focus.c/garry23/focusc-edited-online-with-bitbucket-by-g-1495645868417 (pull request #831)
Changed the DoF equations to better handle integer math and used a different source for the equations.

9d76a31: Dummy merge (reference changeset for make install_qemu)

f67d34c: Merged in makefile-updates (pull request #898)
Makefile updates part 2 (minor fixes, updated make install_qemu)

4131ccb: focus.c: fix possible overflow when computing hyperfocal (corner case)
examples (focal_len, focus_dist):
73 4689
90 7123
91 7282
98 8444

0e82ba3: focus.c: fix typo pointed out by garry23

b3e263f: Merged longpress into lua_fix

2ee1d50: simplified menu definition for log interval
(using the new routines for rounding options)

b1d9994: Merged edmac into lua_fix

d5ad86f: Makefile: updated rules for "make install_qemu" (for reference, should anyone ever want to use them on older changesets)
Before using them, qemu has to be installed first in qemu-eos (from the qemu branch)
QEMU installation directory can be changed from the QEMU_DIR environment variable, or from Makefile.user

8071be3: Changed the DoF equations to better handle integer math and used a different source for the equations.

02e0020: focus.c edited online with Bitbucket

d2b1bac: focus.c edited online with Bitbucket (updated)

fae93ae: focus.c edited online with Bitbucket by Garry

d590db7: Menu: fine-tuned long-press indicator appearance
- using filled circles
- using a sine table to avoid roundoff errors

2592de7: Merged unified into longpress

b732009: Menu: simple long-press indicator (animated)

8840aa5: EOS M: fix menu navigation;
make sure the long-press code can be enabled on other models
(to enable, define CONFIG_LONG_PRESS_SET_MENU in internals.h)

271bd63: gui-common: moved button logging code at the top
(to make sure all events are printed in all modes)

81b9e49: Raw backend: DEFAULT_RAW_BUFFER_SIZE for 700D and EOSM (thanks dfort)

33d943d: mem.c: fix compiling for 5D3.123
(display buffer address depends on HDMI options)

2dae7e4: Merged new_dryos_task_hooks into 100D_merge_fw101

8a5b890: 100D: cleanup handling of the Q button
(see b9e0b9e)

d6afebc: Merged new_dryos_task_hooks into lua_fix

1db7694: Merged allocate-raw-lv-buffer into lua_fix

538886b: Merged qemu into lua_fix

a9728fe: selftest: EOSM takes the crown for the lowest amount of shoot_memory available
(fragmented allocation can no longer be tested with hardcoded value)

b784fdf: Raw backend: 60D appears to allocate 28MB for the raw buffer

d32e6d5: Raw backend: updated 5D3 hypothesis about Canon LV RAW buffer
(todo: re-check 1.2.3)

e799e89: Raw backend: attempt to autodetect Canon's raw buffer size
- compile with CONFIG_MARK_UNUSED_MEMORY_AT_STARTUP (config-defines.h)
- open the console (Debug menu) and enable something that uses LiveView RAW features (raw video, raw histogram etc)
- test by starting the camera in all video modes (photo, 1080p, 720p, crop, x5 etc)
- take a screenshot or write down the console messages

d93c113: Raw backend: fix compilation on very old models

fa9c903: 1100D: CONFIG_ALLOCATE_RAW_LV_BUFFER may not be needed, after all

23524a6: Free Memory dialog: updated common addresses to allow dynamically allocated buffers (not just hardcoded ones);
also show current RAW and BMP buffer(s), not just the YUV ones

69bdcde: Raw backend: 1100D also needs DEFAULT_RAW_BUFFER / DEFAULT_RAW_BUFFER_SIZE

a6d941d: Raw backend: 1100D needs CONFIG_ALLOCATE_RAW_LV_BUFFER after refactoring

de5a794: Raw backend: use dummy DEFAULT_RAW_BUFFER_SIZE until the real size is found
without this, most builds would be broken
fixme: old models without CONFIG_EDMAC_RAW_SLURP are still broken

f0a25a6: Raw backend: sync memory allocation routines with crop_rec_4k
(squashed 8287b4f, 0ff9f1f, 3948408, d55423f, ebf206a, 3bc3637, cad72ea and 2bc5c3a, keeping only changes to raw.c)

3b69c5b: mlv_lite, mlv_rec: dialog_refresh_timer_addr for 1100D
(to be tested)

b34fa35: Merged unified into allocate-raw-lv-buffer

b9e0b9e: GUI: removed BGMT_Q_ALT
to be tested on 1100D, 550D, 600D, 60D
and also on recent ports (100D, 1200D, 1300D)

b46b630: Merged new-dryos-task-hooks into lua_fix

6e08bee: selftest: reduced memory requirements to allow 1100D to pass the memory tests

eb98ed4: 1100D: raw skip offsets for LiveView

4e24470: Patch manager: nicer way to avoid calling _reapply_cache_patches when not present
(fixes compiling the installer target and removes the need for defining NO_CACHE_PATCHES)

ac33688: Merged unified into patchmgr

519f2d0: Merged new-dryos-task-hooks into 100D_merge_fw101
(enabled CONFIG_NEW_DRYOS_TASK_HOOKS in internals.h; added task_dispatch_hook comment)

97d64bf: 100D: enabled Sticky half-shutter (unlikely to cause issues) and Sticky DOF preview (to be tested)

ec86da5: Changed the DoF equations to better handle integer math and used a different source for the equations.

2d19027: Menu: added different rounding mode flags: ISO R10", R20", 1-2-5 series, powers of 2

4284d17: Menu: cleaned up edit_mode constants
(removed unused EM_MANY_VALUES and renamed EM_MANY_VALUES_LV to EM_SHOW_LIVEVIEW)

846c31f: Menu: added UNIT_TIME_MS and UNIT_TIME_US with caret editing support; minor refactoring

4f7a1d0: silent pictures: options for delayed trigger, to help with IS

a39b95f: silent pictures: after image review, prefer to return to LiveView, with some exceptions
- if intervalometer is enabled, prefer to turn off the display to save power
- if "Turn off LCD" is enabled under "Powersave in LiveView", also prefer to turn off the display (manual override, e.g. for externally triggered timelapse)
- otherwise, prefer to return to LiveView (credits dfort)

1541d37: silent pictures: wait for IS if the switch is enabled on the lens

296f16a: 650D, 700D: enabled Sticky half-shutter (unlikely to cause issues) and Sticky DOF preview (to be tested)

1dbb29d: Auto bracketing: fine-tuned highlight and shadow thresholds
overexposed: if more than 0.02% of all pixels are above 235 in the YUV buffer (preview JPG, picture-style dependent)
underexposed: if more than 10% of all pixels are below 50
previous thresholds: 0.15% above 235 for highlights, 2.5% below 20 for shadows
todo: use raw-based metering? (some models still have problems with raw buffers in photo mode: 70D, 500D in LiveView, maybe others)

87c5cc7: Auto bracketing: do not analyze image borders
(should prevent unnecessary bright exposures if the image has black corners - happens with certain lenses)

88d8f92: Bracketing: print debug messages to console; use higher precision for highlight/shadow percentages
for troubleshooting

5112610: lens.h: mark lens_format_* as not thread-safe; fix return type
lua: workarounds to ensure thread safety for the above calls

9f51c19: lens: added lens_format_iso and refactored other code to use it

aa9c7f1: Lua: fixed issue #2824 - decimal number precision when printing
thanks dmilligan for the hint and aprofiti for the test code
tested with:
val = {1.2,1.4,2.8,4.3,4.5,5.6}
for i = 1, 6 do
console.write(" ")
console.write(val[i] - 0.000001)
console.write(" ")
console.write(val[i] + 0.000001)
1.2 1.199999 1.200001
1.4 1.399999 1.400001
2.8 2.799999 2.800001
4.3 4.299999 4.300001
4.5 4.499999 4.500001
5.6 5.599999 5.600001
1.2 1.199999 1.2
1.399999 1.399999 1.4
2.799999 2.799999 2.8
4.3 4.299999 4.300001
4.5 4.499999 4.5
5.599999 5.599998 5.6

f37efb4: Ghost image: fix crash (issues #2796, #2783)

4c32c3f: gui-common: sync gui_uilock with crop_rec_4k

bf8aa36: Merged new-dryos-task-hooks into lua_fix

df1f1b5: Merged unified into 100D_merge_fw101

1aab319: Merged new-dryos-task-hooks into 100D_merge_fw101

31848a7: 100D: MPU stubs (for dm-spy-experiments)

e4ab5b7: lua_camera: minor help tweaks

0290529: lua_camera: getter for gui.mode (missed in 706b131) + API tests

485997b: gui-common: fix exit_(play|qr|menu)_mode on 60D (camera.gui tests from api_test.lua are working now)

d7cdf70: gui-common: refactored exit_play_qr_mode/exit_menu_mode to avoid duplicate code
added exit_play_qr_menu_mode (generic)

2642fbe: Backout bc10355 (undo screenshot palette fix, not portable, issue #2821)

fee1ee2: edmac: make sure the log files don't have unnecessary newlines
(channels with complex size configuration may get printed on multiple lines; that makes the log file harder to parse)

1508a54: edmac: LOG_INTERVAL can now be changed from menu (persistent setting)

564b0c5: edmac: use numbered log file names

edcb52f: edmac: fix behavior when the extra info buffer gets full

056e56e: edmac: use half-shutter as trigger for logging EDMAC channels;
fine-tuned messages

2eddc9f: edmac: fix crash on models other than 5D3
(there was a hardcoded stub)

4b161ce: edmac: fix crash when using "Log EDMAC usage" on D4 models

bc3bd0d: Merged unified into edmac

b4a8fad: Added to nightly builds

2061922: edmac-memcpy: check to make sure all models have AbortEDmac
(to make sure it's correct: -> Stubs API test)

cd5a40a: lua_menu: fix hidden, advanced and edit_mode not working from menu declaration
todo: test all these settings and refactor to avoid duplicate code

0ec6843: Merged unified into lua_fix

84e8d24: Lua: fix missing from docs

cd768c4: Lua stdio: fix buffering issues
(error messages written to stderr with fprintf, maybe others)

b2f245c: Lua: sort scripts by filename at startup

cadbb0e: Lua: updated menu.get to return string by default
to get an integer: menu.get("Foo", "Bar", 0)
old syntax is still valid: menu.get("Foo", "Bar", "")
updated API tests

c60d970: Merged makefile-updates into lua-fix

29f030c: Merged makefile-updates into lua_fix

e7a7ead: Patch manager: moved reapply_cache_patches into sync_caches
also made it private

ab6ed83: fixed late evaluation issue in rule builder

60c763b: Merged new-dryos-task-hooks into lua_fix

5bcd52b: Merged makefile-updates into lua_fix

706b131: Lua: initial sketch for camera.gui (Canon GUI modes)
Moved display.idle to camera.gui.idle; removed camera.state

1a55233: gui-common: exit_menu_mode; minor fix in exit_play_qr_mode

c1d164e: gui-common: enter_menu_mode

1a9917c: Moved enter_play_mode, exit_play_qr_mode and PLAY/MENU status helpers to gui-common

3c52202: Lua: lv.vidmode (current video mode, as string)
API tests included

6087555: get_video_mode_name: handle paused LiveView mode (PAUSED-LV) and regular photo mode outside LiveView (PH-NOLV)

811e024: Lua: lv.overlays (status of Canon/ML overlays in LiveView)
API test included

36f1a4c: Lua: console.visible (status)
API tests updated

254314a: Lua: lens.autofocusing (status)
API test included (requires user to start autofocusing, as lens.autofocus() blocks until finished)

0381d50: lua_key.c: fix warning

45a225b: Lua: fix led_blink, issue #2808

aa09cc1: Merged unified into lua_fix

51f0aa8: Merged unified into patchmgr

ca46ef4: 100D: minor typo

c08b8ae: Merged new-dryos-task-hooks into 100D_merge_fw101

1db2345: 100D: fix MAX_ISO_BV

d85e97b: Merged unified into 100D_merge_fw101

b28cd95: Merged in nikfreak/magic-lantern/100D_merge_fw101 (pull request #867)
100D merge fw101 update

70e77de: 100D: AbortEDmac stub

a96451f: 100D: fix ADTG/CMOS_WRITE_FUNC

c796fbb: Merged in Dannephoto/magic-lantern/100D_merge_fw101_SOUND (pull request #863)
Fix for audio issues on eos 100D, possibly other cameras too.
* Fix for audio issues on eos 100D, possibly other cameras too.
Thanks too dfort for code.
* Nikfreak found the correct stub
Approved-by: nikfreak

edbf5ee: selftest: save the stub test log in ML/LOGS

b1b8162: selftest: include the stub test summary in the log file

2c8a5d0: sokoban.lua: save current level in the config file
(simple script using the "config" library)

06e7220: sokoban.lua: refactored the main loop; fixed missing "you win" message

3aa71a6: Lua: trigger the config_save event after running the main body of a script
(this allows simple scripts to use the config library)

e58024e: Lua: minor error handling cleanup (simplified logic)

69bcf7a: config.lua fixes

f701759: console: fix displayed size when console has many empty lines

0fbcfb0: Lua: clear console when starting a script from menu

ed6e385: Lua: refactored iterations through lua_script list
(use a getter for lua_State -> lua_script mapping whenever possible)

cf3cbf6: Lua: use a message queue for key.wait()
(fixes missed key presses caused by race conditios, including quick press/release)

426b80c: Lua: moved script semaphores into struct lua_script (refactor)

eff9892: Lua: refactored lua_take_semaphore calls
- checking for success: if (result == 0) instead of if(!result)
- checking whether "sem" was set: use assert (rather than giving the same error message as a semaphore timeout)

7e8c58a: Lua: disable powersave for simple scripts

dcce2d4: menu: fix null pointer issue in dynamic menus

973d21a: menu: fix regression in Modified menu (with API tests)

193bfc7: menu: removed obsolete menu screenshots

0f9cf39: menu: workaround for file_man
(fixme: still relying on name lookup to find submenus)

8531414: menu: store submenu parent in the menu structure; more submenu fixes

ab986c2: Makefile: with WIFI_SD=y, ping the card until it comes online (useful for router connections)

267f268: menu: allow is_menu_entry_selected to operate on submenus
(for Lua; updated api_test.lua)

bac5e30: menu: refactored submenu selection to avoid duplicate code; minor rename

159c3bc: menu: removed side effects from get_current_submenu

2cef129: menu: allow submenu selection by name
(updated api_test.lua)

c4bcf87: menu: fix parent menu issues in composite submenus

819a11d: menu: refactored to fix thread safety in menu_add

ee96fb0: menu: fix parent menu issues in most menus (todo: composite submenus)

c78d44c: menu: check whether each submenu entry actually has a parent
(fixme: most don't)

e00e5e6: menu: if the value field is very long, do not display the name
(the value is probably verbose enough to figure out what it is)

2f0a6be: Modules: moved Show console to top level

5e83d26: Memory backend: when checking available memory, allocate both Shoot ans SRM at the same time
(they may overlap)

49aa575: debug: reworked "Show GUI Events" to use the console

b3b1099: gui_common: removed unused ui_lock (everything calls gui_uilock instead)

3d9d96c: console: enable in LiveView alongside with ML overlays (experimental)

fd1ec5d: Memory backend: fix initialization

47c6d01: Menu: use submenu_height for scrolling

834631b: ettr: fix debug code

ad1009d: Merged unified into lua_fix

9809bee: menu: do not discard customization data for menus that are not yet loaded
(e.g. for modules/scripts and other dynamic menus)

e3cb967: menu: do not overwrite existing customization data when reloading
(only reload data for newly added menu entries)

6c7c55b: menu: fix usage counters for menu items with placeholders

4dce925: menu: allow simple submenus in Recent menu

c393f74: menu: allow Debug entries in Junkie mode

0b9dcd1: Modules: make sure we can really use up to 64 of them (fix commit 8ad0912)

de4f36f: file_man: show status in main menu, if busy

3301039: file_man: disable powersaving during long copy/move operations

7c4eb2a: file_man: unified FileCopy and FileMove tasks to avoid duplicate code;
report all errors to console and show a simple progress indicator

b1e14e0: file_man: show timestamp for each file; align date/time column

b049e25: menu: fix Junkie short text overflowing in some cases

dca163d: menu: attempt to balance the automatic My Menu in Junkie mode
(with many submenu entries used frequently, this menu could end up a lot more cluttered than regular menus)

53e1cc9: menu: fix submenu entries disappearing in Junkie menu
(frequently used submenu items shouldn't be moved to My Menu; they should be just copied)

b5de547: menu: better duplicate menu warning; minor rename

9f943d9: Merged unified into 100D_merge_fw101

1cfca21: fix 100D (tested, confirmed working)

3223248: fix wrong stub (thx @dfort for the note)

2029c44: manual focus: allow moving focus box

fff0aeb: display connection map (experiment)

6768410: 100D: enabled CONFIG_TSKMON

4f97f4f: 100D: fix task_dispatch_hook

858a20c: 100D: enabled CONFIG_ALLOCATE_MEMORY_POOL and classic boot process
(similar to 6D, reserved 592K at the beginning of AllocateMemory pool)

5b0b23e: Merged new-dryos-task-hooks into 100D_merge_fw101
(note: 100D will not boot until fixing memory allocation)

02965e5: 100D: enabled CONFIG_EDMAC_RAW_SLURP

fc545d1: sync FIO stub changes introduced in unified

ef01395: Merged hudson/magic-lantern/unified into 100D_merge_fw101

5afed4d: fix suggested by a1ex for

c8b7f50: use MENU button for calling zebras in playback mode.
requested and
w/o this menu button would open Canon menu and quitting playback mode anyways. If one needs to do so just press halfshutter or play button(s) to quit playback mode and afterwards the menu button.

22928a1: we indeed can switch between YUV422 addresses
also sync MOV_RES_AND_FPS_COMBINATIONS value (Digic5)

83173fc: adjust movie related consts

e902a88: Merged hudson/magic-lantern/unified into 100D_merge_fw101

744f586: remove custom symbol file handling
(leftover from fw revisioning 100D_100A/100B)

8433bca: fix curent_interrupt stub (thx @a1ex)

67cf458: add missing task related stubs

155d57f: Backout changeset 1914eafc755cad2f2ebb17a4bde35949deb5eacf

1914eaf: fix wrong stub, as suggested

bc6d41d: flexinfo refinement (switch back to COLOR_FG_NONLV)

efad6c5: adopt celsius display and apply color related adjustments

81386c6: use INFO button to disable ML during boot

25c196b: fix indentation

6694d6a: Merge unified

4a394d3: prepare for edmac_raw_slurp

08cfbd1: Merge unified

7f18e89: Merged unified into 100D_merge_fw101

60a2c84: trying to fix the version numbering for the last time ;D
must have been sleeping

48ab54d: fix faulty version numberings

0164b73: cleanup part2

0e58df5: cleanup part1

71e3947: initial ML port for FW1.0.1 -> getting rid of revision handling

d823c4c: Created new branch 100D_merge_fw101

c611472: lua.c: fix warning

fcb4bdb: Lua: only hide the console if it was opened by some auto-running script
(and block the key pressed to hide the console, if any)

56e9f9c: Lua: block keys on key.wait()
hello.lua updated to wait only for SET (and block only this key)

bd156be: Merged unified into lua_fix

372d6b7: menu: fix invalid indexing on menu choices not starting at 0
(reported by JohanJ at )

fe6b020: selftest: fix bad merge

220ecf6: Merged cache-fixes into lua_fix

88bf690: Merged unified into lua_fix

10b2c48: menu: attempt to fix file_man crash (a little hackish...)

a7241cd: file_man: disable name lookup on its submenu
(should fix speed regression in directories with many files - to be tested)

65deab8: api_test.lua: tests for image_prefix and for bracketed images

2846752: Lua: camera.wait()
(waits until the image was fully saved; required for testing dryos.image_prefix)

1e6032c: Lua: renamed dryos.prefix to dryos.image_prefix and fixed various things
- only accept strings of length 4, or empty string to reset to default
- fix operation after multiple changes

8cfce20: menu: fix buffer overflow (off by one) when hiding many menu items

54c6ef0: menu: disable name look-up in Modules and Help

e25caf2: menu: allow disabling name lookup in any menu
(e.g. to allow duplicate names, or for very large menus, or for dynamic menus not meant to be customized etc)

940c7ef: menu: removed some redundant null pointer checks
(no longer needed after enforcing valid names)

27856bb: menu: revert empty name usage in menus
(affected: module.c f071d67, file_man 6390eba, my_menu, advanced toggles)
(todo: fix duplicate menus in some other way)

acb13ec: menu.h: comments for struct menu_entry and struct menu

a0f8604: menu: make sure internal fields are not set before menu_add

82686b9: menu: require valid name for all menus (easier than fixing null pointer errors)

a8f46fa: config.c: fix read from null pointer

9991c8c: Undo e64c9a5 (shutdown lock-up)

ea6d752: Merged memcheck-fixes into lua_fix

fb21080: mem.c: option to disable heap poisoning
(useful when running in QEMU with -d memcheck - with this, overflowing reads will be caught as well)

e64c9a5: menu.c: fix a thread safety issue in menu_remove
(to reproduce: file manager crashed after navigating the menu back and forth a few times)

b4f1593: menu.c: fix incomplete initialization when creating menus
(this time the memory warning was correct)

f738018: menu.h: disabled bit fields in struct menu
(they caused false warnings in the memory checking tool)

16ceccb: Merged memcheck-fixes into lua_fix

00ef896: lens.h: fix APEX for Auto ISO (return 0)

34c6cbd: Merged unified into lua_fix

8cd7485: lens.h: fix bad merge

ad8ae4c: Lua: fix error checking in menu.get (also API test)

b63c905: Lua: unify menu.get and menu.gets (using an optional argument for menu.get)

7d5284a: Merged unified into lua_fix

4eb37a4: Lua: menu.gets (to get menu value as string)
api_test.lua updated as well

02e0675: menu: fix thread safety for menu_get_str_value_from_script

5191bba: api_test.lua: test for menu automation API (selecting existing ML menus, changing values)

fc3da30: menu: misc fixes on select_menu_by_name
(thread safety; fix conflict with initial menu selection; refuse to operate on submenus)

50f4074: Lua: split menu open/select functionality

152e7ec: Menu: reworked menu_set_str_value_from_script (for Lua menu.set with string value argument)
- consider .choices array before trying brute-force
- try every single value from the valid range when practical
- use msleep only for custom toggle logic
- wait and retry if the value doesn't change
- fix some ambiguous matches (e.g. 1 should not match 1m10s, but 10 is OK for 10cm)
- numeric match made optional
- timeout 2s

19ea3d4: Menu: range checking for menu_set_value_from_script (Lua menu.set with integer value argument)

1bac4fd: Menu: fix duplicate warning on 50D

bc10355: Screenshots: fix color palette
(was affected by our palette changes, e.g. in menu)
(the fix requires writing to Canon's LCD_Palette array, but a quick checked is performed before writing; previously, this array was considered read-only)

f7eebcf: Lua: fix typo that prevented lens.focus_pos from appearing in the documentation

313e71d: Lua: minor doc updates

c4b723d: Lua: tag all backend messages with [SCRIPT.LUA] where possible

7eae4b4: recdelay.lua: misc fixes

49607a9: Lua: disable auto-autorun (any script that should autorun must be configured manually by user)

b629043: Lua: test script for unloading behavior (unload.lua)

670aa81: Lua: tag all backend messages with [Lua]; minor fine-tunings

9b6ed8f: Lua: allow task unloading if all user tasks are stopped before the main task
(this makes api_test.lua a "simple" script, as it was before f249ba4)

fee0ea8: Fix compiling on cameras without Q button
(broken in 459da11)

89afbc9: selftest: fix false warning in half-shutter test

cdf3baf: Memory backend: allow breaking minimum_free_space limit for small blocks
(it was possible to fail the allocation for very small blocks that could not be covered by shoot_malloc)

2a969f7: Modules: yet another attempt at fixing fast scrollwheel events
(previous: b0891f9, 2cc2768)

ebe4504: Undo 2cc2768 (fast scrollwheel events no longer working)

521eedf: api_test.lua: stronger half-shutter test; fine-tuned delays

08f75d2: api_test.lua: fix movie test on manual lenses

52fd414: api_test.lua: fix bulb test on slow SD cameras

9afd356: api_test.lua: fix AF test on manual lenses

163677f: lua_key: re-enabled yielding during key.wait()
using the same workaround as task.yield()

5bfb3da: Merged dynamic-my-menu into lua_fix (solves some menu issues)

79359e1: Lua lens.autofocus(): fix for 100D (to be tested)
Updated selftest module as well.

7ac0538: lua_key: disabled yielding during key.wait()
(until a proper fix is implemented, better avoid multitasking)

634bd20: lua_task: workaround to prevent troublesome task.yield() calls
(appears to work, but cannot guarantee it's actually thread-safe)

d5b3449: api_test.lua: weaker multitasking test
(seems to work fine as long as only one task calls task.yield(); any task that interrupts should run until returns)

17a8ea8: Merged focus into lua_fix (pull request #748)
Focus backend updates and lens.focus_pos fine position counter

0188f12: lens_focus: ported 5D2 focus fix on 50D and 500D.
550D and newer models don't need it, unsure about 7D (to be tested)

55b1c8a: lvinfo: fix layout bug revealed by 56464bc and noticed here:
(note: the linked commit did not cause the bug; it was there for years)

c90f908: Menu: fix duplicate warning in the Help tab on some models

39d3fc8: Menu: updated navigation help

6365706: file_man: refactored action types with enum and case switch
(compiler now checks whether all action types are covered)

6390eba: file_man: use unnamed menu entries for speed
(named entries are now checked for duplicates => slow in folders with many files)

91872a8: Menu: some extra sanity checks during customization

cc093ed: Menu: removed duplicate definitions of menu_open_submenu

f071d67: Modules: fix duplicate menu warning

718a1c0: Menu: check for duplicate entries
(the check is repeated after each menu_add call)

7fdf55e: Menu: refactored most menu iterations with for loops

94b91f8: Menu: autodetect whether placeholders are needed or not
(removed menu_add_base; menu_add should be O(n) if no placeholders are used)

7199feb: Menu: skip placeholders in entry_find_by_name; related cleanups

2c79b4e: Menu: link each submenu entry with its parent entry
(rather than using name lookup)

df8f241: Merged lua_fix into dynamic-my-menu
(other menu fixes + module API version)

d13be56: Menu: fix selection in Modified menu (broken in 0b6fcbc)

6acce6d: lua_lens: minor doc update (return value for lens_focus)

b578684: Menu: minor display fixes in Junkie mode

0c04d37: Menu: fix some interferences between menu customization and dynamic menus

b861cff: Menu: experiment - dynamic Junkie menu
FIXME: manual Junkie customizations are overriden, unless at least one item is starred. Important?

a50ab42: force_liveview: fix operation after taking a picture

e0b77f0: Menu: fix last entry not disappearing from Modified menu

946b781: Menu: fix initial selection when it is a dynamic menu

ab12376: Menu: experiment - dynamic My Menu ("Recent"), based on usage counters
If no menu items are manually starred, a menu named Recent will be built automatically.

ad11d90: Menu: minor refactor (checking dynamic menus)

a1a4d46: Menu: usage counters (for displaying a menu with recently used entries)
Warning: existing menu customizations will be lost.

fcd2472: lua_movie: some more preconditions + API tests

f249ba4: api_test.lua: simple multitasking test (crashes, do not run on expensive cameras!)

ef27044: Lua task.create: throw error on failure

34f4587: Lua lens.focus: throw an error if preconditions (LiveView and autofocus) are not met

8bfeb2f: lens_focus: allow running right after taking a picture (experiment)

a02213b: Lua lens.focus: updated default wait and docs

7563c91: enter_play_mode: increase delay (fixes some redraw issues, e.g. in benchmarks)

bd82344: Lua: nicer behavior in Junkie menu (still not perfect)

8ad0912: Modules: increase max count to 64

2ef8fcc: fine-tuned AF test

8358912: Fix Q button handling on cameras with this button (bad includes)

3b2ee5c: Fix button handling outside menu (typo)

43c863b: lens_focus: fix very slow follow focus on 5D2 with 24/2.8 STM (todo: 50D, 500D, others?)
To reproduce: Step Wait ON, Step Delay <= 20, then use follow focus.
Just changing prop_request_change_wait into prop_request_change would give fast movements, but crashes very quickly.
Waiting for the pfAfComplete interrupt before next focus command appears to fix the crashes.

459da11: GUI: make sure all cameras use the BGMT_Q event while in ML menu, even if they don't actually have a Q button
(should fix Lua scripts using the Q button while running on top of ML menu)

d4c3011: Lua: fix incomplete commit 8191fd4

8dc4e8d: lua_lv: lvinfo items default to any info bar

d433e6b: lua_menu: reorder functions so the most basic ones appear first in doc

4e96ecf: lua_menu: drop menu customization attributes
(overriding them doesn't work well anyway)

3db7b16: Lua: more doc updates (WIP)

2f5b1ac: lens.c: some debug info for focus commands (to be removed before merging)

c9f0c8b: lens.h: declared lens_info.focus_pos on remaining cameras
(tested on 5D3 123; to be tested on EOS M, 6D...)

fdcad26: Merged lua_fix into focus

9971e65: Lua: misc doc updates (WIP)

6aba116: lua_constants: reordered to get the simpler ones first in the doc

0fb9f5a: Lua: remove pre_shoot/post_shoot from docs (not yet implemented)

f7de7e8: menu.c, select_menu_by_name: allow optional entry_name parameter; keep the current selection on error

2d36ec7: copy2m.lua: add its menu in the script submenu, rather than Prefs
(fixes duplicate menu - there were 2 menus with the same name)

8191fd4: Lua: always open script submenu on SET; show menus created by script under the script menu

0b6fcbc: menu.c: fix null pointer in mod_menu_rebuild

6404620: menu.c, entry_find_by_name: do not return duplicate entries and entries from dynamic menus (to be tested)

4708e20: test for autofocus routines

4e0a85e: Lua: camera.shoot() no longer autofocuses by default

5ebe181: Lua: removed global shoot(); use camera.shoot() instead

d1f749a: api_test.lua: minor typo

a13ca46: lens_take_picture: wait for file number to change before returning; minor cleanups

b3a7308: Lua lens.focus: delay default to 10ms when wait=false; doc updates

58e688f: force_liveview: make sure LV is fully started before returning

047f568: Lua: experimental lens.autofocus()

2b94762: Lua: fine-tuned startup messages

35aba13: Merged unified into lua_fix

e8c035d: Modules: allow including module.h in multiple source files
(fixes compilation of

f772215: Modules: removed some unused definitions

f20190b: api_test.lua: fix typo in lens.focus call, thanks garry23

bf498ec: Lua: can optionally select a given menu or submenu

5d168ad: 1100D: enabled CONFIG_EDMAC_MEMCPY

f02a19a: rbf_font: very rough support for tab characters

9f71744: editor.lua: exit file dialog if menu is no longer active

7441ca3: Lua: allow editing any script from context menu using editor.lua (Q -> Edit Script)

a623d86: Lua: basic support for script arguments (arg, ...)

4e41a09: Lua: always use first line as script name in menu (use ... if too long)

1c6bc09: Lua: display script file name on the right if the script is not running

0e3b6a1: Lua: fine-tuned user feedback when loading/running scripts

afddfd1: Lua: check string length in pixels when choosing between script name (first line) or script filename for menu display

3f12210: Merged unified into lua_fix

203fa8d: menu: fix regression about font bg color

5647189: Raw backend: small fixes related to ALLOCATE_RAW_LV_BUFFER
- thread safety
- alocate uncacheable large buffer
- compiler error on missing DEFAULT_RAW_BUFFER or RAW_LV_BUFFER_ALLOC_SIZE

97284f1: Merged raw_fixes into allocate-raw-lv-buffer

b814744: Merged unified into allocate-raw-lv-buffer

3781fb5: bfnt_draw_char: option for not erasing the background (old behavior, to fix existing code)

80ba00c: bmp_printf: erase background when using FONT_CANON (to be tested)

56464bc: bmp_printf: allow transparent text on transparent background
(note: this breaks binary compatibility with modules)

48850d5: Focus backend: fix lens getting stuck at one end (reset retry count after reporting error)

498fdbf: api_test.lua: minor fix for focus distance

373c762: Focus backend: only report focus error when the lens gets stuck (doesn't move at all after 2 retries)

c7c6aae: Lua: exposed lens_info.focus_pos as lens.focus_pos and added an API test

5bb5635: Merged lua_fix into focus

d8a2092: lens.c: record relative focus motor position in lens_info.focus_pos,

66c9dd8: lens.c: removed EOSM-specific code that appears superfluous; are focus ring triggers still working?

4e6b487: fio-ml: fix Lua const char warnings in FIO_Rename/Copy/MoveFile

aa9a26d: api_test.lua: minor cleanups

3a20351: Lua: dryos.rename (including API tests)

984c36f: Lua: ignore unknown button codes

b774e11: api_test.lua: relax half-shutter check a bit (the event is not sent right away)

b627ebf: Lua: reserve 256K for umm_malloc instead of 512K (since we no longer load all scripts at once)

2e5d9bb: Merged in lua_umm_malloc (pull request #724)
Use umm_malloc for Lua to reduce memory fragmentation

096f352: Close branch lua_umm_malloc

a68eafa: Lua: removed run_in_separate_task

ea4dd9b: Lua: menu item to show/hide the console

3aecd23: Lua: show last script error in menu (to be tested)

981090d: Lua: fix memory/semaphore leak when running the same script many times

763e015: Lua: hide "Run script" for complex scripts, since they can't be started twice

685a3b3: Lua: show errors in menu for complex scripts as well

1451793: Lua: refactored error handling in add_script

25e3d85: Lua: fix script loading loop (forgot FIO_FindClose)

ea8cfb1: scrnshot.lua: place menu item in its own script submenu

7ae6bf7: Lua: extract script name and description from comments (experiment)

ab924bd: Lua: allow any script to autorun; use a submenu for each script

9008e5f: Lua: show scripts right away after loading the autorun ones (no more delay)

cfb7523: Lua: cleanup passing script to lua_user_load_task

0fbf95c: api_test.lua: converted to simple script, so it runs right away

ffe8d0f: pong.lua: fix undeclared counter

95724a3: Lua: fix strict.lua after script unloading changes

dcebad9: Lua: fix some scripts randomly showing "error" state (refactored malloc/memset with calloc in lua.c)

56bd66d: mem.h: declared calloc

bd3cb5a: posix.c: fix calloc (error checking)

7681f46: Lua: moved the "extra" scripts back (since the scripts are no longer loaded by default)

514d5b4: Modules: workaround for issue #2551 (UNPRESS_UDLR conflicting with UNPRESS_DP on 5D3)

fc8acc0: lua scripting: update docs

3bbeede: lua scripting: some cleanups to the script menu display and help

aa8ec45: lua scripting: script unloading and autorun options
user can disable autorun
scripts don't autorun until user runs them the first time
"simple" scripts (no menus or events) don't autorun, only run on demand and unload when finished
script menu now lists all available scripts, "simple" scripts can be run from here, "complex" scripts can have autorun disabled/enabled from here
TODO: update docs
TODO: the 'extra' directory is probably no longer needed

f7b08a2: lua scripting: fix interval.running return type (should be boolean)

eaf83eb: Lua: make sure umm_malloc is never used for fio calls

8fa20bc: Lua: fix format_memory_size in ml-lua-shim.c

24d49e5: Lua: also print the amount of memory reallocated with core routines

5a127a1: Lua: use umm_malloc, with a 512KB heap preallocated

f6e708a: Imported umm_malloc 8b9586c from

28372a8: api_test.lua: tests for half-shutter events

8dc99bb: module_send_keypress: special handling for shutter button events
(should fix and similar calls in Lua)

af77cad: SW1/SW2: wait for confirmation from Canon code (to be tested)

6b65461: api_test.lua: tests for camera.shoot, burst and bulb

ab649ff: Lua: fix camera.bulb(seconds)

836f324: Lua: added camera.burst(num_pictures)

269fd5f: Lua: camera.shoot() now calls take_a_pic (warning: syntax changed)

f3228c8: shoot.h: exposed take_a_pic and take_fast_pictures

8cbb6ad: menu: experiment - long-press SET to open submenus (enabled on EOS M, where SET/Q share the same button)

ea44aac: menu: fine-tuned responsiveness on keys checked for long press (joystick center, down/erase on EOS M)


a1cac48: memory backend: reduce memcheck area (should reduce overhead a bit)

6957c1c: memory backend: ignore null pointers passed to free (Lua does that)

d885a1b: realloc: check for null pointers

e9580ab: pong.lua: fix menu not always erased (race condition)

3316f91: exmem: when autodetecting available memory, print all srm/shoot memory blocks to console


1a2a91e: Update CONFIG_EDMAC_RAW_SLURP documentation with porting tips

21fae78: EXPERIMENTAL: 1100D raw LV support using CONFIG_EDMAC_RAW_SLURP and ML-allocated buffer

26d12c6: Fix typo in macro names

6348f69: raw.c : Allow the backend to allocate a buffer for RAW lv if CONFIG_EDMAC_RAW_SLURP and CONFIG_BROKEN_RAW_LV_BUFFER are defined
Also try to detect possible misconfigurations at compile-time



  1. Make sure you are running Canon firmware 1.1.2.
  2. Format the card from the camera.
  3. Copy ML files on the card and run Firmware Update.
  4. After installation, copy your ROM files (ML/LOGS on the card) to a safe place.


From camera:
  1. Run Firmware Update from your ML card.
  2. Follow the on-screen instructions.
From one card:
  • Canon menu: Format card, remove Magic Lantern.
  • Never delete the Magic Lantern files from the card! Format the card instead.
Detailed instructions on the wiki.

Known issues

Camera doesn't boot?

  1. Remove battery, remove card.
  2. Put battery back, close card and battery covers.
  3. Start the camera without card.
    • » Did it work? Format the card, reinstall Magic Lantern.
    • » Still not working? Double-check battery and card doors, run the diagnostic tools and get in touch with us.

Troubleshooting tips

  • If your camera locks up, remove the battery and reboot.
  • Make sure you have a backup card without Magic Lantern on it (just in case).
  • To restore ML defaults: Prefs → Config files.
  • To see what settings you have changed from ML defaults: Modified (Δ) menu.
  • To disable Magic Lantern temporarily: press and hold SET at startup.

Older Builds (hide) (hide details)

3a56c1b: Merged new_dryos_task_hooks into 70D_merge_fw112

ba97711: Merged qemu into new_dryos_task_hooks

d6d9373: fix QEMU_DIR once more

f0f54d3: fix QEMU_DIR

90f702c: Menu: hack to allow browsing ML menu on EOSM and EOSM2
(requires CONFIG_QEMU=y)

c9e8864: Merged makefile-updates into qemu
(also updated README regarding "make install_qemu" on modules)

c5400ab: QEMU: moved default installation directory to qemu-eos
Rationale: user is likely to have another qemu directory, unrelated to ML (such as the vanilla qemu repo)
Can be changed by setting QEMU_DIR, e.g. "export QEMU_DIR=qemu" before running will install QEMU in the old path
To be thoroughly tested.

f331c27: Makefile: moved default QEMU directory to qemu-eos

dd1e602: QEMU: trim HTML logs to 10000 lines if higher
(very slow to render; also, at these sizes, browsing/grepping plain text is way faster)

755c166: Makefile: also updated QEMU_INSTALLED_DBI_DIR to use QEMU_PATH

fe7bb16: Makefile: fix copy/paste error

60d8eb2: Makefile: fix cleaning up after "make zip"; removed warning

b764804: Makefile: allow changing QEMU installation directory from Makefile.user and/or the environment

7293343: Makefile: zip and install_qemu targets for modules

f55f334: Makefile: always clean after running install_check

263f93e: Makefile: always rebuild version.o

9933b60: Makefile: prevent install_check from running in parallel with building regular ML
(conflicts while compiling from the same sources - )

a96d082: GDB scripts: logging hook for prop_deliver

da3ede4: GDB scripts: logging hooks for CreateStateObject
useful to find all state objects created during the emulation

41e3fda: QEMU installer: fine-tuned prompt when reinstalling

0ee9487: QEMU: fix Q button handling on 550D, 600D, 1100D (to be tested)

ad4f694: QEMU readme: table of contents; minor typos

067abb6: QEMU readme: GPIO section update

52e6389: 6D: fix task_max

7800ecf: updated to decode lens firmware updates (*.lfu)

a9e3bc2: QEMU readme: misc updates (formatting, rephrasing); GPIO section

ed7f831: QEMU installer: make it clear the script expects user input when it's asking whether to compile QEMU

be21c3c: eject removes the disk image completely while unmount doesn't remove the disk image from /dev.

8c50f2b: reworked description of the peripherals

b0d934a: QEMU install: fix mistakes

7649bac: QEMU readme: typos, formatting

a86704f: QEMU readme: note for Bitbucket not always rendering the RST
(reloading the page usually works; apparently it doesn't need javascript, so what's going on?)

9ffd65b: QEMU readme: some basic concepts related to how the DIGIC hardware works
(some parts adapted from )

6b6d0da: QEMU readme: misc notes
- tip to save SD images as qcow2 (they take less disk space)
- instrumentation tools
- history updates
- minor formatting fixes

d8a162f: QEMU: use 600D MPU messages for 1300D
fixes toggling drive mode,

f12001a: GDB scripts: hide warnings about undefined task addresses when running with patches.gdb
(when running with debugmsg.gdb, full context info is printed)

6f70c85: GDB scripts: fix address in log_result
(LR is no longer valid, as we are no longer at the beginning of a function call)

7c7c472: QEMU recent git no longer accepts empty identities

d4cefff: QEMU scripts: removed hardcoded references to ../magic-lantern
and documented how the directories can be customized

ecde6a5: QEMU readme: documented directory structure

c4b3c68: QEMU logging: cleaned up hacks around memory logging options
(logging tools may require any memory logging backends, but in the logs, only those items specifically requested by user will be printed)

ae1cdc1: hide osascript messages on Mac
(when trying to bring the QEMU window in foreground, but there isn't any)

3070976: QEMU install: keep the 64-bit gdb warning prompt on Mac and WSL (to be tested)

19f5eb6: QEMU install: attempt to fix warnings about 64-bit gdb on Mac and WSL (to be tested)
the script should print warnings about them, but accept them as valid

ded8f42: QEMU install: fix path issue after compilation

89a679e: QEMU install: fix warning about lsb_release on Mac or other systems without it

f7c4d0a: QEMU install: attempt to fix warnings about 64-bit GDB on Mac (to be tested)

8e06a0e: QEMU install: fine-tuned QEMU compilation, to be tested
(error handling, display the next steps after compilation finished)

972d3eb: QEMU install: on WSL and Mac, try the latest 64-bit toolchain (to be tested)
Linux installation still uses the 32-bit one (older version)
TODO: attempt to compile a 32-bit GDB for Mac
Reworded warnings, as a 32-bit GDB is now only needed for development;
it's no longer mandatory for running the examples, since

7b014d2: QEMU: simplified SFDMA mapping by removing model-specific redirection
(they are fairly consistent across all models)

445254a: QEMU tests: 40D call trace still not fully deterministic (CF uses some status polling, not just DMA)
re-applying workaround (only check the "basic" call trace, without function arguments and extra info)

6abd0a4: QEMU: documented SD detect registers on recent DIGIC 5 models

9851807: QEMU: refactored CFDMA/UartDMA handling to remove model-specific redirections
enabled UartDMA on all models (including VxWorks), but it's not working yet
70D: IFE DMA handling moved from SDDMA to CFDMA (minor, no noticeable side effects other than breaking the tests)

805384d: QEMU: fix 5D3 CF emulation
(disabled by default; can be enabled from mpu_spells/5D3.h)

27ed39b: QEMU: documented property groups ("complex" MPU messages)
including GDB logging hooks to find them

400b47a: QEMU tests: relaxed shutdown checks
(some false positives caused by non-deterministic emulation)
(note: menu tests are executed non-determinstically, unlike the call trace, so each run is different)

b7ddc01: QEMU: attempt to get deterministic execution on CF models when using -icount
operations are slowed down to avoid timing variations
default behavior (without -icount) is not affected
on main firmware, the call/return trace test is now deterministic on all models!
fixme: CF emulation in PIO mode is still non-deterministic

9f0813a: GDB scripts: generic logging hooks

54c74ec: QEMU readme: example of identifying the location of an assertion using gdb and -d callstack; minor updates

8fa259b: QEMU: updated 750D/760D GDB scripts and tests; file I/O works!
(using 750D SFDATA.BIN)

979316f: Merged in t3r4n/magic-lantern/qemu (pull request #894)

569968e: QEMU: fix some MPU spells
(typos caught by automated checking)

487260c: Added the serial flash line for 750D and 760D into model_list. See

364db8e: QEMU readme: minor link updates

8fa748b: QEMU readme: moved developer and reverse engineering notes to a new file
(reason: bitbucket seems to have trouble rendering large files)

7337880: QEMU readme, GDB scripts: info on debugging symbols; more symbol-file choices in comments
(depending on what you are debugging - regular ML, reboot shim or Canon firmware)

f037cd0: QEMU readme, GDB scripts: recommend '-ex quit' after patches.gdb, but not after debugmsg.gdb
reason: when running with patches.gdb, you may not want to type "quit" after stopping the emulation
however, this trick removes the ability to use interactive breakpoints in GDB (it would quit as soon as reaching one), so don't recommend it for debugmsg.gdb

3886414: QEMU readme: fix typos; minor updates

96f61d9: QEMU: fix serial flash DMA on DIGIC 6 (tested on 80D, 5D4 and 750D with PR #894);
refactored serial flash to use its own DMA (not shared with SD)

253c364: QEMU: updated 80D test results for actual serial flash contents

af745f0: QEMU readme: formatting

3e4b069: QEMU readme: GDB scripting examples, including callstack

b725d64: QEMU readme: use em-dashes instead of simple dashes

14755cb: QEMU: changed I/O logging behavior
- "-d io" implies "-d nochain -singlestep" (this prints correct PC values, but emulation is slower)
- "-d io_quick" to get the old behavior (faster, with incorrect PC values)
- "-d io_log" to print mmio_log entries for dm-spy-experiments
- "-d nochain" always implies "-singlestep" (easier to enable this mode on other kind of logs that may need it)
- updated README

0bfec8d: QEMU readme: moved the "Incorrect firmware version" section to Hacking
(it's no longer an issue for regular users)

be5a69a: QEMU readme: started to document the steps needed to emulate Canon GUI

0641d77: QEMU readme: minor updates, corrections

aa8cd0d: QEMU tests: updated after changing the SD image
- format screenshots slightly different at free space (before only)
- call/return traces are also different (different layout on the SD image)

53cba30: QEMU: updated sd.img.xz with latest portable display test
(main change: fix identification of firmware version - 7889972)

08d2e81: GDB scripts: fix assert handling on EOS M10

1eedbfb: QEMU: moved 7D2 patches to GDB scripts;
initial GDB script for 7D2 slave

74a881d: QEMU: defined FPGA memory regions for 5D2 and 50D
(just to prevent some warnings; nothing changed in functionality)

93a3941: QEMU tests: run all cleanups on CTRL-C
(stop all background tasks, make sure QEMU is no longer running, remove temporary files...)

06bfaad: QEMU: enabled serial flash emulation on 5D4
(emulation on main firmware doesn't go that far, but can be tested from bootloader menu)

893e226: QEMU: refactored serial flash CS handling to reduce duplicate code
(moved CS register and tested value to model_list.c)

545a63e: QEMU tests: reworked menu tests (including format)
- use vncexpect whenever the md5 of the next screen is known (reduces timing sensitivity and also faster overall)
- no more wait hacks required for format tests
- use a single vncdotool command whenever possible (faster)
- removed duplicate code (function for sending a menu sequence)
- fine-tuned progress indicator

bda26e9: MPU spells: allow changing various Canon properties that require confirmation from the MPU:
ISO, shutter, aperture, EC, FEC, metering, drive, AF mode, picture style, WB, ExpSim, ALO, HTP, MLU
all but WB were broken if changed from ML menu/scripts; they are working now (fixme: not included in tests)
some of them were working from Canon UI before this patch (picture style, WB, ExpSim, metering and drive mode)
WB was working before, but uses confirmation in logs; updated for consistency
could not test on: 5D2, 40D, 50D, 550D, 650D, 700D, EOSM2
not working: EOSM (breaks previous tests => disabled)

09403d4: QEMU: experimental mode dial emulation
works on most models to some extent, except 40D, could not test on 550D, 650D, 70D, EOSM2

f3f3d2d: MPU spells: comment out possible mode switches
not required for the GUI, but will interfere later with the mode switching feature
affected models: 6D (call/return trace changed), 70D, 700D (no side effects noticed)

060a1f0: Merged in t3r4n/magic-lantern/qemu_installer (pull request #893)
Further automation in install script to compile directly at the end.

bb9193e: QEMU: more MPU properties identified by brute-forcing

ecf616f: QEMU: formatting fixes in / known_spells.h

2149521: QEMU: added property IDs to known MPU spells
also alternate names as comments

e0a4e87: QEMU: identified more MPU spells, corrected a few others
- experimentally (playing around in menus)
- brute-forcing MPU messages to identify properties
- cross-checked names and IDs in startup logs and ROM strings
- still, it's impossible not to find a few incorrect ones

1699165: QEMU: experiment - brute-force MPU messages to find out their meaning

af43d85: GDB scripts: hooks for logging properties (prop_request_change, MPU property functions)
(example for 5D3.113 and 550D.109; useful for identifying properties)

3c3ebba: qemu-util: fix compilation in bootloader context;
sample boot messages in reboot.c, e.g. printing firmware signature or RESTARTSTART address
(only present in the output binary when compiling with CONFIG_QEMU=y)

c33141c: GDB scripts: disable serial flash version check patch on EOS M2
not really needed (the error message seems harmless and doesn't prevent GUI emulation)
but changed ML firmware signature checking
and won't be needed after getting a serial flash dump from a real camera anyway

eed976e: QEMU further Ubuntu/WSL cleanups (minor)

351a3ad: QEMU fine-tuned messages and date format when renaming an older installation

3c0b723: Merged in t3r4n/magic-lantern/qemu_install_improvement (pull request #892)
Option to rename or delete existing QEMU directory during installation

0a7e1da: QEMU WSL fixes
- checking for Ubuntu (uname -a does not report Ubuntu)
- hide 32-bit toolchain options

eeacf80: Mac fixes
- use is_mounted (lsof checks are enough)
- typo in osascript when trying to bring QEMU window to front

54c02f6: fine-tuned checking of whether SD/CF image is in use
- use lsof to detect whether another process opened the SD/CF image for writing
- only allow multiple instances of QEMU if using -snapshot (read-only access to SD/CF image)
- check all results returned by losetup (note: lsof does not show whether the image is mounted)
- use alternate methods (grepping mount output) if losetup is not available
- to be tested/refined on Mac and Windows 10 WSL

44bce28: QEMU: RTC workaround to bring back 400D GUI
(broken in 0d654a0, not covered by tests as it's very slow)

0bdb061: QEMU: 40D GUI working!
- MPU RX register was read 8 bits at a time (other models so far used 16-bit reads)
- using 50D MPU spells
- button codes found with, from existing ML port
- HotPlug: external monitor, USB, Toe, erase switch
- CFDMA: new channel, protocol tweaks, enabled interrupts
- Powersave workaround (GUI locked up after some seconds of inactivity, similar to 1300D)

ff562b6: QEMU: fix USB CONNECT on 450D/1000D
(incidentally, this also fixes the card format dialog on these cameras - likely UILock issue)

7f1a436: QEMU: 1300D GUI works!
- this camera uses a different DryOS timer (totally unexpected!)
- removed JPCORE patch (firmware expects this to be initialized properly)
- generic MPU spells; button codes from 1100D
- powersave workaround (without it, GUI would lock up after a few seconds of inactivity)
- no patches required!

351f6de: QEMU: cleaned up serial flash handling on models that don't use one
previously, they were called on unrelated SIO/SDIO channels, with little or no side effects,
other than breaking a few function call trace tests

5137e76: QEMU: updated 80D tests for 1.0.2; DCIM test also works!

b6c5710: QEMU: 80D file I/O support from main firmware
(experimental, tested with "dumpf" in the serial console)

4e1b65e: QEMU: enable card support on generic MPU spells
(experimental, some models work better than others)

7ea57e7: GDB scripts: some experimental 80D patches, to be fixed in the emulation

17b0443: GDB scripts: log state object transitions
(stubs for 550D and 80D)

ec28012: GDB scripts: 80D logging hooks for semaphores and message queues
(disabled by default; also updated assert_log for 1.0.2)

04c809c: QEMU: RomRead DMA is actually XDMAC
(up to 4 channels; 80D only uses 2)

0d25b8e: QEMU: experimental MPU support for 80D, 750D and 760D
seems to work with generic spells - at least the emulation goes further
also minor refactoring / comments on MPU registers for earlier models
also enabled for 5D4 just to avoid a crash - emulation doesn't reach mpu_send yet, but it calls InitializeIntercom

381a309: QEMU tests: do not start if compilation fails
(small nitpick that could result in false test results)

7abb5ba: QEMU: updated tests after b75e1342711a
(context info is now correctly printed when returning from msg_queue_receive, take_semaphore etc)

391ba33: QEMU: generic MPU spells compatible with most EOS models (experimental)

b75e134: QEMU logging: fix losing track of called functions when DryOS tasks are switched outside interrupts
see the assertion error on 5D4 callstack consistency test (after 442b691)
to be tested; there was a similar error was on 80D, non-deterministic
(encountered when running with -d debugmsg,callstack,tail with all patches enabled)

2c5f303: QEMU: MPU status doesn't seem to matter much; simplified to prepare for DIGIC 6 compatibility
todo: cross-check with actual hardware

5154ad0: QEMU: shared memory initialization for DIGIC 6 (MEMDIV messages)
to try: SHM_SHOW_INFO / SHM_SHOW_DIST_INFO on serial console (only 80D, 750D and 760D reach this far)
( sleep 3; echo "akashimorino";
sleep 1; echo "SHM_SHOW_INFO";
sleep 1; echo "SHM_SHOW_DIST_INFO";
) | ./ 80D -serial stdio

26d2dc2: QEMU: refactored serial flash SIO handler with io_log

6774de5: QEMU: refactored serial flash connections to avoid hardcoding camera model names
fixme: D3 models and 1300D still hardwired to serial flash handlers to pass the tests

6521336: QEMU: experimental serial flash support for 80D
using SFDATA.BIN from 70D, patched at 0x10004 from 09 8B C1 20 to 00 00 01 20
meaning: size of 70D's property block at 0x10000 is 0x12BC98 (data is shifted by 4 bytes)
but 80D expects a maximum size of 0x12000 in FE47BF40 ("Liar Valid Packages!!" if the size check fails)
so we trim the property block at the expected size of 0x12000
this will lose a few properties, but at least the emulation goes further (no SF dumper for D6 yet)
other 8MB SFDATA.BIN patched in the same way should also work (700D, 650D, EOSM, 6D),
but their data block at 0x10000 is larger, so more properties will be probably lost (not tested)

442b691: QEMU: RomRead DMA for DIGIC 6, used for initializing property blocks
(very similar to regular DMA, slightly different register offsets)

44c8b3c: QEMU: slow down UART input to work around race conditions
(not exactly clean, but at least DryShell tests are now passing on all models)

b972984: QEMU: fixed UART on DIGIC 6 (DryShell works!)
fixme: tests are failing, but typing on the UI works fine
note: DIGIC 4/5 emulation changed a bit (0xC0270000 was misinterpreted before)

2b0b39a: QEMU: found out why DIGIC 6 models were getting stuck at startup!
The firmware was reading the memory layout from CP15 registers;
most of them were emulated well in QEMU, except ATCM and BTCM, which were implemented as NOP.
They are still NOP in current QEMU git.
Patching the memory regions loop is no longer required!
(keeping empty 80D patch for future use)

46f2e6e: MPU spells: some names could not be identified (fixed)

d01f900: QEMU tests: call rather than duplicating its work
(fixes some tests failing if mtools is configured to use lowercase by default)

741aec2: on Mac, bring QEMU window to foreground
(by default, the window is opened behind the terminal, so one may not even notice it)

e84ed9e: print camera name in QEMU window title

2eea98e: only clear the terminal if running in interactive mode

c47039f: QEMU logging: always log unmapped memory regions

7a9bd49: GDB scripts: fix text alignment with "native" logging options (minor)

b3b129e: QEMU fix null byte warning when parsing model list
(bash 4.4 and newer? )

6e86e2b: QEMU install: print fewer help details after installation; link to the online documentation

1297b50: QEMU readme: formatting, typos

1e4f1a6: QEMU readme: more info regarding custom SD/CF images

dd3e675: QEMU readme: more ways to install ML to the virtual SD/CF images

bc84c85: QEMU readme: note about "make install_qemu" not available in all branches

6fd16a7: QEMU readme: note about models using a serial flash

1ffbae0: QEMU README: minor updates to 050a3cc

61ab0d2: Merged unified into qemu

5788c6e: Merged makefile-updates into qemu

98871fc: Makefile: backout 0b9b550
?= not needed when overriding from command-line, e.g. make CONFIG_QEMU=y

4895777: Merged makefile-updates into qemu

420208d: Mac compatibility fixes

ca07590: QEMU: 5D3 1.2.3 GUI works!
fixme: not covered by tests

481de4e: QEMU: refactored RTC CS
each model now uses its own GPIO, rather than enabling all possible registers on all models
70D call trace test: minor change to 0xC02201F8, no impact on functionality

5caccbb: QEMU: 70D GUI works!
- GDB patch required (SIO locking up DisplayMgr task, probably touch screen not responding)
- RTC (similar to 6D, but on different SIO channel)
- updated tests (menu, format, call trace)
- minor change to 100D call trace test (0xC022005C = 450D RTC CS; no impact on functionality)

1aa1e60: QEMU: 6D GUI works!
- MPU log and serial flash from Audionut,
- RTC (a bit hackish, to be refactored)
- GPIOs for HDMI and WriteProtect
- tests (menu, format, call trace)
- patched MPU spells to avoid an intermittent issue (race condition when setting picture quality?)

4822de4: QEMU: fix typo in MPU spells script (broken in a42e55a)
"Complete WaitID = 0x80020000" should have been commented out
this disables LiveView "emulation" in 700D/650D and fixes ML menu for nightly tests
todo: add a test for this (existing tests did not catch this issue)

a55cb4e: QEMU tests: reordered (important, breaks often and/or very fast == runs earlier)

5cd1788: QEMU tests: run in parallel when it's straightforward to do so (experimental)
not parallelized: tests requiring custom builds or checking card contents afterwards

1536a34: QEMU tests: prepare for parallel execution (3)
- stop each QEMU instance from the monitor socket
- two methods: shutdown (clean DryOS shutdown, for GUI tests) and quit (clean QEMU shutdown without turning off the guest OS, for all other tests)
- check for any stale qemu-system-arm / arm-none-eabi-gdb only after each set of tests

2ffb654: QEMU tests: prepare for parallel execution (2)
- unique QEMU_JOB_ID for each job
- unique GDB port and VNC display, derived from QEMU_JOB_ID

01aa167: QEMU tests: prepare for parallel execution (1)
- allow overriding GDB port for each instance (replaced '-s -S' with '-S -gdb tcp::$GDB_PORT'; gdb receives '-ex "set \$TCP_PORT=$GDB_PORT"')
- allow overriding VNC display for each instance (replaced ':12345' with '$VNC_DISP')
- indentation of qemu/gdb commands

050a3cc: QEMU scripts: rough backend support for parallel execution
- requires manual resource allocation
- QEMU_JOB_ID used as prefix for qemu.monitor (each instance would get its own monitor socket)
- GDB port can be overriden and derived from QEMU_JOB_ID (see README)
- VNC port can be handled in the same way
- README updated

e54bfde: QEMU tests/readme: recent netcat requires -N

a31b6ba: QEMU tests: one more race condition fix

9319429: QEMU tests: speed optimizations
- only restore SD/CF images if they were actually changed
- do not wait for gdb if it's not running
- overhead with no tests running: from ~30 seconds to ~10 seconds

e6350ca: QEMU tests: more race condition fixes

73c25e9: QEMU tests: attempt to fix some race conditions

b39024f: QEMU tests: minor fixes after refactoring

ae395c7: QEMU tests: use -snapshot to prevent changing SD and CF images
(exceptions: tests for ROM dumper and DCIM, where we check card contents to validate the test result)

f6125c9: QEMU tests: allow selecting only specific tests to run (lowercase arguments)
Can be mixed freely with camera models (uppercase arguments)
Default (no arguments): run all tests

ef23b2a: QEMU tests: refactored each test as a bash function
- top-level continue -> return
- moved common preparations to run_test
- each test function uses globals $CAM and $TEST (camera model and test output basename)
- test outputs named $TEST.whatever or $
- generic cleanup after each test
- top-level for loops kept; the loop body calls run_test

695f378: QEMU: make sure mtools prints uppercase filenames by default
(our tests assume this behavior, but some systems have different defaults)

8ceae47: Merged makefile-updates into qemu

cc49f78: QEMU: fix arrow unpress handling on cameras without UDLR (tested on EOSM)

67009e6: QEMU tests: replaced two slow grep commands with sed

9037452: QEMU tests: check call/return trace only until the last function from IDC
(the next 1000 lines can be nondeterministic on digic 6 models)

5be11ba: QEMU tests: refactored matching heuristic for call/return trace on main firmware
(rewritten in Python - much faster)

0eea273: QEMU install: brew docutils needs additional setup; just use the one from pip

824ab8d: removed dependency on realpath
(not available on Mac)

3f97cbe: Makefile: fix compiling tcc

b145d5f: QEMU install: Mac cleanups, to be tested
(xcode-select auto-installed by brew, docutils available as package)

00118b9: Makefile: moved toolchain setup to Makefile.setup
(this allows toolchain to be overridden from Makefile.user)

80119ee: use ESC c to reset the terminal, instead of "tput reset"
("tput reset" may crash when running as background job - bash bug?)

e9d8550: QEMU install: refuse to overwrite an existing installation

8eca12b: QEMU install: only apply the gcc 7.x patch if user actually has gcc 7
also commit the gcc 7.x patch to our local git repo, so it won't affect updates to qemu-2.5.0.patch

5d46a3e: QEMU install: we have gcc-arm-embedded:i386 on the PPA :)

73efb79: Makefile: fixes to allow compiling ML with Linaro arm-eabi-gcc; updated toolchain recommendations

4c0316f: QEMU: patch for building with gcc 7.x

d4d4812: QEMU install: explicit check for Ubuntu (other systems use apt-get, with different package names); explicit "dpkg --add-architecture i386" if any package needs it
(should fix installation on newer Ubuntu - to be tested)

46231df: MPU spells: try to use parameters (ARG0, ARG1 etc) in simple cases
(same-length replies, repeating the arguments in the same position)
(note: PROP_BURST_COUNT doesn't always work well like this)

fbc7402: QEMU: typo when loading raw images for capture emulation

702d21f: MPU spells: identified some lens properties (PROP_LENS and PROP_LENS_NAME)

a42e55a: MPU spells: identify property description for Complete WaitID messages

866e6b2: QEMU: comment out some common MPU spells and use the ones from our headers;
always include the headers in autogenerated spells
always disable sensor cleaning
(some emulation differences in a few models, hopefully non-essential)

89f33ed: MPU spells: identified PROP_BATTERY_CHECK
(verified before dialogs such as card format or firmware update)

c1a3873: QEMU: print names of MPU spells (exported from
and highlight the ones without name or without known behavior

2e56dfb: MPU spells: documented a bunch of properties and updated their indexing
(some trial and error, others copied from )

c679ab2: QEMU: handle INFO unpress event (for 5D3)

301ae81: QEMU: generate valid dark frames if a CR2 isn't available

a3591c8: QEMU: allow full-res 14-bit data from any format readable by dcraw
(usually CR2 and DNG; example in README)

309e498: QEMU: use <%d> for EDMAC connections in debug messages
(e.g. connection <5>, channel #16)

e5eb342: QEMU: moved image processing engine functions to separate file

996d051: make install_qemu: check whether sd.img or cf.img is mounted before copying files

2b91c8c: also print the command-line of arm-none-eabi-gdb, if any
and whether it's running as a background job or not

5421d97: QEMU: updated 600D test to include the info screen
(had to enable it in Canon menu)

501a169: QEMU: disabled sensor cleaning animation on 5D2, 50D, 60D
(interferes with ML menu; updated tests)

6afd543: QEMU: warn user when shutdown is not clean

a3bec4e: QEMU: updated 100D menu test to show all menus (including the FlexiZone AF setting)

73d1573: QEMU: run 100D with FlexiZone AF enabled (this setting results in ML crashing at startup)

b3e509e: QEMU tests: declared cameras able to run the FRSP test at the beginning
(so run_test arguments now apply to this test as well)

1412149: qemu-frsp: updated to operate from PLAY mode
previously, it was operating on the date/time screen;
now all models are starting either with Canon's info screen,
or with display off, or show the sensor cleaning animation

c19d7a4: QEMU install: updated regex for parsing GUI_CAMS from
(to allow multi-line declaration)

bbe51f6: QEMU tests: 100D typo
(old file)

a044bc8: QEMU tests: updated for 5D2/50D without date/time dialog
note: sensor cleaning animation makes the test nondeterministic - do not check these screens

4d945c0: QEMU: 5D2/50D RTC patch from g3gg0
(date/time dialog is history!)

6c493fb: QEMU: updated README

8d9c682: QEMU: enabled PROP_MPU_GPS on all DIGIC 5 models

8914fc4: QEMU: EOS M boots the GUI!
(it also needs the GPS patch - moved to GPS.h)

4b919be: QEMU: updated tests
(after RTC emulation, I2C and patches cleanup)

93e57ce: GDB scripts: date/time patches no longer needed!

baa4496: QEMU: reworked I2C debug messages

26f7275: QEMU: updated MMIO highlighting code
(module name is now highlighted as well - easier to spot)

10a6add: QEMU: moved RTC emulation to its own handler; reworked debug messages

a691c3d: QEMU: enabled RTC emulation for most models
exceptions: 5D2 and 50D appear to use a different chip or method

0d654a0: QEMU: RTC patch from g3gg0
5D3 and 60D no longer show the date/time screen!

b8f8669: QEMU: I2C patch from g3gg0

6433c78: QEMU: figured out why 5D3 was locking up at startup and in certain menus - it was waiting for PROP_MPU_GPS!
(thanks g3gg0)

db3174d: QEMU install: don't install two toolchains if user selects 64-bit GDB

32d5cef: QEMU install: libnewlib-arm-none-eabi is architecture-independent

8a17206: QEMU install: download toolchain from launchpad and use as mirror
( is currently down, hopefully not from our experiments)

0c43b50: QEMU install: make it clear that *you* have to run the PATH command (not the script);
use export (e.g. for shells other than bash) -

b424f9a: QEMU install: 32-bit Mac toolchain doesn't have gdb...

d26bf04: QEMU install: wrong quotes

5e428cc: QEMU install: fix some copy/paste errors

1702004: QEMU install: allow using the current 64-bit toolchain on Ubuntu; minor fixes

d887fd8: QEMU install: more toolchain options (experimental)
- Mac: try the toolchain from (not tested)
- Ubuntu: options to install GCC from Ubuntu repo
- older version, 32-bit or 64/bit
- from gcc-arm-embedded PPA (6.x 64-bit)
- from gcc-arm-embedded (32-bit installed in home directory)
- use the existing installation if possible
- Ubuntu: don't install libfdt-dev (not needed?)
- all: print warnings about 64-bit GDB and allow using it anyway if user says so
- all: check whether arm-none-eabi-gcc can compile a simple program
- all: check whether rst2html or vncdotool are installed outside package manager

1a0c8cc: Merged in kichetof/magic-lantern-1/kichetof/qemu-install-elegant-way-to-install-pack-1506440503741 (pull request #861)
QEMU install: elegant way to install packages on macOS

f4d6f45: QEMU install: remove docutils install for macOS

c94cd8c: QEMU install: elegant way to install packages on macOS
Checks if the package is already installed otherwise install it

75c10ef: QEMU install: on Ubuntu, gdb-arm-none-eabi:i386 and gcc-arm-none-eabi can be installed with the same command
(false alarm; let's also check for correct installation)

36f0c12: QEMU install: pip does not require sudo

6294699: QEMU install: fix for dpkg -l also returning non-installed packages

a393b45: QEMU install: on Ubuntu, gdb-arm-none-eabi:i386 and gcc-arm-none-eabi must not be installed with the same command
(otherwise, we get gcc-arm-none-eabi:i386 which does not include libnewlib-arm-none-eabi...)

5be6b11: QEMU install: pip recommends sudo -H

84e77a5: QEMU install: also set up the toolchain for compiling ML (Ubuntu)

92399e9: QEMU install: typo

983ebed: Makefile: updated toolchain recommendation; minor edits

f19ab52: QEMU install: 64-bit arm-none-eabi-gdb doesn't work (cannot boot 5D3 GUI),
no matter where it comes from (Ubuntu repo or gcc-arm-embedded PPA)...
on 64-bit Ubuntu, gdb-arm-one-eabi:i386 works, but Windows and Mac are out of luck for now

a1b765e: Makefile: attempt to use any arm-none-eabi-gcc from PATH, if already installed (to be tested)
By default, it will attempt to use ~/gcc-arm-none-eabi-5_4-2016q3 if installed.

6c6a7f7: QEMU install: gcc-arm-embedded try #5

c816b19: QEMU install: gcc-arm-embedded try #4

f30c606: QEMU install: gcc-arm-embedded try #3

e0edbf5: QEMU install: gcc-arm-embedded try #2

beaa53c: QEMU install: let's try gcc-arm-embedded from PPA

8b43556: Merged in kichetof/magic-lantern-1/kichetof/qemu-check-if-brew-is-installed-on-macos-1506424463270 (pull request #860)
also included this suggestion:

dccfc07: QEMU: check if brew is installed on macOS

f65820c: Makefile: use gcc 5.4.1 by default (current version from )

a24f36e: QEMU install: more Mac patches (not tested)

a8c0793: QEMU install: also install docutils and vncdotool

1c1402e: QEMU install: verbosity fine-tuning

5c2fbe1: QEMU: minor README updates

b3188ba: QEMU: README formatting

84b2c84: QEMU: README formatting

e22d95a: QEMU: updated install instructions in README

2da1561: QEMU install: arm-none-eabi-gdb requires 32-bit libraries on Ubuntu

2531efc: QEMU: set up arm-none-eabi-gdb from the install script

b266b03: QEMU: auto-install dependencies if running on Ubuntu-based systems (to be tested)

45fa299: QEMU: some Mac patches for install script (not tested)

0926611: QEMU: ggrep patch for Mac from kichetof

756f231: QEMU: supply an email address for git if the default doesn't work

c16b550: QEMU tests: M3 display test, using DISKBOOT.BIN from Ant123
(also test other PowerShot models to see whether they are loading DISKBOOT.BIN from the card)

35113df: QEMU: EOS M3 display support from Ant123 (using a custom CHDK build)

230b85a: QEMU README: Bitbucket doesn't resize the images...

1b96139: QEMU README: let's try some screenshots

0db6b6e: QEMU: more README updates
- shutdown notes (system_powerdown vs quit)
- rewritten QEMU monitor section
- how to bypass the date/time dialog

39eb4b0: QEMU: minor improvements to README

ad0159f: QEMU: README updates
- shutdown and reboot
- running from physical card
- menu navigation (keys)
- misc notes, minor typos

168ba86: QEMU: 1000D GUI works too
(based on 450D)

057f2c6: QEMU: stretch display vertically on VxWorks models
(double all lines to get correct aspect ratio)

0732213: QEMU: emulate JUMP and Direct Print buttons (for VxWorks models)

a075527: Backout 89254290c3f7
(shutdown only works only when not activating Canon menu, with or without this patch)

d2dbd23: QEMU: 450D GUI working!
- updated MPU spells, button codes and parsing scripts
- WriteProtect GPIO
- SET does not send unpress events
- menu navigation working, format locks up
- shutdown working
- updated tests

30c239f: QEMU: print whether available keys are press-only or they also send unpress events

8925429: QEMU: re-created 70D MPU spells; shutdown working

20a176d: QEMU: shutdown working on most models able to start the GUI (all but 70D)

72ed052: minimal targets: removed old references to qemu-util

5a8ad8c: QEMU tests: always stop GDB when QEMU quits

fd35fba: QEMU tests: updated to handle shutdown and reboot
(shutdown test after menu navigation, reboot test when formatting card and restoring ML)

d79e391: QEMU: handle PROP_ABORT (after opening battery door)
fixme: it doesn't shutdown, figure out why

063c3ef: QEMU: handle the powerdown event
(menu: Machine -> Power Down)

6198074: QEMU: experimental shutdown handling (card door and power switch)

8df1b6a: reloc.c: cleaned up ifdef's

698f0de: QEMU: minor README update
(ML menu now working on all models able to boot the GUI)

446db81: QEMU: 1200D doesn't have a dedicated delete button
(use the key codes from 1100D - same as 600D, but without the delete button)

22b4722: QEMU: experimental Av button handling for Rebel cameras
(fixme: has some side effects, such as changing the displayed shutter speed)

779bed7: QEMU: don't auto-repeat keys, except for scrollwheels

eaea104: QEMU: also allow right shift for half-shutter

bfda257: QEMU: handle the FUNC button (for 50D menu navigation)

97b097b: Merged unified into qemu

b5e7123: QEMU: updated 700D to 1.1.5 (GDB scripts and menu tests)

f20dedc: QEMU: README updates

66f4df6: QEMU: initial README draft

2412fbe: Makefile: "make install_qemu" for platform targets;
updated to use it

96bddd8: qemu-util: qprintf requires stdarg.h (when not included from dryos.h)

cf36c61: Makefile: allow using CONFIG_QEMU for modules (qprintf and related functions)

0b9b550: Makefile: allow overriding CONFIG_* options on the command line
e.g. make CONFIG_QEMU=y
(suggestion from g3gg0)

5ce88f3: qemu-util: make the QEMU debugging API header-only

037e8ca: console include qemu-util.h is no longer needed

04e9a75: menu: removed QEMU workaround (no longer needed - GUI mode switch works on most models)

266f08e: QEMU: workaround for invalidating executable code after ROM patches
fixme: this should be handled internally by QEMU; not sure why it isn't
to reproduce: register_interrupt hook on dm-spy-experiments branch, with hooks enabled right after Canon's init task
(the hook will fail on models where this function is in ROM, e.g. 550D, but will succeed if it's in RAM, e.g. 5D3)

10967ec: Raw backend: some more debug messages
(useful for qemu-frsp tests)

fc3f8d7: QEMU tests: reworked FA_CaptureTestImage test:
- enabled debugmsg in the main log; moved UART output to a new file
- run until FA_CaptureTestImage Fin appears in the UART log
- also check models with no display (from the UART log)

1efbe23: qemu-frsp: fix compilation

fb73d4f: Merged unified into qemu

95a1b76: QEMU tests: FA_CaptureTestImage test also working on 50D, 500D, 550D and - without display - on 1100D

cdd4349: qemu-frsp: use CONFIG_QEMU to enable debug messages from raw.c

6ffef9c: qemu-util: removed old experiments
(kept the initial hello world for historical purposes)

249eacf: Raw backend: print to QEMU console if compiled with CONFIG_QEMU=y
(without enabling RAW_DEBUG)

230f796: qemu-frsp: fix compiling on 500D, 5D2 and 50D

180051f: memcheck: check malloc heap in the same way as AllocateMemory (500D only for now)

2a0ae3f: memcheck: option to identify uninitialized memory accesses in main firmware
that could be exploited from bootloader

c50d44a: memcheck: fix operation on DIGIC 6

f2c84b5: memcheck: fix operation without ML memcpy

06334d5: QEMU: tests for memchk, from minimal ML
(not all of them are passing)

15d8d0f: qemu-hptimer: CONFIG_INSTALLER no longer needed

be3254c: 7D: fix minimal targets (no LEDON/LEDOFF on this model though)

c48a6fc: GDB scripts: register_interrupt on all models (with test)

09e9d43: GDB scripts: removed duplicate code between */debugmsg.gdb and */patches.gdb
(if patches.gdb is present, debugmsg.gdb will always include it)
(also moved 1300D patch to separate file)

29bab2b: GDB scripts: disabled slow items by default
(semaphores, message queues, MPU communication, ResLock, EDMAC)

1196a70: GDB scripts: symbol-file commands to get debugging symbols from ML (commented out)
todo: auto-enable when autoexec.bin is executed?

9265538: QEMU: always load camera-specific files from CAM/ or CAM/FW/ (refactored to avoid duplicate code)

262146b: QEMU tests: updated menu test for 70D 1.1.2

059a526: QEMU tests: updated 70D needles (expected results) for 1.1.2

a094e14: QEMU tests: allow camera models as arguments

f53a35a: QEMU: with -d exec, make sure the instructions aren't printed twice

d422843: QEMU tests: very basic Dry-shell test

3f81006: QEMU: experimental UART support in main firmware
(Dry-shell working on all DIGIC 4 and 5 models)

5792b77: QEMU: option to highlight certain MMIO registers
(requires editing the source code)

726806f: QEMU: option to export MMIO reads as dm-spy entries (dm-spy-experiments branch)
this allows cross-checking the values with the ones from actual hardware
- ./ 5D3 [...] -d io,nochain -singlestep
- copy/paste some entries into dm-spy-extra.c (grep for mmio_log to find them)
- get logs from both camera and QEMU (dm-spy-experiments branch, CONFIG_DEBUG_INTERCEPT_STARTUP=y, maybe also CONFIG_QEMU=y)
- adjust the emulation until the logs match

ef9d1d0: QEMU: require verbose (e.g. -d io,int,verbose) to show DryOS timer interrupts and DIGIC timer

6a5929d: QEMU: incomplete 5D3 1.2.3 GUI (boots with black screen, no menus)

feb0949: QEMU logging: option to identify tail function calls (heuristic)

6fa216a: QEMU tests: trimming should work now

22230b6: QEMU tests: trimming must be done on useful lines, not on raw input lines
(otherwise the test will be sensitive to any additional info in the raw log)

84f6013: QEMU tests: call/return trace tests first
(they are more likely to fail or require frequent updates)

665bf5b: QEMU tests: include interrupts in main firmware call/return test
(this allows counting related stats from the filtered log - smaller)

2010fa1: QEMU tests: use ansi2txt only once in the main firmware call/return test (speed optimization)

c3ba92d: QEMU tests: IDC needs trimming as well in order to get deterministic results

47136af: QEMU tests: trim calls-main-basic.idc until matching the "needle" md5
(hopefully this trick will get repeatable results on faster PCs)

8677809: QEMU tests: 5D2 IDC test not deterministic (functions are the same, but comments are not)

4f0863d: QEMU: do not use non-printable task names
(VxWorks: current_task is set before it has a valid name)

ee74ce9: QEMU: backout parts of 8e29c15
large timeout didn't solve the repeatability issue - results are still sensitive to processing speed
some models keep running in a loop, and after 10-20 seconds, they "discover" a new function and so on

8e29c15: QEMU tests: let's try a larger timeout; minor fine-tunings

2d1d5d5: QEMU tests: found a way to get deterministic execution (icount option)
- reworked the call/return trace tests to also run on main firmware (with -icount)
- fixme: CF models do not have deterministic execution, even with -icount
- fromutility tests also enabled on CF models (IDC only)
- "first interrupt" test replaced with full call/return trace on main firmware
- removed "sorted IDC" tests (the regular IDC + call/return trace tests are much stronger)

d2a2f64: script to wait for a string to appear in a log file, with timeout since last update of the log file

45531b1: minor fixes

16db46e: Moved my_fprintf to fio-ml.c (fixes compilation of minimal/qemu-frsp)

ce4e0ea: QEMU logging: always name DebugMsg, even if no symbols are loaded

f2fdf93: QEMU logging: fix loading symbol names on Thumb code

ec061a6: QEMU: fix off by one error when loading ML stub names

d43bf3a: boot-hack: check whether we can reach anything in the ROM with relative jumps

bfa1b22: boot-hack: self-check for ARMLIB_OVERFLOWING_BUFFER

Build Log

fcf8018: Merged new-dryos-task-hooks into 70D_merge_fw112
(enabled CONFIG_NEW_DRYOS_TASK_HOOKS in internals.h; updated task_dispatch_hook comment)

83bb3a3: boot-hack: use CONFIG_NEW_DRYOS_TASK_HOOKS to enable new-style DryOS hooks
(undefining HIJACK_TASK_ADDR was not obvious)

e601292: boot-hack: uninstall cache hacks after booting (to be tested)

96851a9: boot-hack: more debug messages regarding memory allocation

8260b14: boot-hack: fix CONFIG_HELLO_WORLD & friends when booting with HIJACK_CACHE_HACK
(task_dispatch_hook should not be set in this case)

792e194: boot-hack: fix task dispatch hook message missing when booting with HIJACK_CACHE_HACK

be1f5a3: Task hooks: disabled task switch debug messages by default
(too verbose)

a0aedff: 550D, 600D: fix memory allocation (amend 5b4fe18)

0fe3220: 6D: ADTG shutter addresses did not work, trying another set

224843f: 6D: fix ADTG shutter addresses after memory layout change
not tested, just confirmed the new addresses in QEMU
fixme: are these deterministic? under what conditions?

5b4fe18: 550D, 600D: reserve 576K for ML
(640 is a bit too much, 512 is too tight)

0391160: Task hooks: fix task overriding on very old DryOS models
(to be tested on all camera models)

84dd3fd: selftest: check handling of null pointer errors (make sure a crash log is saved)
100D and 70D used to crash in this scenario, rather than saving a log (next few pages)

02c1a68: Merged unified into new-dryos-task-hooks

Build Log

fc57ed8: 70D: enabled Sticky half-shutter (unlikely to cause issues) and Sticky DOF preview (to be tested)

Build Log

d048d84: 70D: AbortEDmac stub

8be782b: Added function for convertion from efic_temp raw units to celsius

Build Log

c0c7efa: Merged unified into 70D_merge_fw112


82126d8: Merged in makefile-updates (pull request #873)
Makefile updates to use any valid ARM toolchain

6cef1ea: Makefile: fix 7D build_fir

52bccf5: Makefile: fix building Lua with gcc 4.7.3

a289367: Makefile: only attempt to build/install/check ML-SETUP.FIR if there is a valid installer directory
(some platforms may not have have one - 7D_MASTER, new ports)

5b81f34: Card LED: always use CARD_LED_ADDRESS, LEDON and LEDOFF
(backed out 5bfab05 to fix installer on 7D - 0x800c00 not mandatory?)

1d98a07: Makefile: moved 7D-specific tweaks (FIR etc) into main target (7D.203)
for consistency with other platforms, including 7D2
to build the regular FIR: make build_fir
to build the installer FIR: make ML-SETUP.FIR -B

f8beef0: Makefile: FIR building updates
- always install ML-SETUP.FIR (zip, install, install_qemu)
- build_fir for regular ML (not installer) now gives AUTOEXEC.FIR
- to recompile ML-SETUP.FIR: "make ML-SETUP.FIR -B" from platform directory
- "make zip" will also compile the installer from source, without replacing the precompiled ML-SETUP.FIR
(just to make sure the source code changes do not interfere with building the installer)

47f3108: Makefile: fix building xor_chk from its own directory

59a6d0a: Makefile: more .NOTPARALLEL fixes

5249a4a: Makefile: fix 7D FIR path
(just for consistency)

2c627b1: Makefile: use .NOTPARALLEL in top-level Makefiles, rather than double-colon rules
ML platforms/modules are built sequentially, but within each platform/module, parallel build is used
to be tested on Mac with -j8
(on Make 3.81, double-colon are executed in parallel, while in 4.2.1 they are sequential)

36d3ec2: Makefile: fix README.rst generation with POSIX shells
to reproduce: cd modules/filepref; make clean; rm -f README.rst; make SHELL=dash

01953d3: Makefile: serialize "make install", fix some related dependencies
parallel copying could lock up WIFI_SD cards
to reproduce: "WIFI_SD=y make install ML_MODULES=" from platform/CAM directory

e592e31: Makefile: monitor wifi connection when using WIFI_SD=y
(experimental, helps troubleshooting connectivity issues)

84d6ed4: Makefile: minor refactors for WIFI_SD (coding style)
also fixed a typo

26fe70c: Modules: better error handling for missing rst2html

5ea430b: Makefile: speed optimizations
- helper to evaluate only once, only if used
- modules hgstamp: only evaluate if used
- CF_CARD, VERSION: only evaluate once if used
- PWD is special? renamed to avoid unneeded shell calls
Profiling tips:
- perf record make; perf report --sort comm
- make SHELL="sh -x"
- make clean SHELL="sh -x" |& grep "^+" | sort | uniq -c

f2ed3dc: Makefile: enable parallel compilation for modules, but compile them sequentially
huge modules like Lua will compile much faster
compiling everything in parallel is not 100% safe (some dependency checks may fail)

4d93c8f: Makefile: do not print toolchain info on recursive calls

d206167: Makefile: reworked global targets
install: doesn't make sense, as we no longer have a "one size fits all" build capable of running on all models
(alternative: 5D3.113_install, 60D_install etc)
zip: build zip for each camera model, sequentially (parallel build still used within each zip)
all: similar to zip (build camera models sequentially, but use parallel compilation within each platform)
clean, check: these can run in parallel (no restrictions)

aa05061: Makefile: fix module dependency checking on "make zip"
by default, a module succeeds if it can be loaded on any camera model, from those compiled (doesn't matter which one)
when using "make zip", we only want to include the modules compatible with current camera model, without considering other models
(fixme: not the cleanest way to implement this)

718e285: Makefile: fix module_strings dependency rule
(previously, there was an error with make -j)

2db4026: Makefile: dropped ML_MODULES_STATIC (unused) and renamed ML_MODULES_DYNAMIC to ML_MODULES
note: if you have customized the module list in Makefile.modules.user, just rename ML_MODULES_DYNAMIC to ML_MODULES
to compile without modules: make 5D3 ML_MODULES=

ff1401e: Makefile: fix "make clean" from modules directory with stale modules from other branches

3ca10bd: Makefile: fix running from other directory
e.g. from qemu: make -C ../magic-lantern/ 500D_install_qemu

9199719: Makefile: model-specific install targets for the root directory
examples: make 500D_install; make 500D_install_qemu

871f759: 7D: fix compiling with FEATURE_VIDEO_HACKS

6a08a65: Makefile: fix building 7D_MASTER

c7554e3: Makefile: minor cleanups from 0b9b550

440a589: Makefile: always define CONFIG_$(MODEL)_$(FW_VERSION)
e.g. CONFIG_5D3_113, CONIFG_7D_203 and so on

539328f: Makefile: fix for GNU make 3.8.1
(thanks g3gg0)

f03c00c: Makefile: fix newline issue with WIFI_SD=y

84d1418: Makefile: fix Mac issue (undefine not supported)

623689f: fixed late evaluation issue in rule builder

bda493a: fix indentation

27f4105: Makefile: rules for "make install_qemu"
(to use them, qemu has to be installed first)

383ea35: Makefile: with WIFI_SD=y, ping the card until it comes online (useful for router connections)

7fd995a: Makefile: portable way to get number of processors

30a88aa: further makefile cleanup, added make check to show which models were built and their memory usage

37dd596: fix 'all' target for models

dcc1583: disable ASSERT for 7D_MASTER

376a9cc: removed explicit make executable definition. allows to run e.g. 'remake' to debug make rules

e6ffbdf: reworked model make rules to support different firmware versions for a model [to be thoroughly tested]

9033380: disable ASSERT for 7D_MASTER

a494258: Feature matrix: updated links

3f85e34: Merged in daniel_fort/magic-lantern/unified-6D-sf_dump (pull request #876)
Add 6D.116 to sf_dump module

c326fdc: Added 6D.116 to sf_dump module.

75a085c: Merged in daniel_fort/magic-lantern/unified-600D-audio_meters_fix (pull request #877)
600D audio meters fix

c82a97f: 600D also needs Audio IC turned on at boot.

d4e6421: Makefile: also print CONFIG overrides from command-line
(alongside the ones from Makefile.user)

447a93c: Makefile: print tips for using make -j
(how to set it by default in Makefiles?)

4b4b194: Makefile: silence warning about CONFIG_SITE
(some recent Linux distros use it)

345427f: Makefile: portable way to get libgcc.a's path

26c84b1: Makefile: removed old dropbox target

be16e64: Makefile: print build info after "make zip"; skip EXIDX line

d3e332d: Makefile: fix CONFIG_CCACHE

f51317e: Makefile: use "gio mount" rather than "gvfs-mount"
(they are interchangeable; older systems may require gvfs-mount, newer systems will print warnings)

9aec0a1: Makefile: if no valid ARM GCC is found in PATH, try to find one in the home directory

cd0ee94: Makefile: fix compiling tcc

d06fe5d: Makefile: moved toolchain setup to Makefile.setup
(this allows toolchain to be overridden from Makefile.user)

993fd34: Makefile: fixes to allow compiling ML with Linaro arm-eabi-gcc; updated toolchain recommendations

579cec7: Makefile: updated toolchain recommendation; minor edits

6566325: Makefile: attempt to use any arm-none-eabi-gcc from PATH, if already installed (to be tested)
By default, it will attempt to use ~/gcc-arm-none-eabi-5_4-2016q3 if installed.

e533765: Makefile: use gcc 5.4.1 by default (current version from )

30db465: Merged in daniel_fort/magic-lantern/unified_650D_audio_meters_fix (pull request #870)
650D audio meters fix

0fa7a8e: 650D has the same audio meters issue as the 700D -- needs the same fix.

08720b2: Merged in daniel_fort/magic-lantern/unified_700D_audio_meters_fix_1 (pull request #866)
Audio meters fix for 700D
Approved-by: Daniel Fort

17b95fb: Audio meters stop functioning after recording the first clip when using mlv_snd. Easy fix suggested by a1ex.

Build Log

Test results: 6 passed, 0 failed.

39f226e: 70D: update dual iso adresses for 1.1.2

Build Log

d287c4d: Merged new-dryos-task-hooks into 70D_merge_fw112

4cf7015: tskmon: in null pointer check, retrieve last last task name directly, rather than calling is_taskid_valid
also fixed some possible null pointer bugs in the... null pointer checking code
(fixes crash when reporting null pointer on 100D and likely on all other cameras with new-style DryOS hooks)

Build Log

Build Log

32ccab6: Merged unified into 70D_merge_fw112

80501e7: installer: fix compilation

22a03ba: Merged in daniel_fort/magic-lantern/update-to-700D.115 (pull request #813)
Update to 700D.115

5e44a93: 700D: fix AbortEDmac

77e64aa: Dummy merge with dfort's unified

4ce4d28: 700D, 6D, 7D: fix AbortEDmac

b363c94: 700D: undo dialog_refresh_timer change in mlv_rec/mlv_lite
(this address is the same in 1.1.4 and 1.1.5)

7e969b4: Update sf_dump module to 700D.115

93e177a: Fixed is_taskid_valid stub.

0b141cd: Merged unified into update-to-700D.115

e228e1b: Added minimal autoexec.bin for 700D

2023513: Merged unified into update-to-700D.115

72ac881: Merged unified into update-to-700D.115

434b7eb: Incorporated pull request #842 to fix Autoexposure module

70852eb: Merged hudson/unified into unified to prevent new remote heads.

2e989b7: Update to latest exiftool

435cb10: Merged unified into update-to-700D.115

f15d607: Resolve conflicts with changes to Task info in stubs.S

1400d79: Merged unified into update-to-700D.115

2a83ae8: Added new ML-SETUP.FIR created by a1ex

fc28684: update to firmware revision 700D.115

fa90b21: hg rename 700D.114 700D.115

226838b: Merged in daniel_fort/magic-lantern/unified_silent_module_fix (pull request #854)
modify silent.c to work with commit f404e5f

0e9da39: TCC Makefile: fix minor typo

b6df56d: silent.c: there are no info bars in paused LiveView mode

d8d44a7: modify silent.c to work with commit f404e5f
Raw backend: allow displaying raw previews without conflicting with LiveView info bars

0752dd8: Merged in raw_fixes (pull request #828)
Raw fixes part 5

f3f6916: fio-ml: added get_dcim_dir_suffix(); moved get_dcim_dir() from dryos.h

17ceddd: mlv_rec/mlv_lite: moved write_mlv_vers_blocks to mlv.c/h
(avoids duplicate code)

02f01f0: mlv_play: fix a fio_malloc issue (not tested, might fix issue #2766)

e5d9110: Merged in raw_capture_info (pull request #827)

a9f41d0: mlv_dump: fix compilation after rawc header update

ff6f36e: get_current_dialog_handler: fix return value when no dialogs are present

afcf332: fix rules to allow "make -j"

6c580fd: 5D3 1.2.3: fix CARD_A_MAKER (off by one)

bbe2c5c: mlv_lite: always override (toggle) the preview mode on *long* half-shutter press, when not autofocusing
(avoids transient screen changes on quick half-shutter presses)

8e0c516: mlv_lite: preview both full-size buffers while recording
(to catch future bugs that might cause the raw buffer to update every other frame)

29d86cc: Raw backend: exact height autodetection for 5D3
(lossless 8-12 bit compression works!)

fd07490: mlv_lite: fix shutter button remaining locked after recording with Frozen LV
(problem from exmem backend; not sure how to do a proper fix)

692ab1a: mlv_lite: slow down color preview to let lower-priority tasks run (such as histogram)

0554bca: FPS override: disable in x10 mode when half-shutter is pressed, to help with focusing
(example setup: full-res LiveView, FPS override at 4 FPS for continuous recording, zoom on half-shutter)

aeacbba: FPS override: display rolling shutter in the main menu when available
(either when raw recording is enabled or while recording H.264)
(useful for diagnosing the new crop modes)

04e8139: FPS override: also display rolling shutter as percentage of frame duration

432fa63: mlv_lite: do not print debug info when freezing LiveView
(seems to help with corrupted frames in modes with resolution pushed to limit, e.g. 1080p48)

39761ea: Include strstr in ML core

fdbbc55: mlv_lite: fix squeeze info in menu for 50/60p modes

3575b28: mlv_lite: display actual aspect ratio in menu, if different from selection

01c5b91: raw_rec: fix some resolution inconsistencies

1d35774: mlv_lite: fine-tuned menu for Frozen LV mode
(previously known as Hacked Preview)

6209ed2: mlv_lite: reworked preview options with (hopefully) a lot more reasonable defaults
- color preview with correct framing whenever plain LiveView is not accurate (crop/zoom modes etc)
- only use grayscale preview when recording speed is critical
- renamed the preview options
- half-shutter to override the automatic preview choice
(note: slot_count is valid_slot_count in compressed_raw)

f404e5f: Raw backend: allow displaying raw previews without conflicting with LiveView info bars;
updated mlv_rec and mlv_lite to use this capability

fb6910a: mlv_rec, mlv_lite: fix rawc saving after structure update in mlv.h

b3ed8b4: Fix c6f92ee

fa1b3cc: mlv_rec, mlv_lite: save RAWC (raw_capture_info)

0356223: Raw backend: fix raw_capture_info.skipping_y for EOS M
(720p unless recording H.264)

7d289a4: mlv.h: replaced struct raw_capture_info with individual fields
(binary compatible with previous version)

97678b1: raw_capture_info: redefined offset_x and offset_y to refer to first (top-left) *active* pixel
that way, optical black variations between formats (e.g. CR2 vs FRSP) are no longer relevant

bd661a2: mlv_dump: show the meaning of sensor crop factor

c0563f8: mlv_rec, mlv_lite: fix minor crop factor display issue
(division by 0 in photo mode)

c6f92ee: mlv_rec, mlv_lite: save RAWC (raw_capture_info)

33e3509: mlv_dump: print RAWC (raw_capture_info)

a2bbf26: mlv.h: RAWC block (struct raw_capture_info)

7674853: Raw backend: new CBR for modules (CBR_RAW_INFO_UPDATE)

443884d: Raw backend: new structure about image capture parameters (resolution, pixel binning modes)
(also updated mlv_lite and mlv_rec)
(can you suggest a better name?)

Build Log

Build Log

Magic Lantern is not approved nor endorsed by Canon in any way, and using it will probably void your warranty.
We are not responsible for any damages to your camera.

Copyright (C) 2009-2017 Magic Lantern Development Team

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.