Jetson nano and error: 521 No cameras available

Hi,
i build my own Kernel/image using Yocto. i adapted ov7251 camera driver to nvidia rules based on Tegra Linux Driver manual.

i can see camera driver on /dev/video0, when a run command:

root@jetson-nano:~# media-ctl -p -d /dev/media0
Media controller API version 0.1.0

Media device information
------------------------
driver          vi
model           NVIDIA Tegra Video Input Device
serial          
bus info        
hw revision     0x3
driver version  0.0.0

Device topology
- entity 1: nvcsi--1 (2 pads, 2 links)
            type V4L2 subdev subtype Unknown flags 0
            device node name /dev/v4l-subdev0
	pad0: Sink
		<- "ov7251 6-0060":0 [ENABLED]
	pad1: Source
		-> "vi-output, ov7251 6-0060":0 [ENABLED]

- entity 4: ov7251 6-0060 (1 pad, 1 link)
            type V4L2 subdev subtype Sensor flags 0
            device node name /dev/v4l-subdev1
	pad0: Source
		[fmt:SBGGR10_1X10/640x480 field:none colorspace:srgb]
		-> "nvcsi--1":0 [ENABLED]

- entity 6: vi-output, ov7251 6-0060 (1 pad, 1 link)
            type Node subtype V4L flags 0
            device node name /dev/video0
	pad0: Sink
		<- "nvcsi--1":1 [ENABLED]

But when i run gst-launched with nvidia plugin i have this error:

root@jetson-nano:~# gst-launch-1.0 nvarguscamerasrc
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Error generated. /dvs/git/dirty/git-master_linux/multimedia/nvgstreamer/gst-nvarguscamera/gstnvarguscamerasrc.cpp, execute:521 No cameras available

Also when i ran v4l2-ctl i have :

root@jetson-nano:~# v4l2-ctl -d /dev/video0 --set-fmt-video=width=640,height=480,pixelformat=RG10 --set-ctrl bypass_mode=0 --stream-mmap --stream-count=100
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.16 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Any idea to solve this issue.

Thanks.

i removed all camera plugins from tegra210-jetson-cv-camera-plugin-manager.dtsi
my device tree is :

/ {

	tcpOV7251: tegra-camera-platform {
		compatible = "nvidia, tegra-camera-platform";
		status="okay";
		num_csi_lanes = <1>;
		max_lane_speed = <1500000>;
		min_bits_per_pixel = <10>;
		vi_peak_byte_per_pixel = <2>;
		vi_bw_margin_pct = <25>;
		max_pixel_rate = <240000>;
		isp_peak_byte_per_pixel = <5>;
		isp_bw_margin_pct = <25>;

		modules {
			status="okay";
			cam_module0: module0 {
				status="okay";
				badge = "ov7251_bottom_ov7251";
				position = "front";
				orientation = "0";
				cam_module0_drivernode0: drivernode0 {
					status="okay";
					pcl_id = "v4l2_sensor";
					devname = "ov7251 6-0060";
					proc-device-tree = "/proc/device-tree/host1x/i2c@546c0000/ov7251_a@60";
				};
			};
		};
		
		 
	};
};
  1. Could you check the context of the /proc/device-tree/tegra-camera-platform is exactly as your device tree define.
  2. Use nvgstcapture-1.0 to try also enable the log to get more information.
sudo su
kill the process of argus_daemon/nvargus-daemon or nvcamera-daemon 
export enableCamPclLogs=5
export enableCamScfLogs=5
/usr/sbin/argus_daemon(nvargus-daemon)      option for argus
/usr/sbin/nvcamera-daemon   option for gst-launch
 
launch camera from another console

Fixed! i have some missing fields on DTC.

Thanks for your help.

now i have the bellow issue:

CONSUMER: Producer has connected; continuing.
[  192.019959] ov7251 6-0060: tegracam_init_ctrl_ranges_by_mode: Values 16 1023 1 16 
[  192.027776] ov7251 6-0060: ov7251_set_frame_rate: Frame rate: 35e
[  192.035933] ov7251 6-0060: Set Mode 0
[  192.055915] ov7251 6-0060: tegracam_init_ctrl_ranges_by_mode: Values 16 1023 1 16 
[  192.063544] ov7251 6-0060: ov7251_set_gain: gain: 16
[  192.072222] ov7251 6-0060: ov7251_set_exposure: Exposure: 19
[  192.081309] ov7251 6-0060: ov7251_set_frame_rate: Frame rate: 35e
[  192.087450] ov7251 6-0060: Start Streaming
[  192.091803] ov7251 6-0060: Start Streaming -> OK
[  197.745785] fence timeout on [ffffffc0e2eb3b40] after 1500ms
[  197.751460] name=[nvhost_sync:41], current value=18 waiting value=19
[  197.757826] ---- mlocks ---

It means that the VI/CSI port not receiving frames?

Yes, that could be MIPI signal issue case VI/CSI didn’t receive validate data.

How we can debug vi/csi to check if there no frames or bad frame length/ frame rate configuration?

I think you need OV to help to this kind of case.

Do you know how i can dump VI_CSI_[0…5]_ERROR_STATUS?

Try below command. Then have v4l2-ctl to capture data.

sudo su
echo file csi2_fops.c +p > /sys/kernel/debug/dynamic_debug/control

@ahadach do you have the ov7251 driver posted anywhere? Or, can you say where you adapted it from?

Hi,
i have it as a kernel patch. i’m working now on OV5647 driver.

regards,

if you’re post to this issue that would be helpful. Intel had one but I’m having a hard time porting it over.

@ahadach if you can’t share patch any insight on where you adapted from would be helpful too. Looking for any tips I can get