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

videodoctor

New Tinkerer
Jan 8, 2026
50
23
8
@0dan0 not sure if this is where i should be putting effort, but I'm on the hunt for setting the default 656x480 capture to 1600x1200. so far, all of the memory reads and writes via UART that i'm trying don't change what i'm seeing here:

Code:
ipl getimepath 0

P1: SW:0 Num:0 H:-559038737 V:-559038737 LOFS:-559038737 FMT:-559038737
    SW:0 Cur 0xdeadbeef
P2: SW:1 Num:6 H:656 V:480 LOFS:656 FMT:102
    BUF0 Y0xa2c7b9b0 U0xa2ce0db0 V0x00000000
    BUF1 Y0xa2d137b0 U0xa2d78bb0 V0x00000000
    BUF2 Y0xa2dab5b0 U0xa2e109b0 V0x00000000
    BUF3 Y0xa2e433b0 U0xa2ea87b0 V0x00000000
    BUF4 Y0xa2edb1b0 U0xa2f405b0 V0x00000000
    BUF5 Y0xa2f72fb0 U0xa2fd83b0 V0x00000000
    SW:1 Cur 0xa2f72fb0
P3: SW:0 Num:0 H:16827392 V:-2146868292 LOFS:-2127089396 FMT:-2146868292
    SW:0 Cur 0xdeadbeef
 

0dan0

Active Tinkerer
Jan 13, 2025
391
536
93
@videodoctor Hopeful this version doesn't crash immediately. The resolution setting code is now C code rather than hand assembly. All updates on https://github.com/0dan0/4reels (see res.c and crop.c) We will need to find setdate() which is at 0x0693a0 in non-D types.

For Type D it will not (yet) modify the size, so on boot you should see:
ERR:AF_Open() #Register AF event table.
--->>> mode=4
size :840 632
new sze:1600 1200
corner :692 392
new crn:312 108


If it doesn't crash, you should be able to resize and move the frame via the menus:

sFrameParams[guiFlimType].Offset_Y =-5
Info.IdxSP8OUT=3
corner :702 418
size :800 600
new crn:382 98
new sze:1440 1080
proc:1440 1080
sFrameParams[guiFlimType].Offset_Y =-6
Info.IdxSP8OUT=3
corner :702 408
size :800 600
new crn:382 88
new sze:1440 1080
proc:1440 1080


If this works, I need to know the range of sizes and x/y offsets type D supports.
 

Attachments

  • FWDV280-D.zip
    5.5 MB · Views: 7

videodoctor

New Tinkerer
Jan 8, 2026
50
23
8
@videodoctor Hopeful this version doesn't crash immediately. The resolution setting code is now C code rather than hand assembly. All updates on https://github.com/0dan0/4reels (see res.c and crop.c) We will need to find setdate() which is at 0x0693a0 in non-D types.

For Type D it will not (yet) modify the size, so on boot you should see:
ERR:AF_Open() #Register AF event table.
--->>> mode=4
size :840 632
new sze:1600 1200
corner :692 392
new crn:312 108


If it doesn't crash, you should be able to resize and move the frame via the menus:

sFrameParams[guiFlimType].Offset_Y =-5
Info.IdxSP8OUT=3
corner :702 418
size :800 600
new crn:382 98
new sze:1440 1080
proc:1440 1080

sFrameParams[guiFlimType].Offset_Y =-6
Info.IdxSP8OUT=3
corner :702 408
size :800 600
new crn:382 88
new sze:1440 1080
proc:1440 1080


If this works, I need to know the range of sizes and x/y offsets type D supports.
@0dan0 , on test build 004, here's the boot output:

Code:
ERR:AF_Open() #Register AF event table.
Id=0
Mode=1
Id=0
Mode=1
Id=0
Mode=1
size   :1452 1076
new sze:1452 1089
corner :466 84
new crn:466 78


But the GUI freezes and I can't go into capture mode.
 

0dan0

Active Tinkerer
Jan 13, 2025
391
536
93
@0dan0 , on test build 004, here's the boot output:

