Sync Autoexposure for Two Cameras

Autoexposure works really nicely most of the time, but especially indoors it will start to alternate between two set values. For example:

[ 3664.814707] daxc02 0-0010: daxc02_s_ctrl: V4L2_CID_COARSE_TIME - 1160
[ 3665.014769] daxc02 0-0010: daxc02_s_ctrl: V4L2_CID_COARSE_TIME - 580
[ 3665.348054] daxc02 0-0010: daxc02_s_ctrl: V4L2_CID_COARSE_TIME - 1160
[ 3665.548162] daxc02 0-0010: daxc02_s_ctrl: V4L2_CID_COARSE_TIME - 580
[ 3665.848173] daxc02 0-0010: daxc02_s_ctrl: V4L2_CID_COARSE_TIME - 1160
[ 3666.048151] daxc02 0-0010: daxc02_s_ctrl: V4L2_CID_COARSE_TIME - 580
[ 3666.381359] daxc02 0-0010: daxc02_s_ctrl: V4L2_CID_COARSE_TIME - 1160
[ 3666.581458] daxc02 0-0010: daxc02_s_ctrl: V4L2_CID_COARSE_TIME - 580

This is not only annoying, but it causes issues for things like disparity mapping using two cameras.

Is there an easy way to do any of the following?

  1. Reduce the sensitivity or increase the hysteresis of the auto-exposure to avoid the flashing
  2. Have the same auto-exposure algorithm control both sensors
  3. Have one sensor in manual mode and set it with the values of the other

I attempted #3 myself using ioctl. But the only way I could figure out how to disable autoexposure was IAutoControlSettings->setAeLock, but that literally locks the value. So changing with ioctl just causes it to change right back.

@Atrer
It seems like the exposure value received from user mode core library is already jumpy. Can you make sure the exposure min/max settings are set correctly in kernel DT?

I couldn’t find any information on how to calculate/set those values. So I’ve been using the default from the ov5693 example:

min_exp_time = “34”;
max_exp_time = “550385”;

Should I try reducing that minimum down to 1?

@Atrer
min_exp_time
Specifies the minimum exposure time limit for the mode, in microseconds. Ceiling function to integer.
The equation to calculate this value is as follows:
min_exp_time = (minimum coarse integration time) * line_ length / pix_clk_hz * 1000000

minimum coarse integration time is the minimum exposure intervals. Unit in lines.
max_exp_time
Specifies the maximum exposure time limit for the mode in microseconds. Ceiling function to integer.
The equation to calculate this value is as follows:
min_exp_time = (maximum coarse integration time) * line_length / pix_clk_hz * 1000000

Perfect, thanks! Where was that information by the way?

Will public soon with next release in the l4t document sensor programing guide.