Unlimited possibilities : Hack that lets users run Linux kernel on Canon EOS DSLR 60D, 600D, 7D, 5D2 and 5D3 models
Taking beautiful snaps is the only function of Canon EOS cameras but what if you can hack it to run Linux kernel on it. Magic Lantern has done just that.
They have hacked Canon EOS DSLR and run the Linux kernel on it. This was possible because the Canon EOS camera models have a processor (ARM 946E-S) and RAM (256MB/512MB depending on the model.) The Magic Lantern guys first accessed the Canon EOS bootloader and ported latest Linux kernel (3.19) onto it.
Starting from our recent discovery about display access from bootloader, we thought, hey, we could now have full control of the resources from this embedded computer. At this stage, we knew what kind of ARM processor we have (ARM 946E-S), how much RAM we have (256MB/512MB depending on the model), how to print things on the display (portable code), how to handle timers and interrupts, how to do low-level SD card access on select models (600D and 5D3), and had a rough idea where to start looking for button events.
They confirmed that the same binary runs on ML-enabled cameras which means that Canon EOS models 60D, 600D, 7D, 5D2 and 5D3 can be hacked using this method. They found that they could allocate all available RAM to Linux and debug directly from the camera screen.
PoC highlights
– sets up timer interrupts for scheduling
– mounts a 8 MiB ext2fs initial ramdisk
– starts /bin/init from the initrd
– this init process is a selfcontained, libc-less hello world
– next step: build userspace binaries (GUI, etc)
– mounts a 8 MiB ext2fs initial ramdisk
– starts /bin/init from the initrd
– this init process is a selfcontained, libc-less hello world
– next step: build userspace binaries (GUI, etc)
PoC Video
Thought the operating Linux on a Camera can hardly be the same as hacking computers but it opens unlimited possibilities to tech buffs and geeks to customise the Canon cameras as per their needs.