How to access IMI cameras for Drive PX2 Autochauffeur

Hello,

I want to connect the following IMI Camera platform to the Drive PX2 Autochauffeur:

RDACM21 --> imager OV10640, Serializer MAX9271.

From the documentation we understand that the imager OV10640 is supported. But is the above serializer supported as well by Drive PX2 (where can I find the supported serializers)? If not supported kindly recommend what needs to be done.?

Also could you give the command that should be used to connect these cameras to the Drive PX2?

Thanks & Regards
Paul Girond

Dear Paul Girond,
The PDK supports the OV10640 + Max9271 + Max9286(sensor + serializer + deserializer) combination. Do you see any issue?

Dear SivaRamaKrishna,

Thank you for your response.

Yes indeed we face an issue while trying to access the camera. I tried two possibilities, both results in error:

  1. nvidia@nvidia:/usr/local/driveworks/bin$ ./sample_camera_gmsl
    Program Arguments:
    –camera-type=ar0231-rccb
    –csi-port=ab
    –fifo-size=3
    –serialize-bitrate=8000000
    –serialize-framerate=30
    –serialize-type=h264
    –slave=0
    –write-file=

nvrm_gpu: Bug 200215060 workaround enabled.
Initialize DriveWorks SDK v0.6.67
Release build with GNU 4.9.2 from v0.6.0-rc7-0-g51bd3aa against Vibrante PDK v5.0.5.0
TimeSource: monotonic epoch time offset is 1536541342513380
TimeSource: PTP ioctl returned error. Synchronized time will not be available.
TimeSource: Could not detect valid PTP time source at ‘eth0’. Fallback to CLOCK_MONOTONIC.
SDK: Resources mounted from /usr/local/driveworks-0.6/data/resources
SDK: Create NvMediaDevice
SDK: use EGL display as provided
SDK: number of GPU devices detected 2
SDK: currently selected GPU device discrete ID 0
SAL: identified board as DrivePX2-TegraA
SensorFactory::createSensor() -> camera.gmsl, camera-type=ar0231-rccb,csi-port=ab,fifo-size=3,serialize-bitrate=8000000,serialize-framerate=30,serialize-type=h264,slave=0,write-file=,output-format=yuv
CameraGMSL: required FPS = 30, resolution = 1920x1208
***** aurix state *****
CAM_PWR_ON: 0x0
TEGRA_GMSL: TEGRA B
TEGRA_FPDL: TEGRA B
TEGRA_A_HDMI: MXM
TEGRA_B_HDMI: MXM
TEGRA_PCI: TEGRA B
FAN_STATE: UNKNOWN


***** aurix state *****
CAM_PWR_ON: 0x1
TEGRA_GMSL: UNKNOWN
TEGRA_FPDL: UNKNOWN
TEGRA_A_HDMI: UNKNOWN
TEGRA_B_HDMI: UNKNOWN
TEGRA_PCI: UNKNOWN
FAN_STATE: UNKNOWN


nvmedia: ERROR: SetupVideoLink: Can’t detect config link(0)
nvmedia: ERROR: Init: Failed to setup video link
***** aurix state *****
CAM_PWR_ON: 0x0
TEGRA_GMSL: UNKNOWN
TEGRA_FPDL: UNKNOWN
TEGRA_A_HDMI: UNKNOWN
TEGRA_B_HDMI: UNKNOWN
TEGRA_PCI: UNKNOWN
FAN_STATE: UNKNOWN


Driveworks exception thrown: DW_SAL_CANNOT_CREATE_SENSOR: CameraGMSL: cannot connect to camera

Cannot create driver: camera.gmsl with params: camera-type=ar0231-rccb,csi-port=ab,fifo-size=3,serialize-bitrate=8000000,serialize-framerate=30,serialize-type=h264,slave=0,write-file=,output-format=yuv
Error: DW_SAL_CANNOT_CREATE_SENSOR

  1. nvidia@nvidia:/usr/local/driveworks/bin$ ./sample_camera_gmsl --camera-type=c-ov10640-b1
    Program Arguments:
    –camera-type=c-ov10640-b1
    –csi-port=ab
    –fifo-size=3
    –serialize-bitrate=8000000
    –serialize-framerate=30
    –serialize-type=h264
    –slave=0
    –write-file=

nvrm_gpu: Bug 200215060 workaround enabled.
Initialize DriveWorks SDK v0.6.67
Release build with GNU 4.9.2 from v0.6.0-rc7-0-g51bd3aa against Vibrante PDK v5.0.5.0
TimeSource: monotonic epoch time offset is 1536541342513380
TimeSource: PTP ioctl returned error. Synchronized time will not be available.
TimeSource: Could not detect valid PTP time source at ‘eth0’. Fallback to CLOCK_MONOTONIC.
SDK: Resources mounted from /usr/local/driveworks-0.6/data/resources
SDK: Create NvMediaDevice
SDK: use EGL display as provided
SDK: number of GPU devices detected 2
SDK: currently selected GPU device discrete ID 0
SAL: identified board as DrivePX2-TegraA
SensorFactory::createSensor() -> camera.gmsl, camera-type=c-ov10640-b1,csi-port=ab,fifo-size=3,serialize-bitrate=8000000,serialize-framerate=30,serialize-type=h264,slave=0,write-file=,output-format=yuv
CameraGMSL: required FPS = 30, resolution = 1280x1080
***** aurix state *****
CAM_PWR_ON: 0x0
TEGRA_GMSL: TEGRA B
TEGRA_FPDL: TEGRA B
TEGRA_A_HDMI: MXM
TEGRA_B_HDMI: MXM
TEGRA_PCI: TEGRA B
FAN_STATE: UNKNOWN


