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

  • It's #MARCHintosh 2025! Join in on the fun and post your project or play with some new stuff in our #MARCHintosh 2025 thread.

0dan0

Tinkerer
Jan 13, 2025
77
102
33
I will give this a try tomorrow. Switching form QP 32 (firmware default) to 0 is overkill, really anything below 15 is. If this a fixed QP, or just a starting point, or a threshold? As the data is modulated, the QP is typically changed within limits.

Re: white balance. I had some success decompiling the code, once I worked out it was MIPS not ARM. This is old stuff. I have yet to restore the symbols to make finding the AWB easier.
 
  • Like
Reactions: Mac84

Joe90

New Tinkerer
Jan 13, 2025
23
7
3
Thank you. Can you explain what you did to modify the firmware? Since you don't have a Kodak unit to test this on, I'm very curious of the changes you may have done. Was it just to the resolution / bit rates? Because I've tried higher bit rates and it will crash during the recording process.

I've gotten close to 20-30 but no where near 50. I think there's certainly a ceiling on the limited compression routine built into these things, as demonstrated above by @0dan0

Hey @Mac84

I changed the logic of part of the firmware. To be specific, there's a function in the firmware which calculates a maximum QP value. I'm not sure if this is per frame or for the whole encoding process. This function seems to exist in the firmware of all Winait's 8mm film scanners. Anyway, there's part of that function that goes as follows:

C:
if (max_qp < 10)
  max_qp = 32;

That translates to English as: if the maximum QP value is below 10 then it should be replaced by the value 32.
The end result of this is a QP range of between 10 and 51.

The change I made was as follows:

C:
if (max_qp < 52)
  max_qp = 5;

The condition max_qp < 52 is always true because H.264 QP values are in the range 0-51. So, max_qp = 5 always gets executed. The end result of this is a QP range of between 0 (lossless) and 5. Note that the 5 value can be replaced with whatever value we would like as the maximum QP.

Best,
Joe
 

Joe90

New Tinkerer
Jan 13, 2025
23
7
3
I will give this a try tomorrow. Switching form QP 32 (firmware default) to 0 is overkill, really anything below 15 is. If this a fixed QP, or just a starting point, or a threshold? As the data is modulated, the QP is typically changed within limits.

Re: white balance. I had some success decompiling the code, once I worked out it was MIPS not ARM. This is old stuff. I have yet to restore the symbols to make finding the AWB easier.
Hey @0dan0

I didn't describe it very well in my first post. The mod changes the maximum QP so that the range of QP values is 0-5 in the QP5 firmware, 0-10 in the QP10 firmware or just 0 in the lossless firmware. The range is 10-51 in the default firmware. The Wolverine/Reflecta/Somikon scanners have similar values.

For my Somikon scanner, I ended up setting the max QP to 17 to avoid the device running out of memory during some scans. This should be less of a problem for the Kodak machines as AFAIK they have more memory than the Wolverine-like scanners.

Best,
Joe
 

0dan0

Tinkerer
Jan 13, 2025
77
102
33
Okay this is a change I likely don't need, as a have a CBR of 24Mb/s, which is plenty. The default code on Reels is

if (qp < 10) {
qp = 0x20;
}

This suggests this is a rate control for when the image is blank, to prevent an unnecessary high bitrate, and a potential overflow when the next frame is complex.

Any pointers to where white balance is?
 
Last edited:

Joe90

New Tinkerer
Jan 13, 2025
23
7
3
Okay this is a change I likely don't need, as a have a CBR of 24Mb/s, which is plenty. The default code on Reels is

if (qp < 10) {
qp = 0x20;
}

This suggests this is a rate control for when the image is blank, to prevent an unnecessary high bitrate, and a potential overflow when the next frame is complex.

You could be right but we don't want any rate control being used. We want each frame encoded with as little loss of information as possible.
When I tested the same change on my Somikon the output size grew from 100s of megabytes to gigabytes with quality to match.

In @Mac84's Wonders of Manhattan video, for example, you can still see blocking artifacts around the text/titles etc. I can guarantee you that by restricting the QP those artifacts will be gone. Although, you could be right that a saner max QP would be 15.

I'd appreciate if you could test the QP10 firmware, even if you don't think you'll need it yourself.
Any pointers to where white balance is?

I'll have a look for the instructions that can be changed to switch off Auto White Balance and Auto Exposure and tell you where they are.

Best,
Joe
 

Mac84

Administrator
Staff member
Founder
Sep 4, 2021
237
286
63
New Jersey, USA
www.mac84.net
You could be right but we don't want any rate control being used. We want each frame encoded with as little loss of information as possible.
When I tested the same change on my Somikon the output size grew from 100s of megabytes to gigabytes with quality to match.

In @Mac84's Wonders of Manhattan video, for example, you can still see blocking artifacts around the text/titles etc. I can guarantee you that by restricting the QP those artifacts will be gone. Although, you could be right that a saner max QP would be 15.

I'd appreciate if you could test the QP10 firmware, even if you don't think you'll need it yourself.


I'll have a look for the instructions that can be changed to switch off Auto White Balance and Auto Exposure and tell you where they are.

Best,
Joe
I'd be happy to try it. But can you do the same changes to the "Firmware B" file? I do not have a unit that is compatible with "C" revision firmware.
 

0dan0

Tinkerer
Jan 13, 2025
77
102
33
I'm getting closer. I've at least found where RGB gains for white balance are set (I think.)

