Adding A Digital Back To A Sweet Old Camera

[Eugene] wanted to use his vintage Leica M4 as a digital camera, and he had a Canon EOS 350D digital camera sitting around unused. So he Frankensteined them together and added a digital back to the Leica’s optical frontend.

It sounds simple, right? All you’d need to do is chop off the back from the EOS 350D, grind the digital sensor unit down to fit into exactly the right spot on the film plane, glue it onto an extra Leica M4 back door, and you’re set. Just a little bit of extremely precise hackery. But it’s not even that simple.

Along the way [Eugene] reverse-engineered the EOS 350D’s shutter and mirror box signals (using a Salae Logic probe), and then replicated these signals when the Leica shutter was tripped by wedging an Arduino MiniPro into an old Leica motor-winder case. The Arduino listens for the Leica’s bulb-flash signal to tell when the camera fires, and then sends along the right codes to the EOS back. Sweet.

There are still a few outstanding details. The shutter speed is limited by the latency in getting the signal from the Leica to the 350D back, so he’s stuck at shutter speeds longer than 1/8th of a second. Additionally, the Canon’s anti-IR filter didn’t fit, but he has a new one ordered. These quibbles aside, it’s a beautiful hack so far.

What makes a beautiful piece of work even more beautiful? Sharing the source code and schematics. They’re both available at his Github.

Of course, if you don’t mind completely gutting the camera, you could always convert your old Leica into a point and shoot.

30 thoughts on “Adding A Digital Back To A Sweet Old Camera

    1. or: lets take these two cameras that we dont use, make something totally useless, but in the process learn about how both of them work, learn how to use stuff like the logic analizer, oscilloscope, IR filters etc…

      most things that i have tinkered with in my life are totally useless. but they taught me how to debug faulty equipment, how to debug faults that i caused myself, where to look for them first, how to program microcontrollers, how to use an oscilloscope, a multimeter, etc….

      in theory, i learned about all these in the uni, but let me go ask how many of my non-tinkering-hipster-minded fellows still remember how to hook up a multimeter….

      whereas i havve to turn down job opportunities on a monthly basis.

      1. i mean it is one thing to learn about the mathematical basis of aliasing in a class, an a whole other to watch your face in horror, trying to grasp why the o-scope shows something completely different from what you think you programmed in your microcontroller, going over your code with the microcontroller datasheet in your hand, and not sleeping for 3 days because you have to completely rebuild your robot for a competition because of weight issues.

    2. Hi!

      The 350D wasn’t working, and the conversion is fully reversible within a minute. Also I remember studying predicate calculus as part of my engineering curriculum many moons ago, but if you think my logic skills are lacking your input is welcome :)


      1. Don’t mind the haters. They don’t actually build anything themselves; they just criticize those that do. Those of us who actually read the article understood that you used a spare back for the conversion and obviously it is reversible. I’ve got an old Leica that sits around unused too and I’ve often thought of adding a digital back to it. Nice work!

  1. Hey Eugene,

    About the 1/8 second minimum shutter speed…. I am looking at your source code and info, but I am not quite sure where the limitation is imposed. Something I did notice is the use of Arduino’s digitalWrite() methods. From experience, these are very inefficient; if you do a bit of raw AVR-GCC instead, you can speed up the command by a very large margin.

    Just use bit banging on the port itself: i.e. PORTB |= _BV(PORTB6) will turn on pin B6, PORTB &= ~_BV(PORTB6) will turn it off again.

    I am not sure if that is the cause of your latency issues, but it is something to think about. If you have any questions feel free to contact me via


    1. Hi,

      Thanks for advice!

      I used Arduino macros/IDE as setting up my own toolchain for this fairly straightforward code seemed unnecessary. I supposed the delay would not be on the order of milliseconds though, at least didn’t notice any appreciable difference on the scope in my test runs. Could as well bit-bang anyway, thanks for the hint.

      The latency comes from unavoidable 65ms delay of Canon sequence prior to actual capture. Leica horizontal shutter traverses film gate in 25ms, so with APS-C sized sensor I can count on about 5ms. Then, the bulb flash socket fires 25ms prior to shutter going in motion, so I have ~30ms total. I hope to tweak the escapement in camera regulating the bulb delay even further the next time I open it.

      This is still useful for some of my purposes though. I run a lathe and convert random lenses to Leica once in a while, so could come handy for checking the focal plane.


      1. Ahh, that makes sense. You are right, digitalWrite is not milliseconds… more like microseconds when it should be just hundreds of nanoseconds. I don’t remember the exact timings, but when I was making my electric drum set (where any extra latency makes the thing unplayable), digitalWrite vs bit banging was an important factor that made the difference between a workable system and a waste of money.

        Anyway, I neglected to say this in my first comment, but congrats on a very nice hack. You have mad machining skills! ;-)


  2. OK. Now invent 110 and 126 cartridges to convert all those old cameras to digital. There were a few SLR 126 cameras, notably one in the Retina series by Kodak, which could use most of the Retina 35mm SLR lenses though with some features not supported.

    Cheap 110 and 126 cameras + digital cartridge = Digital Lomography.

    1. I think it’s a great idea. I have a Pentax k1000 that I love (35mm) with lenses. And film is getting pretty darn expensive. I wouldn’t mind having a digital version. No real hipster reasoning, I just like the simple controls. All I want or need is quick, manual control of focus, exposure and shutter speed. There’s a ton of menus in my way on most digital cameras.

  3. I find it really strange that Hackaday is the only place read the term “hipster” often. I find it amusing those, who it’s reasonable to assume would self describe themselves as a hacker use hipster pejoratively. Because we who are DIY, remain a subculture of the mainstream society that uses, hipster to talk down a subculture they can’t understand or like. As for this build in all likely hood the old Leica and the newer Canon both had a landfill in their future. The same could be true for the offspring of their unholy marriage, but Eugene garnered valuable experience

    1. Hipsterism is fundamentally about using consumption to define your identity. You are the bands you like, the artisanal pickles you buy, the obsolete bicycle you inexplicably ride. It’s commodity fetishism wearing the flayed skin of counterculture. While there’s obviously overlap with so-called “maker culture”, anyone who creates things to use or to learn and not to define themselves is absolutely right to look down on hipsters as a category.

  4. “…, so he’s stuck at shutter speeds longer than 1/8th of a second” THIS is why I prefer my “old timey” 35mm cameras over digital – of any kind- from phones to ???. Granted, not all digitals have THAT lag but they do have a lag all the same. By the time I have the gadget ready to capture the image, what I wanted to capture in digital form is long gone. Say I want to capture the image of a license plate on a car that is pulling away from my wrecked car… with my point and shoot it is likely I would be able to actually you know, capture that image. Unless you are a professional photographer with your gear all set up and ready- with multiple lenses and cameras at the READY and POWERED ON (battery life..?) good luck trying to get some fantastic pics of sports in action or just about well, anything!

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.