The B & C (or Left & Right) ports are synced by sharing the same I2C bus. For the ports A & D (RGB and CamD) this is not the case, and even though their FSIN pins are tied together, hardware sync has to be explicitly enabled. Can be done for example by configuring in the pipeline:
cam['rgb'] .initialControl.setFrameSyncMode(dai.CameraControl.FrameSyncMode.OUTPUT)
cam['camd'] .initialControl.setFrameSyncMode(dai.CameraControl.FrameSyncMode.INPUT)
And to get all 4 sensors synchronized, need to configure also FSIN for L/R sensors:
cam['left'] .initialControl.setFrameSyncMode(dai.CameraControl.FrameSyncMode.INPUT)
cam['right'].initialControl.setFrameSyncMode(dai.CameraControl.FrameSyncMode.INPUT)
AND importantly to tie the FSIN signals of A+D and B+C pairs, by setting a GPIO:
# OAK-FFC-4P requires driving GPIO6 high (FSIN_MODE_SELECT) to connect together
# the A+D FSIN group (4-lane pair) with the B+C group (2-lane pair)
config = dai.Device.Config()
config.board.gpio[6] = dai.BoardConfig.GPIO(dai.BoardConfig.GPIO.OUTPUT,
dai.BoardConfig.GPIO.Level.HIGH)
with dai.Device(config) as device:
device.startPipeline(pipeline)
Can use this commit as a reference for the changes to be made:
https://github.com/alex-luxonis/depthai-python/commit/7db4ef58d3ca8b9b84ea0dca6a80e3e382fc2d1a