Modding the Kodak Reels 8mm Film Digitizer (Firmware Hack)

Andreas

New Tinkerer
Oct 15, 2024
4
5
3
@Andreas I decided to try a Type-B to confirm it can be done with a hexeditor, without using decompiling tools like Ghidra (which what I used to find the white balance code.)

Type B users: let me know if this attachment works. It is 1600x1200 with a ~25Mb/s and a fixed (non-auto) white balance.
Thank you, i will try it tomorrow morning
 
  • Like
Reactions: 0dan0

0dan0

Tinkerer
Jan 13, 2025
49
63
18
@Mac84 I've tried to setup the serial port, but not quite there

Boot up looks like, this after a few seconds
1737695911238.png


This once unit is up running the terminal is filed with:
1737695933567.png


I used a USB to serial via Putty set to 115200 baud . Any ideas? It seems I have GND, TX, and RX all connected correctly, and there is data (nothing with RX and TX swapped.)
1737696347482.png
 

Andreas

New Tinkerer
Oct 15, 2024
4
5
3
@Andreas I decided to try a Type-B to confirm it can be done with a hexeditor, without using decompiling tools like Ghidra (which what I used to find the white balance code.)

Type B users: let me know if this attachment works. It is 1600x1200 with a ~25Mb/s and a fixed (non-auto) white balance.
...it works...
suddenly the films have color. Possibly to much yellow for films on kodacrome, for films on agfa movicrome it seems to fit.
The brightness flickering has also disminished, but has not disappeared. Probably because there is now more time for exposure...
 
Last edited:

0dan0

Tinkerer
Jan 13, 2025
49
63
18
Set the white balance is very easy, so you could make your firmware less yellow a few hexediting steps.
1737753541142.png


If you reduce the red or increased the blue, it will be less yellow.

I want to look at exposure flicker as well. I'm working to setup the serial port as that should greatly speed up finding those key parts of the firmware.
 

0dan0

Tinkerer
Jan 13, 2025
49
63
18
Hacking investigations continue. I hope the updates are enjoyed, as using this to document my steps.

I got the serial port and shell up and running, and there are a lot of really useful commands. The hacking docs @Mac84 provided is spot on.

I want to determine how much of the sensor was being used. The x and y offsets within the reframing show a range of ±24 to the image center, but the amount of coverage doesn't match the 8mm lens theory. So using the shell I run a bunch of memory dumps like this:

>mem dump 0x80000000 0x01000000 BIN1A.BIN
>mem dump 0x80000000 0x01000000 BIN1B.BIN
>mem dump 0x80000000 0x01000000 BIN1C.BIN

I had ChatGPT create a memory comparison script, so I could compare memory changes when toggle the offset within the UI. It took a while, but found in memory where the image offsets are stored. X-offset is at 0x80e09eb4 in my unit, Y-offset is at 0x80e09eb8. These are artificially limited in the UI to make it seem the lens is not too wide. The offset values limited to ±24, I can be pushed to ±73 (at maximum zoom-out, UI limited.) At -70 I can capture a frame like this.

>mem w 0x80e09eb4 0xffffffba
Movie0015.00.jpeg


This is not particularly useful, but it shows how wide the lens is. Pretty cool if you want to convert this into a 16mm scanner. As a Super8 sprocket is 0.91mm wide, I calculated the horizontal field of view of the current lens. This is about 5mm left of the frame and about the same to the right. So the HFOV is 5+8+5 = 18mm. As the target distance is 32mm, this doubly confirms an 8mm lens. I've tried a 12mm and 16mm lens without luck getting them focus, but I believe I can work that out.

Next is to remove the UI zoom limit.
 
Last edited:

Hawke

New Tinkerer
Dec 30, 2024
16
7
3
Hacking investigations continue. I hope the updates are enjoyed, as using this to document my steps.

I got the serial port and shell up and running, and there are a lot of really useful commands. The hacking docs @Mac84 provided is spot on.

I want to determine how much of the sensor was being used. The x and y offsets within the reframing show a range of ±24 to the image center, but the amount of coverage doesn't match the 8mm lens theory. So using the shell I run a bunch of memory dumps like this:

>mem dump 0x80000000 0x01000000 BIN1A.BIN
>mem dump 0x80000000 0x01000000 BIN1B.BIN
>mem dump 0x80000000 0x01000000 BIN1C.BIN

I had ChatGPT create a memory comparison script, so I could compare memory changes when toggle the offset within the UI. It took a while, but found in memory where the image offsets are stored. X-offset is at 0x80e09eb4 in my unit, Y-offset is at 0x80e09eb8. These are artificially limited in the UI to make it seem the lens is not too wide. The offset values limited to ±24, I can be pushed to ±73 (at maximum zoom-out, UI limited.) At -70 I can capture a frame like this.

>mem w 0x80e09eb4 0xffffffba
View attachment 19739