Code:
ERR:AF_Open() #Register AF event table.
Id=0
Mode=1
Id=0
Mode=1
Id=0
Mode=1
size   :1452 1076
new sze:1452 1089
corner :466 84
new crn:466 78


But the GUI freezes and I can't go into capture mode.
It is odd that is stopped. The current code is assuming a 4x3 capture.

As 1452 / 1076 is 1.349, the calculated new height is not what something expecting. It doesn't like odd sizes, so 1089 for new height might be an issue. All in C now.

void res_mod(void)
{
register uintptr_t s1val asm("s1");
uint32_t *scanSize = (uint32_t *)s1val;

char* format_old_offsets = (char *)0x8033b020;
char* format_new_offsets = (char *)0x8033b0f0;
char* format_old_sizes = (char *)0x8033b010;
char* format_new_sizes = (char *)0x8033b0e0;

uint32_t width = scanSize[0x40 >> 2];
uint32_t height = scanSize[0x44 >> 2];
uint32_t x_off = scanSize[0x38 >> 2];
uint32_t y_off = scanSize[0x3c >> 2];

int32_t new_width = width;
volatile int* reelType = (int *)0x80340000;
if(*reelType < 4)
new_width = (width-440)*4; // Math good for A thru C, not for D

if (1600 < new_width) new_width = 1600;
int32_t new_height = (new_width*3)>>2;
int32_t new_x_off = (int)x_off + (width>>1) - (new_width>>1);
int32_t new_y_off = (int)y_off + (height>>1) - (new_height>>1);
if(new_x_off < 0) new_x_off = 0;
if(new_y_off < 0) new_y_off = 0;
scanSize[0x40 >> 2] = new_width;
scanSize[0x44 >> 2] = new_height;
scanSize[0x38 >> 2] = new_x_off;
scanSize[0x3c >> 2] = new_y_off;

if(*reelType < 4)
{
console(format_old_sizes, width, height);
console(format_new_sizes, new_width, new_height);
console(format_old_offsets, x_off, y_off);
console(format_new_offsets, new_x_off, new_y_off);
}
else
{
consoleD(format_old_sizes, width, height);
consoleD(format_new_sizes, new_width, new_height);
consoleD(format_old_offsets, x_off, y_off);
consoleD(format_new_offsets, new_x_off, new_y_off);
}

return;
}


You can remove the calculation and have it only print and so it should go on.
 

0dan0

Active Tinkerer
Jan 13, 2025
391
536
93
in the rbn, search on res.c and crop.c

This is where the res.c binary goes (bytes in blue.)
1769551950999.png


This where crop.c binary goes:
1769552035424.png
 

videodoctor

New Tinkerer
Jan 8, 2026
50
23
8
Hmmm... well, here's the code I compiled:

Code:
#include <stdint.h>

//extern void console(const char *ctx, int a, int b);
extern void consoleD(const char *ctx, int a, int b);

void res_mod(void)
{
    register uintptr_t s1val asm("s1");
    uint32_t *scanSize = (uint32_t *)s1val;

        char* format_old_offsets = (char *)0x8033b020;
        char* format_new_offsets = (char *)0x8033b0f0;
        char* format_old_sizes = (char *)0x8033b010;
//      char* format_new_sizes = (char *)0x8033b0e0;

    uint32_t width = scanSize[0x40 >> 2];
    uint32_t height = scanSize[0x44 >> 2];
    uint32_t x_off = scanSize[0x38 >> 2];
    uint32_t y_off = scanSize[0x3c >> 2];

//    int32_t new_width = width;
//      volatile int* reelType = (int *)0x80340000;
//      if(*reelType < 4)
  //      new_width = (width-440)*4;  // Math good for A thru C, not for D

//    if (1600 < new_width) new_width = 1600;
//    int32_t new_height = (new_width*3)>>2;
//    int32_t new_x_off = (int)x_off + (width>>1) - (new_width>>1);
//    int32_t new_y_off = (int)y_off + (height>>1) - (new_height>>1);
//    if(new_x_off < 0) new_x_off = 0;
//    if(new_y_off < 0) new_y_off = 0;
 //   scanSize[0x40 >> 2] = new_width;
 //   scanSize[0x44 >> 2] = new_height;
 //   scanSize[0x38 >> 2] = new_x_off;
 //   scanSize[0x3c >> 2] = new_y_off;

//      if(*reelType < 4)
 //   {
   //     console(format_old_sizes, width, height);
     //   console(format_new_sizes, new_width, new_height);
       // console(format_old_offsets, x_off, y_off);
       // console(format_new_offsets, new_x_off, new_y_off);
 //   }
 //   else
   // {
        consoleD(format_old_sizes, width, height);
      //  consoleD(format_new_sizes, new_width, new_height);
        consoleD(format_old_offsets, x_off, y_off);
        //consoleD(format_new_offsets, new_x_off, new_y_off);
    //}

        return;
}

