8mm film scanner Kotokino Mark IV

Okay. I sort of promised some time back that I won’t be publishing a new version of the 8mm scanner, after I had converted it to use a single lens reflex (SLR) camera instead of a digital pocket camera. But then I decided to do just one more modification, because keeping the camera stable wasn’t easy when it was resting on a horizontal bed.  But here it is!

I decided to rotate the system so that the film runs horizontal and the camera is perched above it on a 3D printed  stand. This way the camera’s weight is keeping it stable. It meant a redesign of almost all of the 3D printed parts, so this time I made the set complete and uploaded it to Thingiverse, should anyone want to grab the parts and start experimenting. I’ll also give the schematics and Arduino code for that purpose.

The Box

The box is made of floor laminate. It’s easy to get and cheap, yet durable. I designed the corners so that the corner dimensions are independent of the box size. My box is 30 * 40 * 20 cm and it works nice. You need some height to it, because the lamp arrangement needs at leat 12 cm of height – you have to put the lamp away from the film so as not to bring out film grain. 

The Kotokino Mark IV

The black tape is eye candy – not having a laminate cutter or a bandsaw I got the edged sawed off almost neatly. But with the corners, it’s really sturdy and works perfect for the needs.

The Camera

My sons sold me a hand-me-down Canon 1000D, an entry-level camera. I then went online and got a macro reverser ring. With that installed, you can just screw it in the filter thread and attach its bayonet to the camera frame. Before doing that, it’s a good idea to set the aperture to f/8 by first setting it in the camera, then pressing the test button, and with the button pressed, removing the lens. This helps you get better depth of field.

My lens is a standard 18-55 mm focal length zoom. I set it at 24mm, because going all the way to 18 mm makes the image I grab from the film frame fill the entire frame in the SLR. That makes it hard to adjust the location of the film frame, and even with the zoom at 24mm, I get a nice 3000 pixel wide and 2100 pixel high image. That is then scaled down in final editing, because I am not aiming at HD video.

The good thing about SLRs is that they all have a remote shutter jack. This makes it very easy to create a system that grabs a picture when the frame is in place.

The switch is in the open position here – the white bar moves with the film gate

The switch wires lead to a 2.5mm mono jack, and even the polarity doesn’t matter – when the switch closes, the camera takes a picture. To minimize jitter of the system, and to enable 22 shots per minute, the mirror must be moved into the permanent up position. In the Canon that happens when you press the SET button.

In this picture you can also see the white bar that is attached to the hook of the film gate. The frame size is 4.3mm x 3.5mm, hence movement is delicate. I couldn’t recreate that accuracy except by buying a broken Bolex camera, disassembling it, and attaching a servo to the film gate to replace the clockwork of the camera.The rotation is smooth, but there is a small cam that makes the white part move up and down. When up, it takes the picture, and film is moved when the part is down.

The camera battery has to be replaced by a system that powers it directly and not via battery, because at best the camera can get 700 images per charge, and there are 4,000 in one film. This time I didn’t print a whole camera battery replica, but just two bars of 5 cm length, the ends of which I wrapped in wire and led the wires out from the battery compartment.

The Arduino and the Power

The Arduino code was very much simplified from the previous one, because I no longer needed to govern the camera via a hacked USB port. Therefore I only have this in the code now:

// Include servo library 
#include "Servo.h"

//set servo names
Servo myGateServo;
Servo myTransportServo;

//set variables as needed
int filmTransportPin = 6;
int filmTransportButtonDown = false;
int frameCounter = 0;
int servoPotPin = 3;
int sensorValue = 0;
float servoSpeed;

