Your Canon, shot like film.
A film camera's interface for Canon cameras that run Magic Lantern.
Load a roll from a shelf of 72 film stocks, shoot without looking at the screen, then develop the roll: in the camera, or on your computer with Darkrooms.
The camera side is free and open, for everyone.
English · ภาษาไทย · Films · Cameras · Darkrooms · Take it further
M-Film replaces the camera's menus with a film camera drawn from scratch, with Magic Lantern running underneath. There is no picture on the screen after each shot and no going back through them: you shoot the roll, then develop it and see what you got.
Every RAW is kept, so nothing is lost: you can develop the same roll again with another film later.
Focusing a manual lens. Loading a roll sets the camera to the film's ISO, and LiveView shows the exposure the frame will get: with a slow film, or an adapted lens stopped down, it can be too dark to focus. Turn off Settings → Exposure simulation and LiveView stays bright enough to focus, whatever the exposure. (Not on the 600D and 1100D: Magic Lantern can't set it there.)
- Print sizes and zoom: how big the prints are.
- A quieter darkroom. The developing screen keeps the safelight, the tray and the paper, and draws again only when a print is done: the camera's one processor develops instead of animating. INFO dims the screen while it works.
- Date stamp (Settings → Date stamp): the day in the corner of each print, in orange, like a compact's data back.
- The battery beside the clock on every page and in the viewfinder: in percent on the 60D, 6D, 70D, 5D Mark II and 5D Mark III, whose battery reports it; as an icon with three levels on the others, where Canon knows no more.
- The films you loaded last have a shelf of their own, where the film shelf opens: the same film again is one press.
- Settings is one page (viewfinder, exposure simulation, print size, date stamp, film mode); the rest is under Manual lens and Advanced. The wind lever no longer locks the shutter: it reminds, or is off.
- Menus that are simply there. Going into a menu and back no longer slides; the fade between the shelf, the darkroom and the prints is shorter, and Advanced → Page fade turns it off.
- The readout lights when you turn a dial, not only on a half-press. On cameras with two dials (50D, 60D, 70D, 5D Mark II, 5D Mark III, 6D) the top one changes shelves on the film shelf and the rear one picks the film.
- EOS M: Advanced → Hide Canon's graphics keeps Canon's exposure scale and icons off the viewfinder (its focus frame goes too, so it is off unless you turn it on).
- One build. The film OS now loads as a module after the camera starts on every camera, so Magic Lantern takes no more memory at power on than it does alone (why). On the cameras that had it built in until 0.1.6 (EOS M, 6D, 5D Mark III, 60D, 500D, 50D, 5D Mark II) this is new: see Cameras.
The camera's darkroom develops in three sizes. You choose when you start it (INFO on the Darkroom page asks, and remembers) or in Settings → Print size:
| Horizontal frame, from 18 MP | What it is | Zoom in the camera | |
|---|---|---|---|
| Small | 720 × 480 (0.35 MP) | the camera's screen: the quickest | none |
| Medium | 1728 × 1152 (2 MP) | a third of the sensor each way | × 2.4 |
| Large | 2592 × 1728 (4.5 MP) | half the sensor each way | × 1.8 and × 3.6 |
| Darkrooms on a computer | the full RAW, 5184 × 3456 (18 MP) | every pixel |
- A vertical frame is the same, turned upright. Other sensors give in proportion: Large is 2736 × 1824 on a 6D, 2880 × 1920 on a 5D Mark III.
- A bigger print takes longer: by the work it is, about 2.6 times a small one for Medium and 4.4 times for Large (a small one takes about 15 seconds a frame on an EOS M). The Darkroom page says how long before you start, from the frames the camera has developed at that size.
- The JPEG in
DCIMis the size you chose. Medium and Large prints also keep a file to zoom into on the card (2 MB and 4.5 MB a frame). - A camera without the memory for the size you asked makes the next one down, and says so.
- To make a roll's prints bigger later: Delete → Prints only on the Darkroom page, then develop it again. Your RAWs stay on the card, so Darkrooms can also develop any roll you've shot at full size.
![]() |
![]() |
| Choose how real. Settings → Film mode. | Basic (the default): the last frame finishes the roll, and it goes straight to the darkroom. No rewinding. |
- Basic: shoot, then develop. Stop early with Finish roll on the roll's page (the first row of Home).
- Realistic: like a real film camera. Rewind the roll before it can be developed.
- Either way the roll is the same on the card, so Darkrooms reads both.
A DSLR shoots through its optical viewfinder, so there is no LiveView to draw on. With a roll loaded and LiveView off, the back screen becomes a film camera's top plate:
- shutter, aperture and frame in big seven-segment digits
- the film and its ISO
- a light meter from −2 to +2 stops, and a bar of the frames left
- WIND ON when the next frame needs winding
It goes off when you put your eye to the viewfinder, and LiveView brings the viewfinder HUD back. New in 0.1.1, still waiting for a DSLR tester: see Cameras.
Colour negative, slide, black and white, and cinema film, on four shelves. Each film has its own colour, grain, halation and softness; rolls come in 36, 24 or 12 frames.
All 72 films, on the same photo →
Colour for 63 of them comes from the Film-Luts collection; the rest
from M-Film's own film models (ml-dev/films/films.py).
M-Film was made on the EOS M, where it works. It now builds for every camera on which Magic Lantern itself is mature (DIGIC 4 and 5). Testers have tried most of them now: the table says how far each one got, and what's still wrong. If you have one marked needs a tester, you can help: TESTING.md says how (about 20 minutes, and you can always go back).
| Camera | Canon firmware | Status | Notes | Card files |
|---|---|---|---|---|
| Canon EOS M | 2.0.2 | ✅ Works | From 0.2 the film OS loads as a module here too (as on the 550D and 650D): not confirmed on this camera yet, say if it starts. 0.2 can keep Canon's exposure scale off the viewfinder: Advanced → Hide Canon's graphics (#67). | M-Film-camera-EOSM.202.zip |
| Canon EOS 5D Mark II | 2.1.2 | Most hang at power on: the build is too big at start-up (#18). 0.1.3 has a smaller one (some Magic Lantern features left out, the darkroom kept) and fixes the pink prints: waiting for testers. From 0.2 the film OS loads as a module here too (as on the 550D and 650D): not confirmed on this camera yet, say if it starts. | M-Film-camera-5D2.212.zip |
|
| Canon EOS 5D Mark III (firmware 1.1.3) | 1.1.3 | Starts and shoots; the in-camera darkroom couldn't find the RAWs (#31): fixed in 0.1.3. From 0.2 the film OS loads as a module here too (as on the 550D and 650D): not confirmed on this camera yet, say if it starts. | M-Film-camera-5D3.113.zip |
|
| Canon EOS 5D Mark III (firmware 1.2.3) | 1.2.3 | Starts and shoots; the in-camera darkroom couldn't find the RAWs (#16, #37): fixed in 0.1.3. From 0.2 the film OS loads as a module here too (as on the 550D and 650D): not confirmed on this camera yet, say if it starts. | M-Film-camera-5D3.123.zip |
|
| Canon EOS 6D | 1.1.6 | ✅ Works | Works since 0.1.2 (#17, #22). From 0.2 the film OS loads as a module here too (as on the 550D and 650D): not confirmed on this camera yet, say if it starts. 0.2 keeps Canon's screen away for as long as a frame is being saved, and lights the readout when a dial is turned (#17, #23): say if either still happens. | M-Film-camera-6D.116.zip |
| Canon EOS 50D | 1.0.9 | ✅ Works | Works (#43). 0.1.5 repaints the plate when Canon draws over it, but a slight flicker may remain, as on the 500D; 0.1.6 puts the plate together off-screen and puts back only what Canon drew over: reports wanted in #64. From 0.2 the film OS loads as a module here too (as on the 550D and 650D): not confirmed on this camera yet, say if it starts. | M-Film-camera-50D.109.zip |
| Canon EOS 60D | 1.1.1 | ✅ Works | Works since 0.1.3 (#25). 0.1.5: Screen orientation for a broken hinge switch (#49). From 0.2 the film OS loads as a module here too (as on the 550D and 650D): not confirmed on this camera yet, say if it starts. | M-Film-camera-60D.111.zip |
| Canon EOS 70D | 1.1.2 | 0.1.5 works on a tester's 70D, with the film OS as a module (#40); on another, Magic Lantern installs but the camera then starts Canon's own firmware (#58): more reports wanted. | M-Film-camera-70D.112.zip |
|
| Canon EOS 100D / Rebel SL1 / Kiss X7 | 1.0.1 | Works on 0.1.5, the film OS as a module (#48). 0.1.6 as first released (8 Nov) flickered and took no buttons (#73); the zips were rebuilt with a fix on 9 Nov: download again, and say in #73 if it works. | M-Film-camera-100D.101.zip |
|
| Canon EOS 500D / Rebel T1i / Kiss X3 | 1.1.1 | ✅ Works | Works (#44). 0.1.5 repaints the plate when Canon draws over it, but a slight flicker remains; 0.1.6 puts the plate together off-screen and puts back only what Canon drew over: does it still flicker? (#64) From 0.2 the film OS loads as a module here too (as on the 550D and 650D): not confirmed on this camera yet, say if it starts. | M-Film-camera-500D.111.zip |
| Canon EOS 550D / Rebel T2i / Kiss X4 | 1.0.9 | ✅ Works | Works since 0.1.5, the film OS as a module, darkroom included (#48, #50). | M-Film-camera-550D.109.zip |
| Canon EOS 600D / Rebel T3i / Kiss X5 | 1.0.2 | ✅ Works | Starts and shoots since 0.1.5, the film OS as a module (#46). The in-camera darkroom isn't confirmed on it yet; shoot with Image quality RAW. | M-Film-camera-600D.102.zip |
| Canon EOS 650D / Rebel T4i / Kiss X6i | 1.0.4 | ✅ Works | Works with the film OS as a module, darkroom included (#54). From 0.1.3 to 0.1.5 the plain zip came without the darkroom (with it built in, the 650D doesn't start: #34): in 0.1.5, take the -module.zip. |
M-Film-camera-650D.104.zip |
| Canon EOS 700D / Rebel T5i / Kiss X7i | 1.1.5 | 0.1.5's module build works on a tester's 700D, darkroom included (#19), but M-Film's and Canon's menus still glitch over each other; 0.1.6 holds Canon's screen as the film OS opens, and as it closes back to the HUD: reports wanted. From 0.1.3 to 0.1.5 the plain zip came without the darkroom: in 0.1.5, take the -module.zip. |
M-Film-camera-700D.115.zip |
|
| Canon EOS 1100D / Rebel T3 / Kiss X50 | 1.0.5 | 🧪 Builds, needs a tester | The film OS as a module fits its boot memory (493,056 of 524,032 bytes). Needs a first tester. | M-Film-camera-1100D.105.zip |
Not yet: 5D Mark IV, 5DS R, 6D Mark II, 7D Mark II, 77D, 80D, 200D, 750D, 850D, M50, R, R5, R6, RP, SX70 HS, SX740 HS (Magic Lantern itself is still experimental on these) · 7D (Magic Lantern's current source doesn't build it).
✅ tried on the camera and works · ml-dev/cameras.txt; porting
notes in PORTING.md.
- The camera needs exactly the Canon firmware in the table (MENU → last settings tab → Firmware ver.).
- Unzip the card files for your camera onto an SD card, put it in the camera and run Firmware ver. → update once. From then on M-Film starts with the camera from that card.
- In Canon's menu set Image quality to RAW (RAW+JPEG works too) and Image review to Off. The darkroom develops the RAWs: a frame shot as JPEG can't be developed.
- Full steps, and how to go back: TESTING.md. Building it yourself:
ml-dev/build_fork.sh <camera>.
Don't unzip a new version over the old one: files left from before can make the camera misbehave. Start from a clean card instead:
- Finish the roll and develop it, in the camera or with Darkrooms. A new install starts with no roll loaded.
- Copy your photos off the card (the
DCIMfolder), including the developed JPEG folders. - Format the card in the camera and choose to remove Magic Lantern.
- Unzip the new version onto the card, as on the first install.
- Put the card in the camera and run Firmware ver. → update again, then switch the camera on.
Your settings (film, screen colour, Film mode) go back to their defaults: set them again.
The camera develops its rolls by itself, slowly. Darkrooms does it on your computer, fast. Plug the camera in (or put its card in a reader) and open Darkrooms. It finds the camera, shows every roll you shot with its film, and develops them at full resolution.
| Free | Darkrooms Full | |
|---|---|---|
| Rolls a day | 1, of up to 36 frames (the same roll again that day doesn't count) | as many as you like |
| Every film, full size, EXIF, contact sheets | ✓ | ✓ |
| Many rolls at once on every core | ✓ | |
| Price | free, with a Google account | US$2.99 a month or US$14.99 once (checkout shows your currency), updates included |
The camera's own darkroom stays free and unlimited. Darkrooms goes with your Google account: no key to type in or keep. Click the badge at the top right → Sign in with Google, then Get it monthly or Get it for life. After you pay, Darkrooms switches to Full by itself within a few seconds. One account works on two computers at a time (sign in on the other one with the same Google account). Cancel the monthly plan any time in the program (Manage the subscription): it stays on until the end of the month paid for. Privacy: your pictures never leave your computer.
| Your computer | Get | Open it |
|---|---|---|
| Windows 10 / 11 | Darkrooms-windows-x64.zip |
Unzip, open the Darkrooms folder, run Darkrooms.exe. If Windows warns: More info → Run anyway. |
| Mac with Intel | Darkrooms-macos-intel.zip |
Unzip, drag to Applications and open it. The first time: System Settings → Privacy & Security → Open Anyway (macOS 14 and older: right-click → Open). |
| Mac with Apple silicon | Darkrooms-macos-apple-silicon.zip |
Same. |
From the Darkrooms releases (the newest is at the top). About 30–50 MB. The program isn't signed with Apple or Microsoft yet, hence the warning the first time.
- Have one of the cameras above? TESTING.md: try it and tell us, so it can move to ✅.
- Another camera? PORTING.md says what moves easily (the Film OS screens), what has to be redone per camera (the Magic Lantern side), and how to go about it.
- Every screen and button of the camera side, and how it works inside (in Thai): docs/MANUAL.th.md.
- Something broken? Open an issue and paste what the gear icon → What does the computer see? shows.
- The films (looks, LUT list) are in
ml-dev/films/; the camera build bakes them in. - Darkrooms, the desktop program, is closed source and isn't in this repository.
The camera side of M-Film is free and stays free. If it gave you a roll you like, you can buy the developer a coffee ☕.
M-Film is made by HNGSeries, on top of Magic Lantern.
This repository: GPL-2.0 (LICENSE), as the camera side builds on Magic Lantern. Darkrooms (the desktop program) is a separate, closed-source program under its own licence. Fonts, film LUTs and other parts: THIRD_PARTY.md. Not affiliated with Canon, Kodak, Fujifilm or any film maker.
























