Gstreamer cannot capture from bayer sensor (imx415) in Jetson nano

Hi

I connected IMX415 camera sensor in Jetson nano and done device tree and driver configuration.I was able to get the v4lt-tools based raw image capture from the sensor. So this means that the device tree configuration and the video path is working. I am getting the kernel log as the “imx415 detected” as well as the /dev/video0 node.But when I tried to fetch video from camera using gstreamer pipeline it is throwing an error:no cameras available.
Pipeline used and error log is mentioned below.

“gst-launch-1.0 nvarguscamerasrc sensor-id=0! ‘video/x-raw(memory:NVMM), width=(int)3840, height=(int)2160, framerate=16/1’ ! nvvidconv flip-method=0 ! ‘video/x-raw, format=(string)I420’ ! xvimagesink-e”

Error Log :
gst-launch-1.0 nvarguscamerasrc ! ‘video/x-raw(memory:NVMM), width=(int)3840, height=(int)2160, framerate=16/1’ ! nvvidconv flip-method=0 ! ‘video/x-raw, format=(string)I420’ ! xvimagesink -e
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:557 No cameras available
Got EOS from element “pipeline0”.
Execution ended after 0:00:00.776537135
Setting pipeline to PAUSED …
Setting pipeline to READY …
Setting pipeline to NULL …
Freeing pipeline …

Please help me.
Thanks in advance

It could be the tegra-camera-platform context of the device tree have problem cause “No cameras available”

And have you verify the “v4l2-ctl --stream-mmap --stream-count=100 -d /dev/video0” to confirm the sensor driver?

Hi
Thanks for your reply.I tried with the v4l2-ctl --stream-mmap --stream-count=100 -d /dev/video0
The log I am getting is given below
<<<<<<<<<<<<<<<<<< 16.83 fps
<<<<<<<<<<<<<<<<< 16.74 fps
<<<<<<<<<<<<<<<<< 16.72 fps
<<<<<<<<<<<<<<<< 16.70 fps
<<<<<<<<<<<<<<<<< 16.69 fps
<<<<<<<<<<<<<<<

v4l2-ctl --list-devices

vi-output, imx415 6-001a (platform:54080000.vi:0):
/dev/video0

The .dtsi file

#include <dt-bindings/media/camera.h>
#include <dt-bindings/platform/t210/t210.h>