int main(void)
{
    res_mod();

    return 0;
}


and while it didn't crash, the unit is frozen on the main menu page, and this is the output starting with the ERR:AF_Open():

Code:
ERR:AF_Open() #Register AF event table.
Id=0
Mode=1
Id=0
Mode=1
Id=0
Mode=1
size   :1452 1076
corner :466 84
Id=0
Mode=1
ERR:IPL_SIEClkCBFlowC() SIEclk = 240000000
CHK: 1026, IME_IQparam
CHK: 696, IPE_IQparam
Id=0
Mode=1
CHK: 24, IPL_SIESetOB_FCB
ERR:IPL_SIESetCAVIG_FCB() CA VIG Setting not ready
ERR:AF_Tsk() #Entered AF_Tsk
Id=0
Mode=1
Id=0
Mode=1
ERR:PStore_OpenSection() Section not found, name: AWBD, op: 0x1
ERR:AWB_Init() KGain = 100 100
 no CB2222222
MULTIREC_OFF!!!!!!!!!!
MEDIAREC_VER_3_0!
 TEMPSTART OK!!
ERR:IPL_FCB_Alg3DNR() ^G3DNR on..
ERR:IPL_FCB_AlgWDR() ^GIPL_FCB_AlgWDR = 6..
fileid:0
 

0dan0

Active Tinkerer
Jan 13, 2025
391
536
93
Code:
...
size   :1452 1076
corner :466 84
Id=0
Mode=1
ERR:IPL_SIEClkCBFlowC() SIEclk = 240000000
CHK: 1026, IME_IQparam
CHK: 696, IPE_IQparam
Id=0
Mode=1
CHK: 24, IPL_SIESetOB_FCB
ERR:IPL_SIESetCAVIG_FCB() CA VIG Setting not ready
ERR:AF_Tsk() #Entered AF_Tsk
Id=0
Mode=1
Id=0
Mode=1
ERR:PStore_OpenSection() Section not found, name: AWBD, op: 0x1
ERR:AWB_Init() KGain = 100 100
 no CB2222222
MULTIREC_OFF!!!!!!!!!!
MEDIAREC_VER_3_0!
 TEMPSTART OK!!
ERR:IPL_FCB_Alg3DNR() ^G3DNR on..
ERR:IPL_FCB_AlgWDR() ^GIPL_FCB_AlgWDR = 6..
fileid:0

My Type C.
fileid:9
ERR:IPL_FCB_AlgIE() ^GWDR OFF..
MULTIREC_OFF!!!!!!!!!!
MULTIREC_OFF!!!!!!!!!!
pathid=0
on=1
pathid=1
on=0
ERR:IPL_FCB_AlgIE() ^GWDR ON..
Mode {MAIN} Open end
Info.IdxSP8OUT=3
corner :702 378
size :800 600
new crn:382 58
new sze:1440 1080
proc:1440 1080

The fileid:9 seem related the number MP4s in the folder, so I'm not concerned with the 0 vs 9 difference.

You should compare with stock firmware what step is next on Type D.

Is it failing before? ERR:IPL_FCB_AlgIE() ^GWDR OFF.. If that should be there, look for that

Does the motor start?

I have had no luck finding a Type D yet, all the ebay units are older.
 

