📜 ⬆️ ⬇️

Unfunny April Fool's joke from the developers of Magic Lantern

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:

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:

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.

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.

Source: https://habr.com/ru/post/254769/


All Articles