I want to add 4 camera (CSI) support to custom carrier board. I have defined device tree as attached for 4 cameras IMX219. Th device tree in /proc appears as defined. However /dev/video0 , /dev/video1 nodes are not created. Also I do not see any messages in kern.log about IMX219.
It appears that IMX219 module not probing / detecting. custom carrier board is based on p3509-a02+p3767-0000.conf.
Please help.
nvidia@nvidia-desktop:~$ gst-launch-1.0 nvarguscamerasrc ! fakesink
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:751 No cameras available
Got EOS from element "pipeline0".
Execution ended after 0:00:00.007743840
Setting pipeline to NULL ...
Freeing pipeline ...
nvidia@nvidia-desktop:~$
are you working with rel-35 or rel-36?
for instance, may I double confirm which Jetpack release version you’re working with?
please examine release tag, such as $ cat /etc/nv_tegra_release for confirmation.
you may refer to Jetson Compatibility,
please aware that Orin Nano module is not pin-compatible with Xavier NX carrier board.
anyways,
during kernel initialization stage, it’s step for camera device registration to setup a video device node to linux kernel. sensor probing only run once during kernel initialization stage of system boot-up.
for a typical camera application running cycle, the driver will Power On the sensor, Start Sensor Streaming, sending relevant v4l2 controls, and finally power off the sensor.
so… if there’s a error returns, it’ll not register a video node, (i.e. /dev/video0).
please see-also Topic 293662 and Topic 290610 to examine camera device registration process.
what’s the difference with those 3 logs?
I don’t see any log files with nv_imx219 module probe done is reported.
instead, I’ve only seen this from dmesg_1.txt, [ 4.513942] kernel: Error: Driver 'imx219' is already registered, aborting...
It seems now imx219_probe is done / passing. However V4L2 device node creation did not work.
Here are the latest dmesg and kern logs. Kindly suggest. dmesg_3.txt (75.6 KB) kern_3.log (102.9 KB)
according to the logs, video node should be generated. [ 14.524539] kernel: imx219 30-0010: tegracam sensor driver:imx219_v2.0.6 [ 14.586112] kernel: tegra-camrtc-capture-vi tegra-capture-vi: subdev imx219 30-0010 bound
one thing need to confirm…
did you porting tca9548 from AGX Orin to Orin NX? because Orin NX it uses GPIO-based i2c bus multiplexer to route the i2c signals.
please see-also… $public_sources/kernel_src/hardware/nvidia/platform/t23x/p3768/kernel-dts/cvb/tegra234-p3768-camera-rbpcv2-imx219.dtsi
did you have camera sensor connected physically?
besides, since you’ve comment-out rbpcv2_imx219_b/c/d nodes, please remove them from tegra-camera-platform{} as well.
Hello @JerryChang ,
Yes I have one camera (camera0) connected to the board. It is IMX219 (arducam).
I have commented - out rbpcv2_imx219_b/c/d nodes in DT. Here are the dmesg and kern logs.
nvidia@nvidia-desktop:/var/log$ sudo dmesg | grep -i imx
[ 14.792285] imx219 30-0010: probing v4l2 sensor at addr 0x10
[ 14.814314] NV IMX219 inside parse device tree reset-gpios property 397
[ 14.830291] imx219 30-0010: avdd, iovdd and/or dvdd reglrs. not present, assume sensor powered independently
[ 14.862545] NV IMX219 camera common property has-eeprom = 0
[ 14.881629] NV IMX219 inside power get extperiph1
[ 14.907289] NV IMX219 inside power get: avdd (null), iovdd (null), dvdd (null)
[ 14.929567] imx219 30-0010: tegracam sensor driver:imx219_v2.0.6
[ 14.974815] imx219 30-0010: imx219_power_on: power on
[ 14.980784] NV IMX219 inside power on
[ 15.015385] NV IMX219 skip power seqn due to unavailable avdd or iovdd or dvdd
[ 15.041493] NV IMX219 return power on
[ 15.056872] NV IMX219 returning from power_off no code
[ 15.088652] v4l2 i2c subdev set name imx219
[ 15.286713] tegra-camrtc-capture-vi tegra-capture-vi: subdev imx219 30-0010 bound
[ 15.314143] nv_imx219 module probe done
nvidia@nvidia-desktop:/var/log$
nvidia@nvidia-desktop:/var/log$ ls /dev/v*
/dev/vcs /dev/vcs4 /dev/vcsa1 /dev/vcsa5 /dev/vcsu2 /dev/vcsu6
/dev/vcs1 /dev/vcs5 /dev/vcsa2 /dev/vcsa6 /dev/vcsu3 /dev/vhci
/dev/vcs2 /dev/vcs6 /dev/vcsa3 /dev/vcsu /dev/vcsu4
/dev/vcs3 /dev/vcsa /dev/vcsa4 /dev/vcsu1 /dev/vcsu5
/dev/vfio:
vfio
nvidia@nvidia-desktop:/var/log$
video node should be generated after this message,
could you please check with sensor vendor (arducam) to confirm it’s the latest sensor kernel driver?
besides, do they had another polarity swap on the camera carrier board?
Now we can see /dev/video0 node being created. We can also verify using v4l2-ctl.
The issue was related to definition of mclk, clock and num-channels property in device tree.
Thank you all the support and help.
nvidia@nvidia-desktop:~$ v4l2-ctl --list-devices
[ 137.557473] nv_imx219 open called ...
NVIDIA Tegra Video Input Device (platform:tegra-camrtc-ca):
/dev/media0
vi-output, imx219 30-0010 (platform:tegra-capture-vi:0):
/dev/video0
nvidia@nvidia-desktop:~$ ls /dev/v*
/dev/v4l-subdev0 /dev/vcs3 /dev/vcsa1 /dev/vcsa6 /dev/vcsu4
/dev/v4l-subdev1 /dev/vcs4 /dev/vcsa2 /dev/vcsu /dev/vcsu5
/dev/vcs /dev/vcs5 /dev/vcsa3 /dev/vcsu1 /dev/vcsu6
/dev/vcs1 /dev/vcs6 /dev/vcsa4 /dev/vcsu2 /dev/vhci
/dev/vcs2 /dev/vcsa /dev/vcsa5 /dev/vcsu3 /dev/video0
/dev/v4l:
by-path
/dev/vfio:
vfio
nvidia@nvidia-desktop:~$ sudo dmesg | grep -i imx
[ 13.415688] imx219 30-0010: probing v4l2 sensor at addr 0x10
[ 13.449760] NV IMX219 inside parse device tree reset-gpios property 397
[ 13.449764] imx219 30-0010: avdd, iovdd and/or dvdd reglrs. not present, assume sensor powered independently
[ 13.449766] NV IMX219 camera common property has-eeprom = 0
[ 13.449768] NV IMX219 inside power get extperiph1
[ 13.449779] NV IMX219 inside power get: avdd (null), iovdd (null), dvdd (null)
[ 13.450778] imx219 30-0010: tegracam sensor driver:imx219_v2.0.6
[ 13.452796] imx219 30-0010: imx219_power_on: power on
[ 13.487536] NV IMX219 inside power on
[ 13.497496] NV IMX219 skip power seqn due to unavailable avdd or iovdd or dvdd
[ 13.537706] NV IMX219 return power on
[ 13.612051] imx219 30-0010: imx219_power_off: power off
[ 13.617668] NV IMX219 inside power off
[ 13.621869] NV IMX219 inside power off failed-else
[ 13.633121] NV IMX219 returning from power_off no code
[ 13.667456] v4l2 i2c subdev set name imx219
[ 13.741472] tegra-camrtc-capture-vi tegra-capture-vi: subdev imx219 30-0010 bound