videodoctor

New Tinkerer
Jan 8, 2026
50
23
8
With one hand impaired for typing (i got a xiaflex injection in my right pinky finger yesterday and it's wrapped to my ring finger), I can't type as fast so work today was slow. I tried a few different ways to compile your res.c into your latest RBN, but I keep getting stalls or crashes. Here's the latest full boot output. The motor doesn't start before the crash:

Code:
RHello, eCos world!
usb_PowerOnInit: enter
usb_PowerOnInit: exit
dma freq = 376 MHz
cpu freq = 429 MHz
CPU/OCP/APB = 429/429/80 Mhz, DMA = 376 Mhz
Clk verify PASS

=========================================================
  NT96650 SDK
  Copyright (c) 2012 Novatek Microelectronic Corp.
=========================================================
Hello, World!
> TestProtection begin
 EDesEn_Crypt pass
SC CRC PowerOnCheck: OK!
Enter DSC
bind - begin!
bind - end!
event loop - begin!
ERR:ramdsk_setParam() No Implement! uiEvt 1
Init!
System_OnStrgInit_FWS(): ^M LD_BLOCK=16384
System_OnStrgInit_FWS(): ^M FW_MAX_SIZE=003C0000
System_OnStrgInit_FWS(): ^MFW_validate-update:System_OnStrgInit_FWS(): ^M ok
ERR:PartLoad_Init() ^RLoaded Addr 0x(80E08DAC)!= Verified Addr 0x(80106000)
ERR:xFwSrv_Err() -21
ERR:System_OnStrgInit_FWS() Init failed!
Init!
[LOAD-FW]
Total Sections = 10
   Section-01: Range[0x80000000~0x801055F0] Size=0x001055F0 (LOAD)
System_OnStrg_DownloadFW(): ^M P1_LOAD_SIZE=00E08DAC, TIME=1753780
System_OnStrg_DownloadFW(): ^MPL_check_Ld:
System_OnStrg_DownloadFW(): ^M PL_EN=00000000
System_OnStrg_DownloadFW(): ^M LZ_EN=00000000
ERR:IPL_GetCmd() -E- Cmd fail 9

---------------------------------------------------------
LD VERISON: LD658
FW --- Daily Build: Aug 22 2025, 11:52:51
---------------------------------------------------------

dispdev_openIFDsi(): Original SrcClk(297)Mhz
dispdev_openIFDsi(): DEVDSI: Chg PLL2 to(480)Mhz
ERR:DrvLCDState() state=0x06 not support!
[DOUT1]: device = [Display_LCD], state = [STOP], mode = [0x0d, 864x480]
[DOUT2]: device = [N/A], lockdevice = [N/A]
-11-GPIOMap_LCDStatus------
-22-GPIOMap_LCDStatus------
dispdev_closeIFDsi(): DEVDSI: Chg PLL2 from (480)MHz to(297)MHz
dispdev_closeIFDsi(): DEVDSI: Chg PLL2 to(297)Mhz done
dispdev_openIFDsi(): Original SrcClk(297)Mhz
dispdev_openIFDsi(): DEVDSI: Chg PLL2 to(480)Mhz
ERR:Ux_GetRootWindow() wnd not created
ERR:idec_setVideoWinAttrEx() Vertical Scaling down ratio over 2!
ERR:idec_setOsdWinAttrEx() Vertical Scaling down ratio over 2!
ERR:Ux_GetRootWindow() wnd not created
ERR:Ux_GetRootWindow() wnd not created
ERR:fs_ParingDiskInfo() Parsing PBR FAIL
.ERR:fs_StorageDrvInit() Parsing Disk info fail.
ERR:FST_CMDSysInit() File system init fail and will idle. -259
ERR:Ux_GetRootWindow() wnd not created
ERR:PStore_OpenSection() Section not found, name: SERIAL_NUM, op: 0x3
 Read SN:
 uhInfoSize:  1652
ERR: Save Date:Y=2022,M=1,D=1
ERR: Save Time:H=0,M=0
ERR: Save DateFmt:0
ERR: Save TimeFmt:0
ERR: Curr Date:Y=2022,M=1,D=1
ERR: Curr Time:H=0,M=0,S=0
ERR: Curr DateFmt:0
ERR: Curr TimeFmt:0
 Parameter error in Get_SceneModeValue()
MULTIREC_OFF!!!!!!!!!!
MULTIREC_OFF!!!!!!!!!!
pathid=0
on=1
pathid=1
on=0
SetupExe_OnWifiSetSSID CarDV_
UINet_SetSSID(): CarDV_
DNUI_FuncADJInit FlimType 0
ERR:DrvNANDState() state=0x03 not support!
ERR:DrvNANDState() state=0x03 not support!
Mode {MAIN} Open begin
CHK: 50, ModeMain_Open
ERR:xDispSrv_Err() -29
ERR:FileDB_GetInfoByHandle() This Handle is not created(0)
ERR:FileDB_GetInfoByHandle() This Handle is not created(0)
fileid:0
MULTIREC_OFF!!!!!!!!!!
MULTIREC_OFF!!!!!!!!!!
pathid=0
on=1
pathid=1
on=0
ERR:IPL_GetCmd() -E- Cmd fail 9
CHK: 203, UIMenuCommonItem_1x3_OnOpen
Mode {MAIN} Open end
ERR:IPL_GetCmd() -E- Cmd fail 9
Info.IdxSP8OUT=18
CHK: 234, UIMenuCommonItem_1x3_OnCustom1
CHK: 239, UIMenuCommonItem_1x3_OnCustom1
Mode {MAIN} Close begin
Mode {MAIN} Close end
Mode {MAIN} Open begin
CHK: 50, ModeMain_Open
ERR:pll_selectClkSrc() (0x0, 0x4) not supported
1.0-----------------------------true
Id=0
Mode=1
ERR:Init_OS04D10() OS04D10_init...
Init_OS04D10, DATALANE: 0 1 2 3
MULTIREC_OFF!!!!!!!!!!
MULTIREC_OFF!!!!!!!!!!
pathid=0
on=1
pathid=1
on=0
ERR:NH_Custom_SetFolderPath() setFolderPath id error 2!
ERR:NH_Custom_SetFolderPath() setFolderPath id error 3!
ERR:IPL_SetDZoom() IPL_SetDZoom fail (Current Mode = 0)
ERR:ChgMode_OS04D10() ChgMode_OS04D10 to 1...
csi_setEnable(TRUE)=0
CHK: 560, ChgMode_OS04D10
csi_waitInterrupt(CSI_INTERRUPT_FRAME_END)=65536
CHK: 562, ChgMode_OS04D10
pll_setPLLEn(PLL_ID_6, TRUE)=0
ERR:AF_Open() #Register AF event table.
Id=0
Mode=1
Id=0
Mode=1
Id=0
Mode=1
*** CPU Exception!!! cause 0x0b: Co-processor Unusable exception (also: matherr exception)
epc  - 0x80426fd4
$ra  - 0x80338fc0
$sp  - 0x81309bf8
$fp  - 0x81309c48
general registers:
     $zero : 0x40240000       $at : 0x80e10da0       $v0 : 0x00000054       $v1 : 0x000001d2
       $a0 : 0xffffff4c       $a1 : 0xffffff38       $a2 : 0x00000a04       $a3 : 0x000004dc
       $t0 : 0xffffff70       $t1 : 0x01010101       $t2 : 0x81308640       $t3 : 0x00000012
       $t4 : 0x00000000       $t5 : 0x80f9beec       $t6 : 0x000001ff       $t7 : 0x81309b90
       $s0 : 0x00000000       $s1 : 0x81309ef8       $s2 : 0x81309c68       $s3 : 0x80e07b50
       $s4 : 0x00000000       $s5 : 0x81309d30       $s6 : 0x00b009c0       $s7 : 0x81309dec
       $t8 : 0x00000002       $t9 : 0x00000002      null : 0x81309c18      null : 0x80fa0000
        gp : 0x80e10da0        sp : 0x81309bf8        fp : 0x81309c48        ra : 0x80338fc0
co-processor registers:
   entrylo : 0x0000010d    status : 0x0000002c    vector : 0x0100c403       epc : 0x80426fd4
     cause : 0x00000000  badvaddr : 0x9080002c    hwrena : 0x800e45d9      prid : 0x00019655
   entrylo : 0x016e8081
Task(id)   :
  IPL_Tsk(26)
stack      :
    range(0x81308620 - 0x8130a37c)
call stack :
    :
  abort (failed to backtrace $pc!)
*** CPU Exception in Task[]! cause=0x0000000b, addr=0x80426fd4

the crash is within the memory space of where I'm inserting the res.c binary. I've done the typical removal of ELF headers, etc that I've done with your other C++ mods.
 

videodoctor

New Tinkerer
Jan 8, 2026
50
23
8
The last version you showed was working, what did you change. Can I see the .rbn?
@0dan0 , this is my latest version with just consoleD calls. No crash in this version, but still freezes. Which memory address did you use as a hook to call this code?
 

Attachments

  • FWDV280-D.zip
    2.7 MB · Views: 5

Deano

New Tinkerer
Jul 24, 2025
8
11
3
My 2 cents here: feel free to continue sharing the technical info here in thread. While you two are engaging quite a bit above my head, I think it's fine to keep it documented here. I grab some popcorn and am pleased to see some fine work being done to support the latest hardware. The occasional summary posts are helpful markers as to the progress being made.

For those who are new to this thread: for context, 0dan0 and Deano are actively working toward developing a custom firmware for the latest Reels hardware (we're calling Version D). If you are the new owner of a recently manufactured Reels scanner, and you are brave enough regarding firmware updates and testing, feel free to engage in this process to provide specific, technical feedback to those who are pouring their time and energy into this community effort.
I think you mean 0dan0 and videodoctor are working on the custom firmware. I'm not a SW/FW expert at all!:giggle:
 

videodoctor

New Tinkerer
Jan 8, 2026
50
23
8
@0dan0, not sure I posted this before or we specifically discussed this, but this serial console command shows a 656x480 image size:

Code:
ipl getimepath 0

P1: SW:0 Num:0 H:-559038737 V:-559038737 LOFS:-559038737 FMT:-559038737
        SW:0 Cur 0xdeadbeef
P2: SW:1 Num:6 H:656 V:480 LOFS:656 FMT:102
        BUF0 Y0xa2c7b9b0 U0xa2ce0db0 V0x00000000
        BUF1 Y0xa2d137b0 U0xa2d78bb0 V0x00000000
        BUF2 Y0xa2dab5b0 U0xa2e109b0 V0x00000000
        BUF3 Y0xa2e433b0 U0xa2ea87b0 V0x00000000
        BUF4 Y0xa2edb1b0 U0xa2f405b0 V0x00000000
        BUF5 Y0xa2f72fb0 U0xa2fd83b0 V0x00000000
        SW:1 Cur 0xa2d137b0
P3: SW:0 Num:0 H:-559038737 V:-559038737 LOFS:-2127089396 FMT:-559038737
        SW:0 Cur 0xdeadbeef
> > ipl getimepath 0

P1: SW:0 Num:0 H:-559038737 V:-559038737 LOFS:-559038737 FMT:-559038737
        SW:0 Cur 0xdeadbeef
P2: SW:1 Num:6 H:656 V:480 LOFS:656 FMT:102
        BUF0 Y0xa2c7b9b0 U0xa2ce0db0 V0x00000000
        BUF1 Y0xa2d137b0 U0xa2d78bb0 V0x00000000
        BUF2 Y0xa2dab5b0 U0xa2e109b0 V0x00000000
        BUF3 Y0xa2e433b0 U0xa2ea87b0 V0x00000000
        BUF4 Y0xa2edb1b0 U0xa2f405b0 V0x00000000
        BUF5 Y0xa2f72fb0 U0xa2fd83b0 V0x00000000
        SW:1 Cur 0xa2d137b0
P3: SW:0 Num:0 H:-559038737 V:-559038737 LOFS:-2127089396 FMT:-559038737
        SW:0 Cur 0xdeadbeef

and this command shows some interesting data too:

Code:
ipl getcapmaxrawinfo 0

IPL(0) max raw width = 1936 height = 1076 lineoffset = 536870672
IPL(0) max raw ImgBit = -1 ImgPix = -1

Google's AI explained the first command as follows (and of course might not be accurate):

Command: ipl getimepath 0
This is a command-line interface (CLI) instruction within the device's software.
  • ipl: Likely stands for Image Processing Library or similar, indicating the subsystem being accessed.
  • getimepath: A function to retrieve the configuration and status of the Image Measurement Engine (IME) paths.
  • 0: The argument passed to the function, likely specifying which instance or set of paths to query.

Output Structure: P1, P2, P3
The output is divided into three "Paths": P1, P2, and P3, suggesting the system can process image data through multiple parallel pipelines (e.g., one for main output, one for a thumbnail, one for analytics).
Each path has common status fields:
  • SW:: Software switch/status (0 = Off/Disabled, 1 = On/Enabled).
  • Num:: Number of buffers or frames being managed.
  • H: / V:: Horizontal and Vertical resolution (width and height).
  • LOFS:: Likely "Line Offset" or "Luminance Offset".
  • FMT:: Format of the image data (e.g., YUV format code).
  • Cur:: The current buffer address being used (a memory pointer).

Analysis of the Data:
Path P1 and P3: Disabled or Errored
  • SW:0: The pipeline is currently inactive or disabled.
  • Num:0: No buffers are currently in use.
  • H: -559038737, V: -559038737, etc.: These are very large negative numbers (often represented as 0xdeadbeef in the Cur field for P1). These values are typical "magic numbers" used in debugging to signify uninitialized, invalid, or "dead" memory regions/variables. They indicate that this path is not configured correctly or is not currently operational.
Path P2: Active and Operational
  • SW:1: This pipeline is active.
  • Num:6: The system is managing 6 image buffers.
  • H:656 V:480: The active resolution is 656x480 pixels. This is a common resolution for video feeds or sub-streams in surveillance systems.
  • FMT:102: This is a specific integer code representing the image format (likely a variation of YUV or NV12).
  • BUF0 through BUF5: The memory addresses for each of the six image buffers are listed (e.g., Y0xa2c7b9b0). These addresses start with 0xa2c..., indicating they are valid memory locations in the device's RAM where image data is stored.
  • Cur: 0xa2d137b0: This indicates that BUF1 is the current buffer actively being used or displayed/transmitted at the time of the command.
 

videodoctor

New Tinkerer
Jan 8, 2026
50
23
8
Also, if I use the ipl setimepath command, I'm able to change the preview resolution to 320x240, and visibly changes the UI to show a smaller preview image:

Code:
> ipl setimepath 0 2 0 1 0

IPL(0) ime path 2 0 1 0
> ipl getimepath 0

P1: SW:0 Num:0 H:-559038737 V:-559038737 LOFS:-559038737 FMT:-559038737
        SW:0 Cur 0xdeadbeef
P2: SW:1 Num:6 H:320 V:240 LOFS:320 FMT:102
        BUF0 Y0xa2c7b9b0 U0xa2ce0db0 V0x00000000
        BUF1 Y0xa2d137b0 U0xa2d78bb0 V0x00000000
        BUF2 Y0xa2dab5b0 U0xa2e109b0 V0x00000000
        BUF3 Y0xa2e433b0 U0xa2ea87b0 V0x00000000
        BUF4 Y0xa2edb1b0 U0xa2f405b0 V0x00000000
        BUF5 Y0xa2f72fb0 U0xa2fd83b0 V0x00000000
        SW:1 Cur 0xa2edb1b0
P3: SW:0 Num:0 H:0 V:-559038737 LOFS:-2127089396 FMT:-2127089396
        SW:0 Cur 0xdeadbeef

But as soon as I start capture and check getimepath, it's back to 656x480.