/ {
host1x {
vi_base: vi {
num-channels = <1>;
ports {
#address-cells = <1>;
#size-cells = <0>;
vi_port0: port@0 {
reg = <0>;
rbpcv2_imx415_vi_in0: endpoint {
port-index = <0>;
bus-width = <2>;
remote-endpoint = <&rbpcv2_imx415_csi_out0>;
};
};
};
};

	csi_base: nvcsi {
		num-channels = <1>;
		#address-cells = <1>;
		#size-cells = <0>;
		csi_chan0: channel@0 {
			reg = <0>;
			ports {
				#address-cells = <1>;
				#size-cells = <0>;
				csi_chan0_port0: port@0 {
					reg = <0>;
					rbpcv2_imx415_csi_in0: endpoint@0 {
						port-index = <0>;
						bus-width = <2>;
						remote-endpoint = <&rbpcv2_imx415_out0>;
					};
				};
				csi_chan0_port1: port@1 {
					reg = <1>;
					rbpcv2_imx415_csi_out0: endpoint@1 {
						remote-endpoint = <&rbpcv2_imx415_vi_in0>;
					};
				};
			};
		};

	};

	i2c@546c0000 {
				imx415_single_cam0: rbpcv2_imx415_a@1a {
					compatible = "nvidia,imx415";
					/* I2C device address */
					reg = <0x1a>;

					/* V4L2 device node location */
					devnode = "video0";

					/* Physical dimensions of sensor */
					physical_w = "3.680";
					physical_h = "2.760";

					sensor_model = "imx415";

					/* Defines number of frames to be dropped by driver internally after applying */
					/* sensor crop settings. Some sensors send corrupt frames after applying */
					/* crop co-ordinates */
					/* post_crop_frame_drop = "0"; */

					/* Convert Gain to unit of dB (decibel) befor passing to kernel driver */
					/* use_decibel_gain = "true"; */

					/* if true, delay gain setting by one frame to be in sync with exposure */
					/* delayed_gain = "true"; */

					/* enable CID_SENSOR_MODE_ID for sensor modes selection */
					use_sensor_mode_id = "true";

					/**
					* ==== Modes ====
					* A modeX node is required to support v4l2 driver
					* implementation with NVIDIA camera software stack
					*
					* == Signal properties ==
					*
					* phy_mode = "";
					* PHY mode used by the MIPI lanes for this device
					*
					* tegra_sinterface = "";
					* CSI Serial interface connected to tegra
					* Incase of virtual HW devices, use virtual
					* For SW emulated devices, use host
					*
					* pix_clk_hz = "";
					* Sensor pixel clock used for calculations like exposure and framerate
					*
					* readout_orientation = "0";
					* Based on camera module orientation.
					* Only change readout_orientation if you specifically
					* Program a different readout order for this mode
					*
					* == Image format Properties ==
					*
					* active_w = "";
					* Pixel active region width
					*
					* active_h = "";
					* Pixel active region height
					*
					* pixel_t = "";
					* The sensor readout pixel pattern
					*
					* line_length = "";
					* Pixel line length (width) for sensor mode.
					*
					* == Source Control Settings ==
					*
					* Gain factor used to convert fixed point integer to float
					* Gain range [min_gain/gain_factor, max_gain/gain_factor]
					* Gain step [step_gain/gain_factor is the smallest step that can be configured]
					* Default gain [Default gain to be initialized for the control.
					*     use min_gain_val as default for optimal results]
					* Framerate factor used to convert fixed point integer to float
					* Framerate range [min_framerate/framerate_factor, max_framerate/framerate_factor]
					* Framerate step [step_framerate/framerate_factor is the smallest step that can be configured]
					* Default Framerate [Default framerate to be initialized for the control.
					*     use max_framerate to get required performance]
					* Exposure factor used to convert fixed point integer to float
					* For convenience use 1 sec = 1000000us as conversion factor
					* Exposure range [min_exp_time/exposure_factor, max_exp_time/exposure_factor]
					* Exposure step [step_exp_time/exposure_factor is the smallest step that can be configured]
					* Default Exposure Time [Default exposure to be initialized for the control.
					*     Set default exposure based on the default_framerate for optimal exposure settings]
					*
					* gain_factor = ""; (integer factor used for floating to fixed point conversion)
					* min_gain_val = ""; (ceil to integer)
					* max_gain_val = ""; (ceil to integer)
					* step_gain_val = ""; (ceil to integer)
					* default_gain = ""; (ceil to integer)
					* Gain limits for mode
					*
					* exposure_factor = ""; (integer factor used for floating to fixed point conversion)
					* min_exp_time = ""; (ceil to integer)
					* max_exp_time = ""; (ceil to integer)
					* step_exp_time = ""; (ceil to integer)
					* default_exp_time = ""; (ceil to integer)
					* Exposure Time limits for mode (sec)
					*
					* framerate_factor = ""; (integer factor used for floating to fixed point conversion)
					* min_framerate = ""; (ceil to integer)
					* max_framerate = ""; (ceil to integer)
					* step_framerate = ""; (ceil to integer)
					* default_framerate = ""; (ceil to integer)
					* Framerate limits for mode (fps)
					*
					* embedded_metadata_height = "";
					* Sensor embedded metadata height in units of rows.
					* If sensor does not support embedded metadata value should be 0.
					*/
					mode0 {/*mode IMX415_MODE_3840X2160_22FPS*/
						mclk_khz = "37125";
						num_lanes = "2";
						tegra_sinterface = "serial_a";
						phy_mode = "DPHY";
						discontinuous_clk = "no";
						dpcm_enable = "false";
						cil_settletime = "0";
						dynamic_pixel_bit_depth = "12";
						csi_pixel_bit_depth = "12";
						mode_type = "bayer";
						pixel_phase = "gbrg";

						active_w = "3840"; // 12+3840+12, but cropping to 3840
						active_h = "2160"; // 1+2+8+2160+8+12+1, but cropping to 2160
						readout_orientation = "0";
						line_length = "3980";
						inherent_gain = "1";
						mclk_multiplier = "4";
						pix_clk_hz = "148500000";

						gain_factor = "100";
						min_gain_val = "0"; /* 0dB */
						max_gain_val = "7200"; /* 72dB */
						step_gain_val = "1"; /* 0.01 */
						default_gain = "0";

						min_hdr_ratio = "1";
						max_hdr_ratio = "1";

						framerate_factor = "1000000";
						min_framerate = "16670000";
						max_framerate = "16670000";
						step_framerate = "1";
						default_framerate = "16670000";

						exposure_factor = "1000000";
						min_exp_time = "111"; /* us */
						max_exp_time = "44663"; /* us */
						step_exp_time = "1";
						default_exp_time = "3000";/* us */

						embedded_metadata_height = "1";
					};

					ports {
						#address-cells = <1>;
						#size-cells = <0>;

						port@0 {
							reg = <0>;
							rbpcv2_imx415_out0: endpoint {
								port-index = <0>;
								bus-width = <2>;
								remote-endpoint = <&rbpcv2_imx415_csi_in0>;
							};
						};
					};
			};
	};
};

lens_imx415@RBPCV2 {
	min_focus_distance = "0.0";
	hyper_focal = "0.0";
	focal_length = "3.04";
	f_number = "2.0";
	aperture = "0.0";
};

};

