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-11-05 18:38)

















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

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

5bcd52b: Merged makefile-updates into lua_fix

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

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

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

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.