Same leader scan, different white balance hack.

1737225617388.png
 
  • Like
Reactions: Hawke and Mac84

Joe90

New Tinkerer
Jan 13, 2025
23
7
3
I'd be happy to try it. But can you do the same changes to the "Firmware B" file? I do not have a unit that is compatible with "C" revision firmware.
Thanks for the compliment and no problem at all. I'll make the Firmware B images for you now.
 

Joe90

New Tinkerer
Jan 13, 2025
23
7
3
Hey @Mac84

Here's Firmware B with max QP set to 0,5,10 and 15.
Let me know how you get on.

Best,
Joe
 

Attachments

  • Kodak_B_QP15.zip
    3 MB · Views: 31
  • Kodak_B_QP10.zip
    3 MB · Views: 25
  • Kodak_B_QP5.zip
    3 MB · Views: 27
  • Kodak_B_QP0.zip
    3 MB · Views: 27
  • Like
Reactions: Mac84

0dan0

Tinkerer
Jan 13, 2025
77
102
33
I've worked out how to disable the Auto white balance, but now need to change the default RGB gains (way too blue.)
 
  • Wow
  • Like
Reactions: Hawke and Mac84

Mac84

Administrator
Staff member
Founder
Sep 4, 2021
237
286
63
New Jersey, USA
www.mac84.net
Hey @Mac84

Here's Firmware B with max QP set to 0,5,10 and 15.
Let me know how you get on.

Best,
Joe
Thanks Joe, I'll try these now. I assume 0 is max quality?

EDIT: I tried the QP0/QP10/QP15 on my B model and it starts flashing the firmware... but it never finishes. The screen stays black and it seems to never flash. As removing the power and SD card makes it boot normally.

Also - if you have time, can you do a set for Firmware A?

My UART serial monitor is wired into unit, so I could see it crash in real time if there's an issue. My apologies for more work, but no rush!

I've worked out how to disable the Auto white balance, but now need to change the default RGB gains (way too blue.)
View attachment 19550

This is fantastic!! :)
 
Last edited:

Joe90

New Tinkerer
Jan 13, 2025
23
7
3
Thanks Joe, I'll try these now. I assume 0 is max quality?

EDIT: I tried the QP0/QP10/QP15 on my B model and it starts flashing the firmware... but it never finishes. The screen stays black and it seems to never flash. As removing the power and SD card makes it boot normally.

Also - if you have time, can you do a set for Firmware A?

My UART serial monitor is wired into unit, so I could see it crash in real time if there's an issue. My apologies for more work, but no rush!



This is fantastic!! :)

That's weird. I used the 1440p HBR Firmware B from your Proton drive.
 

0dan0

Tinkerer
Jan 13, 2025
77
102
33
Small steps. In this test I used the green gain for all RGB channels. In white balance, green is normally unity.

 

Joe90

New Tinkerer
Jan 13, 2025
23
7
3
You're correct QP0 is max quality.
I'll try it on my model with the serial adapter to get a better understanding of where it's failing.
It might be the checksum that's not correct? I'm using Tobias' command line tools rather than the Java app.
 

Mac84

Administrator
Staff member
Founder
Sep 4, 2021
237
286
63
New Jersey, USA
www.mac84.net
You're correct QP0 is max quality.

It might be the checksum that's not correct? I'm using Tobias' command line tools rather than the Java app.
That may be it? Feel free to try using the Java version. Or direct message me the file before it gets compressed and I’ll try it with the Java app to see if it has a different result.
 

Joe90

New Tinkerer
Jan 13, 2025
23
7
3
I'll try it on my model with the serial adapter to get a better understanding of where it's failing.
That may be it? Feel free to try using the Java version. Or direct message me the file before it gets compressed and I’ll try it with the Java app to see if it has a different result.
Thanks, I downloaded the Java app from the link in your first post.
I made the modification again but this time I used Tobias' Java app to unpack and repack. The checksum needs to be calculated twice when you're using the console app :-0
I've attached the firmware images I've redone so far.
 

Attachments

  • Kodak_B_QP15.zip
    3 MB · Views: 34
  • Kodak_B_QP10.zip
    3 MB · Views: 28
  • Kodak_B_QP5.zip
    3 MB · Views: 21
  • Kodak_B_QP0.zip
    3 MB · Views: 29
  • Kodak_A_QP15.zip
    3 MB · Views: 26
  • Kodak_A_QP10.zip
    3 MB · Views: 26
  • Kodak_A_QP5.zip
    3 MB · Views: 23
  • Kodak_A_QP0.zip
    3 MB · Views: 26

Mac84

Administrator
Staff member
Founder
Sep 4, 2021
237
286
63
New Jersey, USA
www.mac84.net
Thanks! For my model A, it now successfully flashes.

But while it does try to record, and the device gives no clear errors (it even says a movie file name when you press stop) - it seems the files don't save on the SD card.

Here's the readout from the console which may provide some clues, I see a lot of errors. this was with "P0 (A)", I'll try another:
1737241362827.png
 
  • Like
Reactions: Joe90

Mac84

Administrator
Staff member
Founder
Sep 4, 2021
237
286
63
New Jersey, USA
www.mac84.net
FYI - QP10 works, but QP5, after a few moments, gives the same "ERROR!" calls in the serial monitor. It will save a file to the SD card, but it doesn't do it properly so it won't open with VLC or QuickTime.

I'll do some recordings of my regular firmware and the QP10 for direct comparisons and post some still shortly.