/ {
tcp: tegra-camera-platform {
compatible = “nvidia, tegra-camera-platform”;

	/**
	* Physical settings to calculate max ISO BW
	*
	* num_csi_lanes = <>;
	* Total number of CSI lanes when all cameras are active
	*
	* max_lane_speed = <>;
	* Max lane speed in Kbit/s
	*
	* min_bits_per_pixel = <>;
	* Min bits per pixel
	*
	* vi_peak_byte_per_pixel = <>;
	* Max byte per pixel for the VI ISO case
	*
	* vi_bw_margin_pct = <>;
	* Vi bandwidth margin in percentage
	*
	* max_pixel_rate = <>;
	* Max pixel rate in Kpixel/s for the ISP ISO case
	*
	* isp_peak_byte_per_pixel = <>;
	* Max byte per pixel for the ISP ISO case
	*
	* isp_bw_margin_pct = <>;
	* Isp bandwidth margin in percentage
	*/
	num_csi_lanes = <12>;
	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>;

	/**
	 * The general guideline for naming badge_info contains 3 parts, and is as follows,
	 * The first part is the camera_board_id for the module; if the module is in a FFD
	 * platform, then use the platform name for this part.
	 * The second part contains the position of the module, ex. "rear" or "front".
	 * The third part contains the last 6 characters of a part number which is found
	 * in the module's specsheet from the vendor.
	 */
	modules {
		cam_module0: module0 {
			badge = "porg_bottomleft_RBPCV2";
			position = "bottomleft";
			orientation = "0";
			cam_module0_drivernode0: drivernode0 {
				pcl_id = "v4l2_sensor";
				devname = "imx415 30-001a";
				proc-device-tree = "/proc/device-tree/host1x/i2c@546c0000/rbpcv2_imx415_a@1a";
			};
			cam_module0_drivernode1: drivernode1 {
				pcl_id = "v4l2_lens";
				proc-device-tree = "/proc/device-tree/lens_imx415@RBPCV2/";
			};
		};
	};
};

};

Could you please help me?

The devname is incorrect. The bus# should be 6 instead of 30

devname = “imx415 30-001a”

Thank you so much .I changed the devname and it is working fine now.