IMX219-77 module can not work on Orin Nano dev. kit

Hi,

We have used the Jetson-io configuration to select IMX219-dual, with the camera module connected to the CAM1 interface. When we use the following command to check the devices:

v4l2-ctl --list-devices

The feedback is as follows:

NVIDIA Tegra Video Input Device (platform:tegra-camrtc-ca):
/dev/media0

vi-output, imx219 10-0010 (platform:tegra-capture-vi:2):
/dev/video0

However, when we try to invoke the camera using the following commands:

nvgstcapture-1.0

OR

gst-launch-1.0 nvarguscamerasrc sensor-id=0 timeout=1000 ! ‘video/x-raw(memory:NVMM), width=1280, height=720, format=NV12’ ! nvvidconv flip-method=0 ! ‘video/x-raw(memory:NVMM), width=1280, height=720’ ! nvvidconv ! nvegltransform ! nveglglessink -e

The IMX219 module cannot be lit up, and a black screen appears in the pop-up window. The terminal prints the following feedback:

gst-launch-1.0 nvarguscamerasrc sensor_id = 0 ! ‘video/x-raw(memory:NVMM), width=1280, height=720, format=NV12’ ! nvvidconv flip-method=0 ! ‘video/x-raw(memory:NVMM), width=1280, height=720’ ! nvvidconv ! nvegltransform ! nveglglessink -e
Setting pipeline to PAUSED …
Using winsys: x11
Pipeline is live and does not need PREROLL …
Got context from element “eglglessink0”: gst.egl.EGLDisplay=context, display=(GstEGLDisplay)NULL;
Setting pipeline to PLAYING …
New clock: GstSystemClock
GST_ARGUS: Creating output stream
CONSUMER: Waiting until producer is connected…
GST_ARGUS: Available Sensor modes :
GST_ARGUS: 3280 x 2464 FR = 21.000000 fps Duration = 47619048 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;

GST_ARGUS: 3280 x 1848 FR = 28.000001 fps Duration = 35714284 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;

GST_ARGUS: 1920 x 1080 FR = 29.999999 fps Duration = 33333334 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;

GST_ARGUS: 1640 x 1232 FR = 29.999999 fps Duration = 33333334 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;

GST_ARGUS: 1280 x 720 FR = 59.999999 fps Duration = 16666667 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;

GST_ARGUS: Running with following settings:
Camera index = 0
Camera mode = 4
Output Stream W = 1280 H = 720
seconds to Run = 0
Frame Rate = 59.999999
GST_ARGUS: Setup Complete, Starting captures for 0 seconds
GST_ARGUS: Starting repeat capture requests.
CONSUMER: Producer has connected; continuing.
nvbuf_utils: dmabuf_fd -1 mapped entry NOT found
> Error generated. /dvs/git/dirty/git-master_linux/multimedia/nvgstreamer/gst-nvarguscamera/gstnvarguscamerasrc.cpp, threadExecute:723 NvBufSurfaceFromFd Failed.
> Error generated. /dvs/git/dirty/git-master_linux/multimedia/nvgstreamer/gst-nvarguscamera/gstnvarguscamerasrc.cpp, threadFunction:242 (propagating)
WARNING: from element /GstPipeline:pipeline0/GstEglGlesSink:eglglessink0: Could not establish a valid pipeline, please use a queue.
Additional debug info:
gstbasesink.c(1209): gst_base_sink_query_latency (): /GstPipeline:pipeline0/GstEglGlesSink:eglglessink0:
Not enough buffering available for the processing deadline of 0:00:00.015000000, add enough queues to buffer 0:00:00.015000000 additional data. Shortening processing latency to 0:00:00.000000000.
Received EOS from element “pipeline0”.
Execution ended after 0:00:04.066510866
Setting pipeline to NULL …
GST_ARGUS: Cleaning up
GST_ARGUS: Done Success
Releasing pipeline resources …

When we use v4l2ctl to check the camera connection results, the results are inconsistent.

v4l2-ctl --set-fmt-video=width=1920,height=1080,pixelformat=RG10 --stream-mmap --stream-count=30 -d /dev/video0

When it fails, there is no feedback, and the log is as follows:

