April Fools' joke from Magic Lantern developers

Magic Lantern (ML) is an unofficial firmware for Canon cameras, which provides enhanced functionality (for example, dual-iso, focus stacking, raw video, fine-tuning shooting parameters and much more). The firmware is installed directly on the flash-card, which allows you to painlessly remove it or update it with a simple file replacement.

There were already publications on this firmware on the hub, so I will not detail the advantages and installation procedure in detail. I’ll tell you how I got into an implicit and unhappy 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 28th.It all started when the thirst for exploring something new had accumulated to a critical mass and information was accidentally discovered on the network about the possibility of automatically shooting the focus stack on my camera. But these features required the installation of unofficial Magic Lantern firmware.

A quick search showed that:
  • current camera firmware does not support current ML builds;
  • for the 650D model there is no stable build, there are only night builds;
  • some functions of ML in 650D do not work / work crookedly;
  • the authors warn that it is possible to brick the camera with incorrect actions on the firmware.

After that, the camera was successfully upgraded to the latest official version for Canon 650D 1.04. And strictly according to the instructions, with a reset of all settings and full formatting of the card, the last Magic Lantern night build (dated March 28) was installed.

The eyes are a little rounded on the number of settings. Dual-iso, focus stacking and some other features were immediately tested. 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 raw video, as well as the new ML build. The new build was uploaded to the map (due to inexperience, only the ML catalog was updated). The recording was tested on the camera, but time was running out and I could not evaluate the quality on the PC that day. It's the end of the weekend.

April 1st With the thoughts “I will not experiment today” I’m returning from work. But curiosity is stronger than me.

I am updating ML to the latest build (the same one - from March 29, but now with a complete set). I turn it on. I'm starting to set up ... and catch the BSOD on the camera.

Shock.

BSOD says that an internal error number 0x000000aa occurred (there is no error in the numbers), a lot of text (a memory dump is ready, try to restart, check the settings, etc.) and "Your camera was bricked" (among other things).

With cold fingers, I reset through the battery, as the developer recommends.
I turn on the camera and two seconds after loading I get the same BSOD. F @ # $%!

I'm nervous. Delete ML. Everything works as usual.
With the thought that the curve is to blame for everything, I roll back to the version of March 28 (with which I spent 4+ hours).

I'm starting it up. Everything works. Good. Configure fotik again. Getting ready and immersion in the study. BSOD! WTF ?!
Reset BSOD in a minute. I format it. Reinstalling. I'm starting it up. BSOD. Shock.

I'm calm. A camera without ML is operating normally. C ML - regular random BSOD (even in idle mode with the camera turned on).

Searches by mistake do not produce results. None at all. It's empty. It’s like I’m alone with this. I'm going to the official forum. I register. I describe the problem. I'm waiting.

Quickly getting a few answers:
  • a request to make a video of how this happens (IMHO, in this situation it is pointless);
  • recommendations to follow the instructions on the screen and upload the results to the forum (results? about successful next reboot on the battery?);
  • the recommendation to roll back to the build of March 11, as the most stable version to date;
  • a couple of messages about similar errors.

Stop. I'm not the only one. The problem is fresh, but they cannot say exactly when it arose.

At first I decided to just roll back by March 11th. But having slept with this thought, I decided to dig deeper.

From March 11 to March 29, only 10 builds. Sources are available on bitbucket with full (I hope) changelog builds. 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 - Looks like some people didn't like my bad joke

So-so ... Something begins to clear up. 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: on the first of April (now.tm_mday == 1 && now.tm_mon == 3 (the third month becomes the fourth when counting from zero)) after downloading ML, the firmware starts generating a random number every second. If this number is 13 and no recording is currently being performed (thanks at least for this) - get, sign, your BSOD. And since my level of luck was critically low, I managed to catch the BSOD 5 times right after downloading the firmware.

Doubtful joke, dubious content.

April 2 Until random BSOD left 364 days.

PS: Hello to the developer Alex, who ruined the evening of the first of April, mood and nerves. It was not funny.

Also popular now: