Hacking the Kodak Reels 8mm Film Digitizer (New Thread)

  • Please can you read through and vote on the following proposition for changes to the board structure by clicking here.

videodoctor

Tinkerer
Jan 8, 2026
74
27
18
@0dan0 I'm not sure where you're at with diagnosing the hardware issues you've having, but I'm happy to look into the crash if you want to share the current RBN and C++ files you're in dev with. As I mentioned in an earlier post, specifically with the histogram, I had a lot of crashes that seemed to be related to where and how histogram data was being calculated.
 

hasi

New Tinkerer
Nov 3, 2025
8
6
3
I am still in utter admiration for the energy and dedication you all are putting into fabricating a firmware that helps us getting a decent picture quality out of a seemingly unsatisfying consumer product! 🤩 Thank you for that!

I am currently into the hardware side of things and I tried an el cheapo solution for enhancing the resolution my Kodak is getting with its stock lens.

Simply Because I didn't want to spend another 100 € for a new lens, I thought about just bringing the camera closer to the film strip.

After testing a possible distance, where I still was able to focus, I settled on 12 mm.

Which is about the distance between the screw holes of the camera mount. That way I only had to drill four new holes into the metal plate of the scanning assembly.
View attachment 26612

After remounting the camera and connecting it again (don't worry, the ribbon cable should be long enough), I could measure how much of the plastic case below it I had to cut away. (about 5 - 6 mm)

Finally I had to modify the camera cover to fit over the lower hanging lens.

The result now looks like this (cover removed for illustration purposes :) )

View attachment 26614

View attachment 26615

With everything in place I refocused the stock lens to match the new height.

Compared to the effort I had put in, I am pretty satisfied with the final result, considering both resolution and overall look of the modification.

Here is a comparison of before and after - both in 1600x1200 (max zoomed out)

The effective resolution is now at 1152x864, with a small margin around the actual frame.
View attachment 26618


Here is another screenshot of the capture. Given that the actual movie isn't the highest quality, I am still happy with how it turned out
View attachment 26619

Here's my final summary:

Advantages :D
  • sourcing of a fitting new Lens unnecessary (cost saving)
  • absolutely no 3D-Printer or other special tools needed,
    just a sharp 4 mm drill, a screwdriver and a knive or a dremel
  • minimal modification of the case (time saving)
  • all can be done within about one hour
  • no change of the overall aesthetic of your scanner
  • mostly easily revertable, if in the future you should decide to go the full mile (with a new lens)

Disadvantages :cautious:
  • not the full possible resolution of 1600x1200 (only 1152x864)
  • the lid of the transport mechanism doesn't open completely
    (but still high enough to easily thread the movie through)


I would love to hear your comments about my approach. For me personally it's totally sufficient, especially in connection with the modded firmware and considering the cost and time savings.
Thank you for your contribution to improve the Kodak Reels! I just finished the lowering of the standard lens and at the right corner the machine says "Res 1264x948" The most delicate work was the cabling. The ones of the fan broke off and I soldered them back on, because the conector is so tiny, I could not use it any more. With a Qp of 22, I could scan 4.1 Gb.
 

0dan0

Active Tinkerer
Jan 13, 2025
419
561
93
@videodoctor The RBN wouldn't be useful as a development base, as I just masking-out code to see what was causing capture the issues, not improving the system yet. I did learn that type D is almost a complete rebuild. Fortunately, some of the hacks are less needed, like the resolution changes and the buffer address hooks.
 
  • Like
Reactions: videodoctor

videodoctor

Tinkerer
Jan 8, 2026
74
27
18
@videodoctor The RBN wouldn't be useful as a development base, as I just masking-out code to see what was causing capture the issues, not improving the system yet. I did learn that type D is almost a complete rebuild. Fortunately, some of the hacks are less needed, like the resolution changes and the buffer address hooks.
Understood. I would like any insights you might have @0dan0 on adjustments to Qp---is that easy enough to swap out as a constant?
 

ThePhage

Tinkerer
Oct 30, 2024
53
51
18
It's exciting to see ongoing tinkering of this scanner, including more and more innovations with lens modification efforts and other custom tweaks.

For folks who are new to this thread, please note that I continue to update a user guide that details 0dan0's Custom Firmware for this scanner. More recently, I have included near the top a list of links to posts where users have shared details about their Lens Modification Efforts. Hope this is helpful to you and you tinker with your scanner!
 

ThePhage

Tinkerer
Oct 30, 2024
53
51
18
Reels Type D development has hit a roadblock. My unit stopped working, it was working but crashed during a capture, and will not power on now. I think the crash is likely unrelated, this be a hardware failure. Any ideas? Nothing is output over the serial port.

View attachment 26652
Would you consider some assistance from the community to help purchase another D unit?
 
  • Like
Reactions: Federico

larryc39

New Tinkerer
Jan 2, 2025
29
19
3
I found single-piece orderable lens mounts that are the same size as our original. If you're replacing the lens it might be just as well to buy one of these and swap it at the same time to save frustration.

This one might be slightly taller than stock, I believe stock is 8.5mm, this one is 12mm.

PT-LH008P Plastic M12 Lens Holder 18mm Hole spacing​


Or this one is about 17mm tall, it might eliminate the need for the spacer piece in the assembly.

Also, my Rev. C unit's camera board didn't fit well on 0dan0's bracket - the ears of the stock and modified lens mounts rubbed the rails and the components were slightly taller than the provided cutout. I re-modeled a new version of the upper spacer half bracket, it can be printed with less concern for removing the supports cleanly and it allows for a slightly larger camera mount with some minimal spacing.

1770587807173.png
 

Attachments

  • Top Part Remastered R1.zip
    34.9 KB · Views: 9

0dan0

Active Tinkerer
Jan 13, 2025
419
561
93
Maybe my D-type is not fully recovered. The motor starts but will not stop.

MULTIREC_OFF!!!!!!!!!!
MEDIAREC_VER_3_0!

TEMPSTART OK!!
ERR:IPL_FCB_Alg3DNR() ^G3DNR on..
ERR:IPL_FCB_AlgWDR() ^GIPL_FCB_AlgWDR = 6..
fileid:0
ERR:IPL_FCB_AlgIE() ^GWDR OFF..
MULTIREC_OFF!!!!!!!!!!
MULTIREC_OFF!!!!!!!!!!
pathid=0
on=1
pathid=1
on=0
Ret_SxCmdERR:IPL_FCB_AlgIE() ^GWDR ON..
_AddTable = SxCmd_AddTable(awbOs04D10)=36
Mode {MAIN} Open end
f:/DrvExt/DrvExt_src/ModelExt/DV280N/DxOutput_Motor.c PwmMotor_RunPOS 332 0
ERR: pwm_wait() not opened yet!
ERR: pwm_pwmDisable() not opened yet!
f:/DrvExt/DrvExt_src/ModelExt/DV280N/DxOutput_Motor.c PwmMotor_RunPOS 343 1
f:/DrvExt/DrvExt_src/ModelExt/DV280N/DxOutput_Motor.c PwmMotor_RunPOS 360 1

ERR: pwm_open ret 0!
ERR: pwm_set freq = 25000.000000 hz rpm = 117.187500
ERR: pwm_set ret 0!
ERR: pwm_en ret 0!
Info.IdxSP8OUT=8
Id=0
Mode=1
Id=0
Mode=1
Info->sieCropHini = 714 Info->sieCropVini = 360 !!!!!!!!!!!!
Ret_SxCmd_AddTable = SxCmd_AddTable(awbOs04D10)=-3
CHK: 545, Display_LCDBacklightCtrlOn
battery changed 4**********



When I try record:

currItem = 0
SelectItem=0
fileid:0
ERR:IPL_FCB_AlgIE() ^GWDR OFF..
MULTIREC_OFF!!!!!!!!!!
MULTIREC_OFF!!!!!!!!!!
pathid=0
on=1
pathid=1
on=0
ERR:IPL_FCB_AlgIE() ^GWDR ON..
Info.IdxSP8OUT=8
Id=0
Mode=1
Id=0
Mode=1
Info->sieCropHini = 714 Info->sieCropVini = 360 !!!!!!!!!!!!
M---release--
M---Rec press--
ERR: uiClusterSize 65536 MOVIE_REC_MIN_CLUSTER_SIZE 16383
CHK: 2190, UIFlowWndMovie_Tab_Rec_OnKeyShutter2
fileid:0
ERR:IPL_FCB_AlgIE() ^GWDR OFF..
MULTIREC_OFF!!!!!!!!!!
MULTIREC_OFF!!!!!!!!!!
pathid=0
on=1
pathid=1
on=0
ERR:IPL_FCB_AlgIE() ^GWDR ON..
Info.IdxSP8OUT=8
Id=0
Mode=1
Id=0
Mode=1
Info->sieCropHini = 714 Info->sieCropVini = 360 !!!!!!!!!!!!
M---release--
M---Rec press--
CHK: 2205, UIFlowWndMovie_Tab_Rec_OnKeyShutter2

-A->Motor_IsMotorOn = 1 ,for waitting motor stop!
ERR:UIFlowWndMovie_OnTimer() Record400MinTimeOut 0
ERR:UIFlowWndMovie_OnTimer() Record400MinTimeOut 0
ERR:UIFlowWndMovie_OnTimer() Record400MinTimeOut 0
ERR:UIFlowWndMovie_OnTimer() Record400MinTimeOut 0


So the record will not start as the motor is still running. This is with stock firmware.
 

larryc39

New Tinkerer
Jan 2, 2025
29
19
3
@Deano I was trying to install your printed cover with 0dan0's lens spacers and the extra piece I built to fit my camera board. It seems the ribs in your cover are pretty close and interfere with installing the cover in some instances. Could you modify it to push them out wider, maybe to the point the clips are? E.g. pushing the blue parts shown below further apart.

1770641766578.png
 

videodoctor

Tinkerer
Jan 8, 2026
74
27
18
Maybe my D-type is not fully recovered. The motor starts but will not stop.

MULTIREC_OFF!!!!!!!!!!
MEDIAREC_VER_3_0!

TEMPSTART OK!!
ERR:IPL_FCB_Alg3DNR() ^G3DNR on..
ERR:IPL_FCB_AlgWDR() ^GIPL_FCB_AlgWDR = 6..
fileid:0
ERR:IPL_FCB_AlgIE() ^GWDR OFF..
MULTIREC_OFF!!!!!!!!!!
MULTIREC_OFF!!!!!!!!!!
pathid=0
on=1
pathid=1
on=0
Ret_SxCmdERR:IPL_FCB_AlgIE() ^GWDR ON..
_AddTable = SxCmd_AddTable(awbOs04D10)=36
Mode {MAIN} Open end
f:/DrvExt/DrvExt_src/ModelExt/DV280N/DxOutput_Motor.c PwmMotor_RunPOS 332 0
ERR: pwm_wait() not opened yet!
ERR: pwm_pwmDisable() not opened yet!
f:/DrvExt/DrvExt_src/ModelExt/DV280N/DxOutput_Motor.c PwmMotor_RunPOS 343 1
f:/DrvExt/DrvExt_src/ModelExt/DV280N/DxOutput_Motor.c PwmMotor_RunPOS 360 1

ERR: pwm_open ret 0!
ERR: pwm_set freq = 25000.000000 hz rpm = 117.187500
ERR: pwm_set ret 0!
ERR: pwm_en ret 0!
Info.IdxSP8OUT=8
Id=0
Mode=1
Id=0
Mode=1
Info->sieCropHini = 714 Info->sieCropVini = 360 !!!!!!!!!!!!
Ret_SxCmd_AddTable = SxCmd_AddTable(awbOs04D10)=-3
CHK: 545, Display_LCDBacklightCtrlOn
battery changed 4**********



When I try record:

currItem = 0
SelectItem=0
fileid:0
ERR:IPL_FCB_AlgIE() ^GWDR OFF..
MULTIREC_OFF!!!!!!!!!!
MULTIREC_OFF!!!!!!!!!!
pathid=0
on=1
pathid=1
on=0
ERR:IPL_FCB_AlgIE() ^GWDR ON..
Info.IdxSP8OUT=8
Id=0
Mode=1
Id=0
Mode=1
Info->sieCropHini = 714 Info->sieCropVini = 360 !!!!!!!!!!!!
M---release--
M---Rec press--
ERR: uiClusterSize 65536 MOVIE_REC_MIN_CLUSTER_SIZE 16383
CHK: 2190, UIFlowWndMovie_Tab_Rec_OnKeyShutter2
fileid:0
ERR:IPL_FCB_AlgIE() ^GWDR OFF..
MULTIREC_OFF!!!!!!!!!!
MULTIREC_OFF!!!!!!!!!!
pathid=0
on=1
pathid=1
on=0
ERR:IPL_FCB_AlgIE() ^GWDR ON..
Info.IdxSP8OUT=8
Id=0
Mode=1
Id=0
Mode=1
Info->sieCropHini = 714 Info->sieCropVini = 360 !!!!!!!!!!!!
M---release--
M---Rec press--
CHK: 2205, UIFlowWndMovie_Tab_Rec_OnKeyShutter2

-A->Motor_IsMotorOn = 1 ,for waitting motor stop!
ERR:UIFlowWndMovie_OnTimer() Record400MinTimeOut 0
ERR:UIFlowWndMovie_OnTimer() Record400MinTimeOut 0
ERR:UIFlowWndMovie_OnTimer() Record400MinTimeOut 0
ERR:UIFlowWndMovie_OnTimer() Record400MinTimeOut 0


So the record will not start as the motor is still running. This is with stock firmware.
@0dan0, I can confirm that the ERR:UIFlowWndMovie_OnTimer() Record400MinTimeOut 0 is "normal" for stock D. I would often get continuous motor on some firmware changes I tried to make, but not with stock D firmware. This is strange---sounds like a self-check/diagnosis is failing. Do any settings get cached/stored elsewhere in the hardware? I'm wondering that if a past mod firmware you tried left some lingering settings around.
 
Last edited:

videodoctor

Tinkerer
Jan 8, 2026
74
27
18
@Deano I was trying to install your printed cover with 0dan0's lens spacers and the extra piece I built to fit my camera board. It seems the ribs in your cover are pretty close and interfere with installing the cover in some instances. Could you modify it to push them out wider, maybe to the point the clips are? E.g. pushing the blue parts shown below further apart.

View attachment 26713
I believe @0dan0 posted a revision of @Deano 's dover to fit his lens mods better. @Deano has a different lens spacer in place if I remember correctly.
 

videodoctor

Tinkerer
Jan 8, 2026
74
27
18
@videodoctor The RBN wouldn't be useful as a development base, as I just masking-out code to see what was causing capture the issues, not improving the system yet. I did learn that type D is almost a complete rebuild. Fortunately, some of the hacks are less needed, like the resolution changes and the buffer address hooks.
@0dan0 and the rest of the community, is it worth putting together of list of what's desirable to change in the stock firmware D and what's less needed now?

From what I can, the only mod you've made that's not as necessary is the 1600x1200 adjustment, but the rest seem worth porting. I'd like to have a more organized effort on how we can work with each other to not repeat each's trials and errors. I'd be willing to be manage a backlog of tasks on whatever platform the community would like---I haven't tried Plane yet, but it integrates with Github/issue management. I have Scrum master and Product Owner certifications from my career work.
 
Last edited:

0dan0

Active Tinkerer
Jan 13, 2025
419
561
93
@Deano I was trying to install your printed cover with 0dan0's lens spacers and the extra piece I built to fit my camera board. It seems the ribs in your cover are pretty close and interfere with installing the cover in some instances. Could you modify it to push them out wider, maybe to the point the clips are? E.g. pushing the blue parts shown below further apart.

View attachment 26713
1770656440445.png


I fixed that in my mods.
 

Attachments

  • ReelsLensModuleCoverV5.zip
    86 KB · Views: 7
  • Like
Reactions: videodoctor

0dan0

Active Tinkerer
Jan 13, 2025
419
561
93
@0dan0 and the rest of the community, is it worth putting together of list of what's desirable to change in the stock firmware D and what's less needed now?

From what I can, the only mod you've made that's not as necessary is the 1600x1200 adjustment, but the rest seem worth porting. I'd like to have a more organized effort on how we can work with each other to not repeat each's trials and errors. I'd be willing to be manage a backlog of tasks on whatever platform the community would like---I haven't tried Plane yet, but it integrates with Github/issue management. I have Scrum master and Product Owner certifications from my career work.

The 1600x1200, is still better than upscaling to 1728x1296 (1.3333:1). Although the scanning aspect ratio is 1.35:1, not 1.333, and the maximum resolution is 1452x1076. So you could try setting 1452x1076 for the encoder resolution (no scaling), or maybe 1456x1080 (more H264 compression friendly, but some scaling.)

I'm going to take a break from the type D for a while.

Priorities-
1) quality features: fixed white-balance, bitrate above 30Mb/s, fix the dynamic range metadata in the AVCC payload in the MP4 header (this should be the same code, and Exposure smoothing
2) control features:, wb, exposure, fps
3) enhancements: auto stop, histogram, exposure stats
 
Last edited:

videodoctor

Tinkerer
Jan 8, 2026
74
27
18
Ok, thanks for that input, @0dan0. I've started to use the BSim plugin with Ghidra and the AE function I was working with before in stock D does seem to have a lot in common with the A/B/C AE function. I'm hopeful with at least that, but I haven't identified the expo_iso address yet.