This is not particularly useful, but it shows how wide the lens is. Pretty cool if you want to convert this into a 16mm scanner. As a Super8 sprocket is 0.91mm wide, I calculated the horizontal field of view of the current lens. This is about 5mm left of the frame and about the same to the right. So the HFOV is 5+8+5 = 18mm. As the target distance is 32mm, this doubly confirms an 8mm lens. I've tried a 12mm and 16mm lens without luck getting them focus, but I believe I can work that out.

Next is to remove the UI zoom limit.
Hello 0dan0,

I used your 1st version of your firmware and it worked very well for me with the colors, so the yellowish tint was gone.
I can't wait to see what you conjure up next. Thumbs up and good luck
 
  • Like
Reactions: 0dan0

fishgee

New Tinkerer
Jan 6, 2025
9
4
3
Hacking investigations continue. I hope the updates are enjoyed, as using this to document my steps.

I got the serial port and shell up and running, and there are a lot of really useful commands. The hacking docs @Mac84 provided is spot on.

I want to determine how much of the sensor was being used. The x and y offsets within the reframing show a range of ±24 to the image center, but the amount of coverage doesn't match the 8mm lens theory. So using the shell I run a bunch of memory dumps like this:

>mem dump 0x80000000 0x01000000 BIN1A.BIN
>mem dump 0x80000000 0x01000000 BIN1B.BIN
>mem dump 0x80000000 0x01000000 BIN1C.BIN

I had ChatGPT create a memory comparison script, so I could compare memory changes when toggle the offset within the UI. It took a while, but found in memory where the image offsets are stored. X-offset is at 0x80e09eb4 in my unit, Y-offset is at 0x80e09eb8. These are artificially limited in the UI to make it seem the lens is not too wide. The offset values limited to ±24, I can be pushed to ±73 (at maximum zoom-out, UI limited.) At -70 I can capture a frame like this.

>mem w 0x80e09eb4 0xffffffba
View attachment 19739

This is not particularly useful, but it shows how wide the lens is. Pretty cool if you want to convert this into a 16mm scanner. As a Super8 sprocket is 0.91mm wide, I calculated the horizontal field of view of the current lens. This is about 5mm left of the frame and about the same to the right. So the HFOV is 5+8+5 = 18mm. As the target distance is 32mm, this doubly confirms an 8mm lens. I've tried a 12mm and 16mm lens without luck getting them focus, but I believe I can work that out.

Next is to remove the UI zoom limit.

0dan0,​

Would you share the vendor and part number of the lenses you purchased? I would like to order some and play around with them as well. On the focus problem you are seeing, is the camera/lens too close or too far away from the film? Or can you tell at this point?
 

0dan0

Tinkerer
Jan 13, 2025
49
63
18
As the lenses are only $10-15ea I have purchased range to test, all seem to suffer the same issue. The current lens mount is too short, the lens needs to be closer to the film to achieve focus. I have some M12 mount extensions on the way, as I would prefer not to have to move the camera.
 

0dan0

Tinkerer
Jan 13, 2025
49
63
18
Small break through. I have determine one location when the active sensor region initialized and add some new code for a wider FOV, and therefore more active pixels from the sensor (ready for a lens swap.)

LCD is freaking out, this is one of the better frames.
1738019120663.png


I found before the above hack the maximum image to the processing pipeline is 820x500 pixels. I tried push this to 1280x960 and 1600x1200, LCD was unstable for both. When I press record the capture region re-initializes to the smaller area (this is other location I still need to find.) If this instability on the LCD is what data looks like, that will bad new for high-res encoding. I'm hoping it something and encode will be good.
 

domb84

New Tinkerer
Jan 27, 2025
2
0
1
Hi, i attempted to use the firmware for the m127 clone which appears to be the same as a Reflecta or Somikon machine. However when I put the firmware on the SDcard and reboot nothing happens. Has anybody had any success with this machine? I suspect it may just need a different file name but theres very little documentation on it.
 

0dan0

Tinkerer
Jan 13, 2025
49
63
18
Today's progress report. I'm now encoding the wider image (clip below). The largest area I can scan is 1920x1440 (rather than 820x500), yet the video is still offset. This suggests that the video 1920x1440 is windowed from the sensor's 3280x2464. GoPro HERO HD (same era, similar tech) used to crop for 1080, 720p was binned with a FOV 170°, whereas 1080p30 FOV was only 127° (using the center of the lens.) The scanner is doing the same thing, although this is technically better than binning the sensor, the lens performance will now need to be better. This lens is likely pretty crappy, you can see some barrel distortion to the edge of the film frame, the replacement glass will need to be way sharper.

The final issue is the color is very wrong. The console is spitting out errors like
ERR:_SIE_ChgPar() CFA need to be R,
what I believe means the wrong Bayer phase, reading blue or green, when I should be reading red. This happens at any resolution I'm hacking this too, so not a good hack yet. Nothing has said yet, "this can't be done", either a new lens + FW, or moving the camera closer + FW, increasing the effective resolution of the scans 2 to 4X (pixel count.)

 

0dan0

