Magic Lantern (ML) is an unofficial firmware for Canon cameras that provides increased functionality (for example, dual-iso, focus stacking, raw video, fine-tuning of shooting parameters and much more). The firmware is installed directly on the flash-card, which allows you to safely remove it or update it by simply replacing files.
On Habré there have already been
publications on this firmware, so I will not describe in detail the advantages and installation procedure. I'll tell you how I got caught by an implicit and unfunny April Fool's joke from the developers of this firmware.
All the described actions were performed using a Canon 650D camera with stock (1.01) firmware.
')
March 28 It all started when the thirst for researching something new had accumulated to a critical mass and information about the possibility of automatic focus-focus shooting on my camera was accidentally discovered on the network. But these capabilities required the installation of the Magic Lantern unofficial firmware.
A quick search revealed that:
- the current firmware of the camera does not support the current ML builds;
- for model 650D there is no stable assembly, there are only nightly builds;
- some ML functions in 650D do not work / work crookedly;
- The authors warn that you can zakirpichit camera wrong actions on the firmware.
After that, the camera was successfully reflashed to the latest official version for Canon 650D 1.04. And strictly according to the instructions, with resetting all the settings and full formatting of the card, the last Magic Lantern night build was installed (dated March 28).
Eyes slightly rounded on the number of settings. Were immediately tested dual-iso, focusing on stacking and some other features. First impressions were purely positive, although the results left much to be desired. The total time of the first acquaintance was limited to 4 hours, during which there were no comments on the work of the software itself.
March 29. A more detailed study of the firmware showed that you can still shoot and raw video, as well as a new build ML. The new build was uploaded to the map (due to inexperience, only the ML directory was updated). The recording was tested on a camera, but time was running out and the quality of the PC was not assessed on that day. The end of the weekend has come.
April 1st. With thoughts of "I will not experiment today," returning from work. But curiosity is stronger than me.
I update ML to the last build (the same one - from March 29, but now with a full set). Turn on. I'm starting to tweak ... and catch
BSOD on the camera.
Shock.
BSOD says that an internal error number 0x000000aa occurred (there is no error in numbers), a lot of text (memory dump ready, try restarting, check settings, etc.) and “Your camera was bricked” (among other things).
With cold fingers, I do a reset through the battery, as recommended by the developer.
I turn on the camera and two seconds after the download I get the same BSOD. F @ # $%!
I'm nervous. Delete ML. Everything works in normal mode.
With the thought that the curve of the build is to blame for everything, I roll back to the version of March 28 (with which I spent 4+ hours).
I run. Everything is working. Good. I configure the camera again. Getting ready and immersive in learning. BSOD! WTF ?!
Reset. BSOD in a minute. Formatted. Reinstall. I run. BSOD. Shock.
I'm calm. The camera without ML is working normally. C ML is a regular random BSOD (even at idle when the camera is turned on).
Searches by mistake do not give results. Generally no. Is empty. As if I ran into this alone. I go to the official forum. I register. I describe the problem. I am waiting.
I quickly get several answers:
- please take a video with how it happens (IMHO, in this situation it is meaningless);
- recommendations to follow the instructions on the screen and upload the results to the forum (results? about a successful next reboot on the battery?);
- recommendation to roll back to the build of March 11, as the most stable version to date;
- a couple of messages about these errors.
Stop. I'm not the only one. The problem is fresh, but they can’t say exactly when it arose.
At first I decided to just roll back to March 11. But having slept with this thought, I decided to dig deeper.
From March 11 to March 29, there are only 10 builds. Sources are available on bitbucket with a complete (I hope)
changelog`om build. I read the logs of changes.
- 2015-03-12 - options for dump video, fine tuning
- 2015-03-13 - refactoring, tuning, fixes
- ... many other changes ...
- 2015-03-23 - work with DOF
- 2015-03-25 - 80cee7a | Alex - I like my bad joke
So-so ... It starts to clear up something. I read
changeset. In the file "src / tweaks.c" I find:
struct tm now; LoadCalendarFromRTC(&now); joke_mode = (now.tm_mday == 1 && now.tm_mon == 3); + if (joke_mode) + { + msleep(1000); + joke_mode = display_idle(); + }
and
+ if (joke_mode) + { + if (rand() % 1000 == 13 && !RECORDING) + { + extern void bsod(); + bsod(); + } + }
What?! Joke mode? Are you kidding me?
I explain: the first of April (now.tm_mday == 1 && now.tm_mon == 3 (the third month becomes the fourth when counting from zero)) after downloading the ML, the firmware starts to generate a random number every second. If this number is 13 and currently there is no recording (thanks at least for this), get your BSOD. And since my level of luck was critically low, I managed to catch a BSOD 5 times right after downloading the firmware.
Dubious joke, questionable content.
April 2nd. 364 days left to random BSOD.
PS: Hello to the developer Alex, who spoiled the evening of the first of April, mood and nerves. It was not funny.