void setup() {

//enable serial monitor
// define A0 as the potentiometer pin
pinMode(A0, INPUT);
// Attach gate servo signal to pin10
// Attach transport servo signal to pin8

void loop() {
// This sets the film gate servo speed 1585 = 23 frames/min
// just wait for 10 milliseconds
// read the input on analog pin 0:
sensorValue = analogRead(A1);
// Convert the analog reading
//(which goes from 20 - 1023) to a servoSpeed (500 - 2000):
servoSpeed = map(sensorValue, 20, 1023, 500, 2000);
// print out the value you read:
//define a minimum value for the servo speed
if (sensorValue < 200) {
servoSpeed = 1200;
//rotate the servo at the set speed
myTransportServo.writeMicroseconds(servoSpeed); //1505

The potentiometer is merely used to govern the speed of the film takeup spool servo. It is set low when scanning and must be adjusted even lower during the run, when film accumulating on the takeup spool increases the diameter of the spool, hence it has to slow down as the scan goes on. It can also rotate full speed counterclockwise for easy film rewind.

This is the wiring:

You need to click on it to see it all.

Power is delivered via a 12V/2A supply. It is then split four ways using buck down regulators to arrive at 5V for the Arduino, 6V for the servos, 8.3 V for the camera and 12V for the lamp. I led the lamp via the same system even if it doesn’t need toning down, because all four elements have a separate switch. This enables me to pause by turning off the servos, or reboot the Arduino or camera if need be.

The Lamp and the Film Aperture

The lamp is now a 12V halogen with a 3400 K color temperature. This matches one of the white balance profiles on the camera, which removes the need to adjust images in Blender when I assemble the 4,000 separate images into a video file.

The light is rigged under the top of the box. There is a piece of 80 gram copy paper to act as a light disperser. I have tried different paper weights, but that regular copy paper seems to do well. There is a 10mm hole on top of which I have printed a film trough:

The first, short version of the film trough

The film trough is now a little longer, because I had to make it wider due to the splicing of the film at the middle. There is always a splice, because 8mm film is 16 mm film shot once, rotated, shot on the other side, then split along the middle and spliced to have 8mm film of twice the original length. The new, wider but longer trough keeps it aligned better.

The lengthwise alignment is now managed through moving the film gate assembly along the film. This way I can start the film run, wait until the first frames appear, and move the entire film gate and servo assembly lenghtwise. After this it is easy to focus the camera, and then just run the system. Grabbing 4 minutes of film, theoretically some 4,200 frames, takes about 2½ hours.

In Conclusion

This project has been a really interesting one. You need to remember I had not seen a live Arduino when I started this work, so I was teaching myself as I went. Getting a servo to turn, a switch to be read, getting it all synchronized has been most educating, and has had direct consequences on my teaching.

There is now a course called Innovation and Project Work (10 ECTS points, so rather large), in which students are encouraged to take on a real life problem of their own and design a solution to it. Quite a few teams have used Arduino, or lately, ESP32, to produce a real life manifestation of their idea. I call this IBL, Innovation based learning, as a step further from PBL, Problem based learning. I have seen a marked increase in student motivation when the issue to solve doesn’t come from the teacher, but from the students’ own innovation and idea harvesting processes. The motivation that some teams have exhibited on this course far exceeds any other course I have presented in nearly 20 years of teaching at Haaga-Helia University of Applied Sciences.

This was manifested in my mistake on one course implementation, where the students needed a microchip that could take in eight bits from eight sensors, then turn that into one byte to send to Arduino, and I gave them a chip that worked the exact opposite. For two weeks, they tried to get the chip to work, so when I realized my own mistake with the chip and confessed to it, I fully expected them to lynch me for two weeks of wasted time. Instead, they said, no problem, give us the other chip. It worked (of course) and the team just went on as if nothing had happened. This is their final product, a true work of art:

The best practices from the Innovation course were taken a step further when we fielded a new course, called IoT Experimental Project Course (5 ECTS), where the students take what they learned before and apply the processes and tools to an Internet of Things project. Some of the ideas there are really creative, and the will of the students to see their IoT device work has been great to see.

Epilogue: the Name of the Scanner

My father started documenting life in May 1956. He first rented a camera, which was common in those times. He bought his own camera, a Bolex D8LA, in 1962 and used it to shoot almost 7 hours of film between 1962 and 1975. When he passed away in 2008, I acquired the camera and all the related things, because I was the only one who had used it in the 1970s besides my father. My brother and I had the entire set of films scanned professionally, and got more than 130 gigabytes of video files. I have shot film since 2011, usually one roll per summer.

The original films we then donated to the Helsinki City Museum, along with the scans, because most of the material depicts the life of a family of a civil servant in Helsinki. They were overjoyed to get such a load of high grade films, as they called the lot. We have been working with them since that time, reviewing the films and providing background information, location data, and person identification, which will all bring even more value to the films.

I still use the camera. I had it serviced because one of the lenses was stuck due to lack of use – it’s the tele lens, rarely used because it is really a tele. All other features worked, incredibly even the exposure meter. You can still get film these days. There was a cache of Agfa stock around, which was then relabeled and sold by a few vendors, but that stock ran out a year or so ago. So, at the moment, you can get film from this site. Black and white is cheap easy to get from Fomapan, at around 15 euros per roll and 25 euros for development, but color is expensive at 75 euros per 4 minutes including development.

Using the camera is important to me, because it was such a important part of my father’s interests. The video below shows how my mother was employed by my father to do opening titles – I can recognise her handwriting, and it is her hand that appears. Kotokino Mäyränkivi means the Mäyränkivi Home Movies Company, Mäyränkivi being the name of the building we lived in in the 1950 and 1960s in Helsinki.

Hence, the scanner is called Kotokino Mark IV.

Kotokino Mäyränkivi


0 thoughts on “8mm film scanner Kotokino Mark IV”

  1. This system is simply amazing! I am going to try to build one. Thank you very much for taking the time to share this wonderful project.
    If I understand correctly, you still have to manually decrease the speed of the servo connected to the takeup spool during scanning, is that right?
    In the first version, you had a “film transport switch” that would close if the film moved too fast after the gate and went too tight. Why did you replace it with a potentiometer?
    I was wondering if it would be possible to use a laser sensor to get the system fully automatic. Let’s say you let the film loose behind the takeup spool and when the film goes tighter, it passes in front of the laser sensor that sends a signal to stop the rotation of the servo for a certain amount of time so that the film gets loose again. What do you think?

    1. Hi there and thanks! It’s been a fun project.

      I decided to take out the tightness switch at the same time I took out the code for governing the camera. The SLR has a remote jack so it was easy to simplify everything. The potentiometer makes it easy to rewind the film too by turning it anticlockwise. No I just adjust the speed of the takeup spool to account for the amassed film diameter getting larger as it runs.

      As for lasers governing the takeup spool, I don’t see it very easy, as the laser would have to view the film sideways and it’s a very narrow image that way.

      1. Great job – I am highly interested in your film gate / transport mechanism… how you are able to accuratly and precisely move the film 1 frame at a time stopping at the precise position each time so that it lines up perfectly for the next shot…. I want to do the same only with 16mm film – could use all the help I can get. BTW a contact (Interrupter switch) and a dancer arm will take care of your film tension problem.

        1. Hi! Thanks for your comment. You can see a bare-bones version of the film transport mechanism in this video:


          I took the film gate from a broken Bolex D8 and dismantled it until I could replace the clockwork system with a servo.

          I hope you enjoy the project. My work is extensively documented in this blog. As for the film jitter, I fixed it by moving the film gate next to the exposure area so the film doesn’t have any chance of bending before entering the exposure area.

      2. Hello,
        I would like to thank you for all the posts you shared on this project.
        Thanks to you, I was able to finalise my own film scanner and I also wrote a complete tutorial. Of course, your name and a link to this website are in the credits.
        The tutorial is available here: https://foundfootagedatabase.com/en/articles/tutorial_scanner.html
        This version is compatible with 16mm, 8mm and with Super 8 and has a fully automatic rewind mechanism working with an IR sensor.
        Thanks again for your help.
        Best regards,

        1. Hi Julien,
          first off, congratulations on finishing your machine! It looks sturdy and delivers good quality results.
          Also, thank you for so kindly noting me in the acknowledgments – it is great to know that my work has benefited someone else.

  2. Hi,
    Do you have more pictures to detail the project, because I would like to do this verys intersting project but I have some difficulty to make and assemble all the part.

    1. Hi! Glad to know you are interested in this. I must take pictures of this when I get access to the University again, because it is now off limits due to the Corona situation. I will post them in the blog when I get more pictures.

      1. Thank you very much for your return, I look forward to your return on the photos you can take.
        Thanks again

        1. I hope the pictures solved your issues. Don’t hesitate to contact me if I can be of more use.

          1. Yes, your pictures are very interresting,
            I have another mechanism to move the film, I will try to adapt it to your project.

  3. How did you mount the camera? I need tomount a lens/machine vision camera assembly to look down a projector I’m using but I am at a loss of modular, machano type stuff that can be assembled into a precise and solid mount.

    1. I have all the parts custom built, modeled in a 3D environment called Blender, then 3D printed using PLA material. See the latest blog post as for how I mount the camera.

      You may want to have someone model you the requisite parts and print them out. It isn’t expensive anymore, and modeling is easy for stuff like this. Blender is also open source and free.

  4. Heikki, i was following this article since a year ago or year and a half, and now i am feel ready to start it by my own. It takes me a lot of time to understand how to implement it. Nevertheless it’s very good documented, it’s hard for me because i am not so familiarized with the electronics, i read a lot of times all the stages and now i am beginning to understand better, looked all the versions that takes to improve it. The next step will be acquire all the components and then start to build it up. And let’s do one more Kotokino 8mm scanner. Will let you know how it will be.
    Thank you for be an inspiration for many people around the world to preserve old film material.

    1. Hi Daniel, thank you very much for your kind words. I am still making small improvements to the film feed system, so stay tuned for updates when I get it perfected. I am very happy and impressed that you want to create a scanner based on my work. I know of two or three others who are working on this project. If I can be of assistance, mail me and we will discuss.

      Best of luck!

  5. Hi, thank you for sharing this project and for telling its story telling about your father and mother. It’s moving. I have a similar story, from Italy.
    I’ll try to build the Koto Kino markIV with my brother now. Thank you 🙂

    1. Hi Ruben,

      Many thanks for your kind words! I know of a few people around the world who have been inspired by this project and are about to build something similar.

      Please stay in touch in case I can be of assistance.

  6. Hi Heikki,

    Not sure why my previous reply is not posted here, perhaps I did something wrong?
    Anyway, another attempt to get my reply posted….

    It’s wonderful to see you created such a nice machine. You inspired me a lot as I was struggling with the camera/optics part of the design.
    But based on your design, I just picked up a second hand Canon EOS 1100D with 18-55mm std lens and a macro reverse mount adaptor ring.
    Only question now is if you can explain in a bit more detail your description (from this part of the blog) :
    “My sons sold me a hand-me-down Canon 1000D, an entry-level camera. I then went online and got a macro reverser ring. With that installed, you can just screw it in the filter thread and attach its bayonet to the camera frame. Before doing that, it’s a good idea to set the aperture to f/8 by first setting it in the camera, then pressing the test button, and with the button pressed, removing the lens. This helps you get better depth of field.”

    Where is that ‘test button’ you refer to (which button to use on the camera)?
    To let me set the aperture to f/8 and then press this famous button to remove the lens…..

    Thanks in advance,


  7. Hi Heikki,

    Thank you so much for such quick and clear reply 🙂
    Once things come together let me post an update here.

    Best regards,


  8. bonjour Heikki
    j’ai admiré votre travail et sa simplicité .
    j’ai réalisé un telecinema avec un ancien projecteur , à la place de l’appareil foto j’ai utilisé un microscope usb de chez aliexpress et cela donne de très bon resultat, mais je voudrais en refaire un autre avec votre système car beaucoup plus simple.
    il me faudrait les cotes de la griffe qui entraine le film et des 2 cames qui entraine cette griffe ou un scan de ses pièces

    1. SVP veuillez me demander en anglais, car les traductions automatiques ne sont pas intelligibles et je ne connais pas le français.

  9. The google translator gives me this in english

    hello heikki

    I admire your work and its simplicity.
    I made a telecinema with an old projector, instead of the camera I used a usb microscope from aliexpress and it gives very good results, but I would like to do another one with your system because much more simple.
    I would need the dimensions of the claw which drives the film and the 2 cams which drive this claw or a scan of its parts
    thank you

    1. Ah, much better 🙂 sorry for not serving in French.

      My system has a claw from a broken Bolex C8 which I bought off eBay, and paid 8 euros for it.

      The axle is just a 3D printed part that fits the gear on the cam axis.

      I didn’t try to make it myself, I thought it better to get one and just replace the clockwork with a servo.

  10. A clever design! I’d be inclined to build my as a 16mm version. I have 2 Woverine 8 & S8 scanners that work fairly well. If you ever decide to design and build a 16mm version, please let me know. If for sale, maybe I’d buy it.

    1. Thank you for your kind words! It’s actually a very easy build, if yo have access to the film transport mechanism. I took mine out of a broken Bolex D8 from Ebay, so I’d imagine if you source a similar part, you could essentially scale up the relevant parts and printer the system. The code only needs to run a servo, the trigger is just a manual wire grounded by a switch when the frame is in place.

Leave a Reply

Your email address will not be published. Required fields are marked *


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