Tinkerer
Jan 13, 2025
49
63
18
While it did manage to get the capture more centered, still haven't found what will impact the Bayer phase to restore the color. Any change to the size is causing this error.

Seems I can't get away with cheap M12 lenses and the minimal focal distance is wrong. I've found a couple of excellent lenses, a macro 12mm lens rated to 10MP (needed as we crop to the middle 1/3") https://shop.scorpion.vision/products/m12-lens-12mm-f2-10 and a 8.5mm https://shop.scorpion.vision/products/m12-lens-8-5mm-f2-5 (while this is not much narrower than the current lens, but physically longer, so it will be closer to the film for better magnification through proximity.) Unfortunately the international shipping is has me scrambling for a US equivalent (yet to find.)

 

Joe90

New Tinkerer
Jan 13, 2025
20
4
3
Hi, i attempted to use the firmware for the m127 clone which appears to be the same as a Reflecta or Somikon machine. However when I put the firmware on the SDcard and reboot nothing happens. Has anybody had any success with this machine? I suspect it may just need a different file name but theres very little documentation on it.
Hey @domb84

I just saw your post now. The Kodak Reelz firmware won't be flashed by your machine because, as you correctly figured out, it's looking for a different file name. Please don't attempt to flash your M127 machine with any Reflecta/Somikon/Wolverine firmware. Although the M127 is made by Winait, it's not compatible with any of the other machines as far as I know.

Best,
Joe
 

Hawke

New Tinkerer
Dec 30, 2024
16
7
3
While it did manage to get the capture more centered, still haven't found what will impact the Bayer phase to restore the color. Any change to the size is causing this error.

Seems I can't get away with cheap M12 lenses and the minimal focal distance is wrong. I've found a couple of excellent lenses, a macro 12mm lens rated to 10MP (needed as we crop to the middle 1/3") https://shop.scorpion.vision/products/m12-lens-12mm-f2-10 and a 8.5mm https://shop.scorpion.vision/products/m12-lens-8-5mm-f2-5 (while this is not much narrower than the current lens, but physically longer, so it will be closer to the film for better magnification through proximity.) Unfortunately the international shipping is has me scrambling for a US equivalent (yet to find.)

View attachment 19855
Hello,
have you tried changing the vertical resolution only? Then the Bayer pattern, if it is RGGB for example, should remain (unless the sensor is rotated, in which case you would only have to try changing the horizontal resolution). If a resolution change in both directions leads to a deviation of the filter model, there seems to be a fixed starting position for the original resolution somewhere.
Just a thought :) I am fascinated by your work, good luck.
 

0dan0

Tinkerer
Jan 13, 2025
49
63
18
I was able to get this to work: original on the lens, 8mm with extension tube on the right. However as this is cheap, non-macro glass, the focused image was soft/mushy and not an improvement (I will only show improving steps.) I have the correct macro lens arriving sometime on Monday.
1738347705308.png


@Hawke I just tried setting the size on only one axis, but I still get the bayer error, but interestingly only one, not two of the "ERR:_SIE_ChgPar() CFA need to be R," report. Could be a useful clue.
 
  • Like
Reactions: fishgee

domb84

New Tinkerer
Jan 27, 2025
2
0
1
Hey @domb84

I just saw your post now. The Kodak Reelz firmware won't be flashed by your machine because, as you correctly figured out, it's looking for a different file name. Please don't attempt to flash your M127 machine with any Reflecta/Somikon/Wolverine firmware. Although the M127 is made by Winait, it's not compatible with any of the other machines as far as I know.

Best,
Joe

Curious. It looks incredibly similar. Even the menu UI appears to be the same. Is it worth me getting a chip programmer and dumping the firmware? I assumed they were all based off the same hardware with (at most) slightly tweaked firmware.

I'm assuming these are all variations on the Winait DV188N and DV180N? The only difference between those seems to be the 7" reel capability of the 188.
 
Last edited:

Hawke

New Tinkerer
Dec 30, 2024
16
7
3
Curious. It looks incredibly similar. Even the menu UI appears to be the same. Is it worth me getting a chip programmer and dumping the firmware? I assumed they were all based off the same hardware with (at most) slightly tweaked firmware.

I'm assuming these are all variations on the Winait DV188N and DV180N? The only difference between those seems to be the 7" reel capability of the 188.
Hello domb84,
even if they look the same on the outside, keep in mind that even the Kodak model has at least three different hardware revisions with customized and non-interchangeable firmware.
You can try whether you can make the adjustments to the resolution with the firmware read out and the Novatek tools. This way, your firmware would remain original, at least in its essential components
 
  • Like
Reactions: Joe90

0dan0

Tinkerer
Jan 13, 2025
49
63
18
I was about to give up, it took about 150 builds to allow the use of the lens' full FOV, without the color going wrong.

New lens should be arriving Monday. I still feel the image pipeline is still losing resolution somehow, so maybe none of this will work out. The challenge has been fun.

Fixed-Movie0001.WIP107-sharpen-neg1.0.jpg