The following builds are works in progress, known to have rough edges.
Please test thoroughly before considering them for serious work.
The functionality from this page will be integrated in the main builds as soon as all major issues will be ironed out.
However, we need your help. If you use any of these builds, please report your experience.
Still confused? Each experimental build has a link to the relevant forum thread, where you can discuss the new features.
You may also check this page for ideas on how to help, and this page for how to suggest changes with a pull request, from your web browser.

Latest Lua updates + fixes (please review)

Latest Lua updates (details).

Includes many other backend changes, e.g. focus, menu, Q button handling, fonts etc.

Therefore, it's important to give it a good try on all functions, not just Lua, so we can include it in the nightly builds.

Also includes lens.focus_pos and dynamic-my-menu.

Forum discussion

Branch: lua_fix

Latest Build (2017-12-03 22:09)













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

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)

All changes on BitBucket

Build Log

4K raw video recording; lossless compression

crop_rec module with higher resolutions (4K, 1080p48 etc):


  • 1920x960 @ 50p (both 1:1 crop and full-frame - 3x3 pixel binning)
  • 1920x800 @ 60p (same as above)
  • 1920x1080 @ 45p and 48p (3x3 binning)
  • 1920x1920 @ 24p (1:1 square crop)
  • 3072x1920 @ 24p (1:1 crop)
  • 3840x1600 @ 24p (1:1 crop)
  • 4096x2560 @ 12.5p (1:1 crop)
  • 4096x1440 @ 25p (1:1 crop)
  • Full-resolution LiveView: 5796x3870 at 7.4 fps (128ms rolling shutter).
  • Continuous: 3072x1308 @ 24p, 1920x1080 @ 45p, 1920x960 @ 50p, 1920x800 @ 60p, 4096x2560 @ 8p, 5796x3870 @ 5p.

EOSM, 700D, 100D:

  • 1736x688 @ 50/60p with 3x3 pixel binning (actually column binning / line skipping)
  • Lossless compression: 1736x976 @ 24p continuous (this is the maximum 16:9 resolution with 3x3 sampling)


  • It's quite bleeding edge (expect bugs)
  • Includes lossless compression for MLV (mlv_lite/mlv_play) and DNG (silent/pic_view)
  • Includes lua_fix and dynamic-my-menu
  • You will generally need to use the (non-realtime) preview from the raw recording module.
  • Setting the preview to Frozen LV will give sligthly better recording times.
  • Modes with higher vertical resolution will have real-time preview only for the top of the frame.
  • Modes with higher horizontal resolution will have the preview completely broken.
  • Centered x5 zoom will show either a cropped real-time preview, or a slow preview with correct framing (half-shutter to toggle).
  • mlv_lite has lossless compression and H.264 proxy, mlv_rec has uncompressed 14/12/10-bit video and native sound recording

This is also the "de facto" bleeding edge branch, with other experimental stuff being tested here.

Forum discussion

Branch: crop_rec_4k

Latest Build (2017-10-27 23:05)









fef4323: mlv_lite: fix white level handling (underexposed playback for 8..12-bit lossless MLVs)

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

All changes on BitBucket

Build Log

10/12-bit RAW video

Experimental raw video recording at lower bit depths. Only models with CONFIG_EDMAC_RAW_SLURP are compiled.

Forum discussion

Branch: raw_video_10bit_12bit

Latest Build (2017-08-21 08:24)












870cedc: Merged unified into raw_video_10bit_12bit

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"

07d376a: Merged in edmac (pull request #811)
EDMAC module + fixes

b50b476: edmac-memcpy: fix compilation

50ca62d: Merged unified into edmac

3f5322a: Merged in backtrace (pull request #849)
Stack trace (aka backtrace) in crash logs

2804bee: Close branch backtrace

8551a9c: selftest: fix incorrect strings (AllocateMemory != system memory)

07c1020: edmac.mo: fine-tuned transfer size info

10e3346: selftest: AbortEDmac test

bc529a0: selftest: edmac_memcpy test

a57c840: edmac.mo: transfer size test

7ab594e: edmac-memcpy: use and decode transfer size from flags (to be tested)

1168658: edmac_test: proper memory allocation

7b09278: edmac-memcpy: updated edmac_find_divider for latest hypothesis

All changes on BitBucket

Build Log

Pre-recording with half-shutter triggers

Pre-recording with half-shutter triggers (details).

Should work on top of latest nightly build.

Forum discussion

Branch: rec-trigger

Latest Build (2017-08-17 22:29)


7441ed4: mlv_lite: fix compilation

9e60bc5: mlv_lite: prevent recording in x10 zoom
(to be used for focusing)

All changes on BitBucket

Build Log

Non-CPU lens info

Set lens name, focal length and aperture for manual lenses. Lua script.

Forum discussion

Branch: manual_lens_info

Latest Build (2017-04-04 21:38)















0b173c1: ui.lua: ported 9f71744 (not tested)

8651458: Merged lua_fix into manual_lens_info
(not tested; todo: port editor fixes into ui.lua)

34c6cbd: Merged unified into lua_fix

8cd7485: lens.h: fix bad merge

546bbc7: Merged unified into manual_lens_info

d5915d6: Backout 722c851 (fix FIR not included in the zip)

fc3ec35: Merged in raw_fixes (pull request #820)
Raw fixes part 4

c95ec19: Silent pictures: minor error handling fix

e26684f: Silent pics: only show the slit-scan mode option when you actually select slit-scan

a881f05: Silent pictures: fix allocating memory for a single picture
(frame size not known in advance and might be larger than max shoot block size)

eff649f: Silent pictures: fix overflow when allocating memory for burst mode

97cc437: Merged in task_name (pull request #796)
New method for getting current task names (refactor)

3664a5a: Close branch task_name

d014368: Raw backend: fix black border on raw previews (completes 23d1f0e)

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

ce4b49b: Merged cleanup into unified

016a0e5: Removed april fools prank

8a6e123: debug.c: removed unused code

82d9b13: Zip comment: removed old links

732bdb3: fio-ml: fix possible buffer overflow with PROP_CARD_SELECT
(might happen on unusual settings or new models)

All changes on BitBucket

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.