[ 413.664056] bwmgr API not supported
[ 420.569888] bwmgr API not supported
[ 420.579247] ------------[ cut here ]------------
[ 420.582880] WARNING: CPU: 2 PID: 5536 at drivers/media/common/videobuf2/videobuf2-core.c:1991 __vb2_queue_cancel+0x1b8/0x220
[ 420.594433] Modules linked in: fuse xt_conntrack xt_MASQUERADE nf_conntrack_netlink nfnetlink iptable_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 libcrc32c xt_addrtype iptable_filter br_netfilter nvidia_modeset(O) lzo_rle lzo_compress zram overlay ramoops reed_solomon bnep loop snd_soc_tegra186_asrc snd_soc_tegra210_ope snd_soc_tegra186_dspk snd_soc_tegra186_arad snd_soc_tegra210_iqc snd_soc_tegra210_mvc input_leds snd_soc_tegra210_afc snd_soc_tegra210_dmic snd_soc_tegra210_admaif snd_soc_tegra210_adx snd_soc_tegra_pcm snd_soc_tegra210_amx snd_soc_tegra210_i2s snd_soc_tegra210_mixer snd_soc_tegra210_sfc iwlmvm mac80211 aes_ce_blk crypto_simd cryptd aes_ce_cipher ghash_ce sha2_ce sha256_arm64 sha1_ce btusb btrtl btbcm btintel snd_soc_tegra210_ahub snd_soc_spdif_tx snd_soc_tegra_machine_driver snd_soc_tegra210_adsp snd_soc_tegra_utils snd_soc_simple_card_utils nvadsp userspace_alert tegra210_adma tegra_bpmp_thermal snd_hda_codec_hdmi snd_hda_tegra nv_imx219 snd_hda_codec
[ 420.594595] snd_hda_core iwlwifi cfg80211 r8168 nvidia(O) spi_tegra114 binfmt_misc ina3221 pwm_fan nvgpu nvmap nfsd ip_tables x_tables [last unloaded: mtd]
[ 420.594637] CPU: 2 PID: 5536 Comm: v4l2-ctl Tainted: G W O 5.10.216-tegra #1
[ 420.594641] Hardware name: NVIDIA NVIDIA Orin Nano Developer Kit/Jetson, BIOS 6.0-37391689 08/28/2024
[ 420.594646] pstate: 60400009 (nZCv daif +PAN -UAO -TCO BTYPE=–)
[ 420.594652] pc : __vb2_queue_cancel+0x1b8/0x220
[ 420.594657] lr : __vb2_queue_cancel+0x40/0x220
[ 420.594660] sp : ffff80001e8f3b40
[ 420.594663] x29: ffff80001e8f3b40 x28: ffff0f1f40285880
[ 420.594670] x27: 0000000000000000 x26: 0000ffffbed25acc
[ 420.594676] x25: ffffbe7eb0456000 x24: ffff0f1f40285e80
[ 420.594682] x23: ffff0f20988701f8 x22: ffff0f20988180a0
[ 420.594687] x21: ffff0f2098870698 x20: ffff0f2098870740
[ 420.594693] x19: ffff0f2098870698 x18: 0000000000000000
[ 420.594698] x17: 0000000000000000 x16: 0000000000000000
[ 420.594704] x15: 0000000000000000 x14: 0000000000000000
[ 420.594709] x13: 0000000000000000 x12: 0000000000000000
[ 420.594715] x11: 0000000000000000 x10: 0000000000000ab0
[ 420.594721] x9 : ffff80001e8f3850 x8 : ffff0f1f40286390
[ 420.594727] x7 : 0000000000000014 x6 : 00000003367e83d0
[ 420.594733] x5 : 00ffffffffffffff x4 : 0018a488d6956b26
[ 420.594738] x3 : 0000000000000017 x2 : ffffbe7eaebd0e20
[ 420.594744] x1 : ffff0f20988705c0 x0 : 0000000000000004
[ 420.594751] Call trace:
[ 420.594756] __vb2_queue_cancel+0x1b8/0x220
[ 420.594762] vb2_core_queue_release+0x30/0x60
[ 420.594767] _vb2_fop_release+0x88/0xb0
[ 420.594772] tegra_channel_close+0x68/0x190
[ 420.594779] v4l2_release+0xc0/0x100
[ 420.594787] __fput+0x80/0x260
[ 420.594792] ____fput+0x24/0x30
[ 420.594799] task_work_run+0x88/0xe0
[ 420.594805] do_exit+0x35c/0xb00
[ 420.594810] do_group_exit+0x4c/0xb0
[ 420.594815] get_signal+0x184/0x8c0
[ 420.594822] do_notify_resume+0x18c/0x990
[ 420.594826] work_pending+0xc/0x738
[ 420.594830] —[ end trace 31ed986d5b08021a ]—
[ 420.599640] videobuf2_common: driver bug: stop_streaming operation is leaving buf 00000000bc6ec174 in active state
[ 420.610323] videobuf2_common: driver bug: stop_streaming operation is leaving buf 000000002fcddda1 in active state
[ 420.621011] videobuf2_common: driver bug: stop_streaming operation is leaving buf 000000001eb43a75 in active state
[ 420.631686] videobuf2_common: driver bug: stop_streaming operation is leaving buf 000000008efa4063 in active state

Currently, we are unable to find a better way to activate the camera. We are seeking assistance in resolving this issue. Thank you very much for your help!

hello yangdonghai23,

it’s due to Jetson-IO’s camera configuration support Raspberry Pi Camera Module 2 instead of IMX219-77.

Hi Jerry,

Thank you very much for your reply!

I’ve looked into a lot of relevant cases and found that some similar modules can be used while others can’t. In most cases, the same Jetson-io.py configuration is used to enable similar IMX219 modules. I’m trying to figure out the root cause of this discrepancy. If possible, could you guide us on how to dig into the issues with using the camera module?

Our camera module has the same hardware as this one (https://www.waveshare.com/wiki/IMX219-77_Camera).

When we run dmesg | grep imx, we see:

imx219 10-0010: tegracam sensor driver: imx219_v2.0.6
tegra-camrtc-capture-vi tegra-capture-vi: subdev imx 10-0010 bound

Which suggests that the connection to the IMX219 module is successful. We’ve also confirmed that tests based on v4l2src can get data feedback. Considering the Jetson-io.py setup you mentioned, could this be a Device Tree configuration issue?

Thank you for your help!

hello yangdonghai23,

it’s v4l2 to access basic camera streams, please contact with sensor vendor for further supports.

Actually, we’ve already tried communicating many times. The process they provided is to select Camera IMX219-dual in Jetson-io.py, and then directly enter $ nvgstcapture-1.0 in the terminal to call the camera. This is what we don’t understand.
Currently, we can basically confirm that the camera is fine and can acquire RAW image data, but it seems that the Gstreamer command just doesn’t work properly. We currently have no further progress on this.

hello yangdonghai23,

there’re several topics report the same issue, actually.
please contact with sensor vendor, please check which Jetpack release version they’ve validated.