***** aurix state *****
CAM_PWR_ON: 0x1
TEGRA_GMSL: UNKNOWN
TEGRA_FPDL: UNKNOWN
TEGRA_A_HDMI: UNKNOWN
TEGRA_B_HDMI: UNKNOWN
TEGRA_PCI: UNKNOWN
FAN_STATE: UNKNOWN


nvmedia: ERROR: SetupVideoLink: Image sensor(0) device is not present
nvmedia: ERROR: Init: Failed to setup video link
***** aurix state *****
CAM_PWR_ON: 0x0
TEGRA_GMSL: UNKNOWN
TEGRA_FPDL: UNKNOWN
TEGRA_A_HDMI: UNKNOWN
TEGRA_B_HDMI: UNKNOWN
TEGRA_PCI: UNKNOWN
FAN_STATE: UNKNOWN


Driveworks exception thrown: DW_SAL_CANNOT_CREATE_SENSOR: CameraGMSL: cannot connect to camera

Cannot create driver: camera.gmsl with params: camera-type=c-ov10640-b1,csi-port=ab,fifo-size=3,serialize-bitrate=8000000,serialize-framerate=30,serialize-type=h264,slave=0,write-file=,output-format=yuv
Error: DW_SAL_CANNOT_CREATE_SENSOR

I am assuming the second trial is correct (compared to trial 1) since it is correctly setting the camera type. Just for your reference one more information I would like to add about the camera, the ISP is OV4930. So here is a
summary of the camera:
RDACM21 -IMI camera:
Imager - OV10640
ISP: OV490
Optical format - 1/2.56"
Serializer: MAX9271

Please let us know how to resolve the issue.

Thanks & Regards
Paul Girond

Can you double check if you have connected to A0 port.

Yes I can confirm we connected to port A0, the second one from the left (top row).

Best Regards
Paul Girond

Dear Paul Girond,
Can you check the sample with any other camera to confirm?

Dear Paul Girond,
Any update here?

Hello,

some points from my side.

The RDACM21 contains a MAX9271 + OV10640 + OV490.
So it directly outputs YUV 10bit by default and no OV10640 configuration is needed from DrivePX2.

We have verified that by using our own GMSL frame grabber with MAX9240A deserializer. The camera is working out of the box after setup of GMSL link.

I have modified the ref_max9286_9271_ov10635.c to setup the camera.
Because the OV10635 integrates an ISP and is also able to deliver YUV this is more or less equal and in my opinion a good starting point.

I am able to talk to the serializer and deserializer (e.g. dump registers), setup configuration and also video link (so forward and back channel is working also in video link). The deserializer shows a VSync periode that is nearly 30fps. So I am very very sure the camera is sending images.

But I do not receive images using the sample_gmsl_camera tool. I get

nvmedia: ERROR: Start: Enable sensor streaming
nvmedia: ERROR: Start: Enable csi out
Camera image with 1280x800 at 30 FPS
nvmEglStProducerCreateCommon: Entered

 ERROR readFrame: DW_NOT_READY

 ERROR readFrame: DW_NOT_READY

 ERROR readFrame: DW_NOT_READY

 ERROR readFrame: DW_NOT_READY
^C^C^C^C
 ERROR readFrame: DW_NOT_READY
***** aurix state *****
 CAM_PWR_ON: 0x0
 TEGRA_GMSL: UNKNOWN
 TEGRA_FPDL: UNKNOWN
 TEGRA_A_HDMI: UNKNOWN
 TEGRA_B_HDMI: UNKNOWN
 TEGRA_PCI: UNKNOWN
 FAN_STATE: UNKNOWN
***********************
SDK: Release NvMediaDevice
Driveworks SDK released

The deserializer is configured for YUV 8-bit. But the camera sends YUV 10-bit. But if i change the deserializer to YUV 10-bit also no images are received.
In my opinion the CSI-2 packages send from the MAX9286 deserializer are ignored by the DrivePX2/DriveWorks stuff. Maybe because of not matching CSI-2 datatype.

Any suggestions??

Thanks for your help.

Dear steffen.herbrecher,
Can you confirm if any other camera working for that sample?

Hello,

I have tested that the DrivePX2 in general works by using the S-D3321 camera from Sekonix.
For sure it is a different serializer and imager and so I could not use the same reference code.

I need more deep debug possibilities to check if CSI-2 data is received.

Thanks
Steffen