Odd IMX477 works once, then refuses to relaunch/work after a delay unless board rebooted

Hello,

I am facing a very strange issue that has left me scratching my head for the past 4 days. I have gone through countless forum posts and searched the internet, but to no avail. Kindly help me figure this out.

The camera works perfectly fine the first time I launch it using nvgstcapture-1.0 or gst-launch-1.0. It pops open the preview window, captures frames and everything is perfect.
I close it properly using qor by closing the preview window and then try to launch it after a few minutes, it fails miserably and never works again until I reboot.

The strangest bit is that it even works on quick relaunches (If I relaunch immediately after closing the working instance, it works again without any problems). But if there’s a time gap between launch attempts, it starts to fail endlessly.

I do nothing in between the two instances, it just gives up. I am attaching the logs and all the attempts I have made to solve the issue.

SETUP:

  • Arducam IMX-477 camera module (Manual Focus)
  • Jetson Orin Nano Super Developer Kit (Yahboom Carrier Board)
  • Latest Jetpack 6.2.1 installed using the Nvidia SDK Manager with all the Runtime Components
  • IMX477 DTBO applied using the Jetson-io

ADDITIONAL INFO:

This is a fresh installation, I have not modified anything or installed anything that would interfere with the camera/kernel/argus.

I have tried a different IMX447 camera module ( Same behavior )
I have tried Jetpack v6.1 ( Same behavior)
I have tried installing Arducam IMX447 Drivers https://github.com/ArduCAM/MIPI_Camera/releases/download/v0.0.3/install_full.sh
( Same behavior)
I have tried changing the CSI Port ( Same behavior )
I have tried restarting the nvargus-daemon.service ( Same behavior )
I can still see the camera when I run v4l2-ctl --list-devices
I am using a single camera at the moment

LOGS:

cat /etc/nv_tegra_release

# R36 (release), REVISION: 4.4, GCID: 41062509, BOARD: generic, EABI: aarch64, DATE: Mon Jun 16 16:07:13 UTC 2025
# KERNEL_VARIANT: oot
TARGET_USERSPACE_LIB_DIR=nvidia
TARGET_USERSPACE_LIB_DIR_PATH=usr/lib/aarch64-linux-gnu/nvidia

dpkg-query --show nvidia-l4t-core

nvidia-l4t-core 36.4.4-20250616085344

v4l2-ctl --list-devices

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

vi-output, imx477 9-001a (platform:tegra-capture-vi:2):
        /dev/video0

sudo dmesg | grep imx477

[   11.016583] imx477 9-001a: tegracam sensor driver:imx477_v2.0.6
[   11.319220] tegra-camrtc-capture-vi tegra-capture-vi: subdev imx477 9-001a bound

Failed nvgstcapture-1.0

CONSUMER: Waiting until producer is connected...
GST_ARGUS: Available Sensor modes :
GST_ARGUS: 4032 x 3040 FR = 21.000000 fps Duration = 47619048 ; Analog Gain range min 1.000000, max 22.250000; Exposure Range min 13000, max 683709000;

GST_ARGUS: 3840 x 2160 FR = 29.999999 fps Duration = 33333334 ; Analog Gain range min 1.000000, max 22.250000; Exposure Range min 13000, max 683709000;

GST_ARGUS: 1920 x 1080 FR = 59.999999 fps Duration = 16666667 ; Analog Gain range min 1.000000, max 22.250000; Exposure Range min 13000, max 683709000;

GST_ARGUS: Running with following settings:
   Camera index = 0 
   Camera mode  = 2 
   Output Stream W = 1920 H = 1080 
   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:734 NvBufSurfaceFromFd Failed.
Error generated. /dvs/git/dirty/git-master_linux/multimedia/nvgstreamer/gst-nvarguscamera/gstnvarguscamerasrc.cpp, threadFunction:245 (propagating)
q
GST_ARGUS: Cleaning up
GST_ARGUS: Done Success

systemctl status nvargus-daemon.service

nvargus-daemon.service - Argus daemon
     Loaded: loaded (/etc/systemd/system/nvargus-daemon.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2025-09-17 10:38:01 BST; 37min ago
   Main PID: 874 (nvargus-daemon)
      Tasks: 1 (limit: 8810)
     Memory: 180.5M
        CPU: 15.323s
     CGroup: /system.slice/nvargus-daemon.service
             └─874 /usr/sbin/nvargus-daemon

Sep 17 10:47:53 ubuntu nvargus-daemon[874]: SCF: Error InvalidState: Sensor 0 already in same state
Sep 17 10:47:53 ubuntu nvargus-daemon[874]:  (in src/services/capture/CaptureServiceDeviceSensor.cpp, function setErrorState(), line 100)
Sep 17 10:47:53 ubuntu nvargus-daemon[874]: SCF: Error InvalidState: Timeout!! Skipping requests on sensor GUID 0, capture sequence ID = 3 draining session frameEnd events 2
Sep 17 10:47:53 ubuntu nvargus-daemon[874]:  (in src/services/capture/FusaCaptureViCsiHw.cpp, function waitCsiFrameEnd(), line 646)
Sep 17 10:47:53 ubuntu nvargus-daemon[874]: SCF: Error InvalidState: Sensor 0 already in same state
Sep 17 10:47:53 ubuntu nvargus-daemon[874]:  (in src/services/capture/CaptureServiceDeviceSensor.cpp, function setErrorState(), line 100)
Sep 17 10:47:53 ubuntu nvargus-daemon[874]: SCF: Error InvalidState: Timeout!! Skipping requests on sensor GUID 0, capture sequence ID = 4 draining session frameEnd events 1
Sep 17 10:47:53 ubuntu nvargus-daemon[874]:  (in src/services/capture/FusaCaptureViCsiHw.cpp, function waitCsiFrameEnd(), line 646)
Sep 17 10:47:53 ubuntu nvargus-daemon[874]: SCF: Error BadParameter: CC has already been disposed (in src/components/CaptureContainerManager.cpp, function dispose(), line 161)
Sep 17 10:48:05 ubuntu nvargus-daemon[874]: PowerServiceCore:handleRequests: timePassed = 12330

Hi @imran16 !

Could you please share the output of dmesg logs right after the capturing fails?

Also can you try capturing using gst-launch-1.0 v4l2src... and v4l2-ctl... to rule out if the issue is specific to GStreamer, nvarguscamerasrc or the nvargus-daemon.

Nico
Best regards
Embedded Software Engineer at ProventusNova

After failed confirm the sensor driver by “v4l2-ctl –stream-mmap -c bypass_mode=0”

If v4l2-ctl unable to capture data from the sensor it could be the sensor driver or HW problem.

Hello Shane,

Thank you for your response and attention. v4l2-ctl does not provide any output. Even when it is the first attempt to launch the camera stream after boot. Although when used with the verbose flag, I do see something happening. Please find the logs attached. Regardless, the output stays the same whether it is the first attempt to launch the camera or running this command after the argus has failed with the nvbuf_utils: dmabuf_fd -1 mapped entry NOT found error.

v4l2-ctl --verbose --stream-mmap -c bypass_mode=0

VIDIOC_QUERYCAP: ok
VIDIOC_S_EXT_CTRLS: ok
		VIDIOC_REQBUFS returned 0 (Success)
		VIDIOC_QUERYBUF returned 0 (Success)
		VIDIOC_QUERYBUF returned 0 (Success)
		VIDIOC_QUERYBUF returned 0 (Success)
		VIDIOC_QUERYBUF returned 0 (Success)
		VIDIOC_QBUF returned 0 (Success)
		VIDIOC_QBUF returned 0 (Success)
		VIDIOC_QBUF returned 0 (Success)
		VIDIOC_QBUF returned 0 (Success)
		VIDIOC_STREAMON returned 0 (Success)
cap dqbuf: 0 seq:      0 bytesused: 24514560 ts: 0.000000 (error, ts-monotonic, ts-src-eof)
cap dqbuf: 1 seq:      1 bytesused: 24514560 ts: 0.000000 (error, ts-monotonic, ts-src-eof)
cap dqbuf: 2 seq:      2 bytesused: 24514560 ts: 0.000000 (error, ts-monotonic, ts-src-eof)
cap dqbuf: 3 seq:      3 bytesused: 24514560 ts: 0.000000 (error, ts-monotonic, ts-src-eof)
cap dqbuf: 0 seq:      4 bytesused: 24514560 ts: 0.000000 (error, ts-monotonic, ts-src-eof)
cap dqbuf: 1 seq:      5 bytesused: 24514560 ts: 0.000000 (error, ts-monotonic, ts-src-eof)
cap dqbuf: 2 seq:      6 bytesused: 24514560 ts: 0.000000 (error, ts-monotonic, ts-src-eof)
cap dqbuf: 3 seq:      7 bytesused: 24514560 ts: 0.000000 (error, ts-monotonic, ts-src-eof)
cap dqbuf: 0 seq:      8 bytesused: 24514560 ts: 0.000000 (error, ts-monotonic, ts-src-eof)
cap dqbuf: 1 seq:      9 bytesused: 24514560 ts: 0.000000 (error, ts-monotonic, ts-src-eof)
cap dqbuf: 2 seq:     10 bytesused: 24514560 ts: 0.000000 (error, ts-monotonic, ts-src-eof)
cap dqbuf: 3 seq:     11 bytesused: 24514560 ts: 0.000000 (error, ts-monotonic, ts-src-eof)
cap dqbuf: 0 seq:     12 bytesused: 24514560 ts: 0.000000 (error, ts-monotonic, ts-src-eof)
cap dqbuf: 1 seq:     13 bytesused: 24514560 ts: 0.000000 (error, ts-monotonic, ts-src-eof)
cap dqbuf: 2 seq:     14 bytesused: 24514560 ts: 0.000000 (error, ts-monotonic, ts-src-eof)
cap dqbuf: 3 seq:     15 bytesused: 24514560 ts: 0.000000 (error, ts-monotonic, ts-src-eof)
cap dqbuf: 0 seq:     16 bytesused: 24514560 ts: 0.000000 (error, ts-monotonic, ts-src-eof)
cap dqbuf: 1 seq:     17 bytesused: 24514560 ts: 0.000000 (error, ts-monotonic, ts-src-eof)
cap dqbuf: 2 seq:     18 bytesused: 24514560 ts: 0.000000 (error, ts-monotonic, ts-src-eof)
cap dqbuf: 3 seq:     19 bytesused: 24514560 ts: 0.000000 (error, ts-monotonic, ts-src-eof)
cap dqbuf: 0 seq:     20 bytesused: 24514560 ts: 0.000000 (error, ts-monotonic, ts-src-eof)
cap dqbuf: 1 seq:     21 bytesused: 24514560 ts: 0.000000 (error, ts-monotonic, ts-src-eof)
cap dqbuf: 2 seq:     22 bytesused: 24514560 ts: 0.000000 (error, ts-monotonic, ts-src-eof)
cap dqbuf: 3 seq:     23 bytesused: 24514560 ts: 0.000000 (error, ts-monotonic, ts-src-eof)
cap dqbuf: 0 seq:     24 bytesused: 24514560 ts: 0.000000 (error, ts-monotonic, ts-src-eof)
cap dqbuf: 1 seq:     25 bytesused: 24514560 ts: 0.000000 (error, ts-monotonic, ts-src-eof)
cap dqbuf: 2 seq:     26 bytesused: 24514560 ts: 0.000000 (error, ts-monotonic, ts-src-eof)
cap dqbuf: 3 seq:     27 bytesused: 24514560 ts: 0.000000 (error, ts-monotonic, ts-src-eof)
cap dqbuf: 0 seq:     28 bytesused: 24514560 ts: 0.000000 (error, ts-monotonic, ts-src-eof)
cap dqbuf: 1 seq:     29 bytesused: 24514560 ts: 0.000000 (error, ts-monotonic, ts-src-eof)
cap dqbuf: 2 seq:     30 bytesused: 24514560 ts: 0.000000 (error, ts-monotonic, ts-src-eof)
cap dqbuf: 3 seq:     31 bytesused: 24514560 ts: 0.000000 (error, ts-monotonic, ts-src-eof)
cap dqbuf: 0 seq:     32 bytesused: 24514560 ts: 0.000000 (error, ts-monotonic, ts-src-eof)
cap dqbuf: 1 seq:     33 bytesused: 24514560 ts: 0.000000 (error, ts-monotonic, ts-src-eof)
cap dqbuf: 2 seq:     34 bytesused: 24514560 ts: 0.000000 (error, ts-monotonic, ts-src-eof)
cap dqbuf: 3 seq:     35 bytesused: 24514560 ts: 0.000000 (error, ts-monotonic, ts-src-eof)
cap dqbuf: 0 seq:     36 bytesused: 24514560 ts: 0.000000 (error, ts-monotonic, ts-src-eof)
cap dqbuf: 1 seq:     37 bytesused: 24514560 ts: 0.000000 (error, ts-monotonic, ts-src-eof)
cap dqbuf: 2 seq:     38 bytesused: 24514560 ts: 0.000000 (error, ts-monotonic, ts-src-eof)

These last lines keep repeating.


P.S:

The nvgstcapture-1.0 does not work after I use v4l2-ctl to launch the stream. I have to reboot the device to make the nvgstcapture-1.0 work again.

Hello Nico,

Thank you for your response. Please see my reply to Shane for the v4l2-ctl output.

I do not get any output on dmesg when the nvgstcapture-1.0 or gst-launch-1.0 fails. But I get messages when I run the v4l2-ctl command.
Please find the logs below:

[  219.770275] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 8192
[  219.823733] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 8192
[  219.877185] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 8192
[  219.930637] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 8192
[  219.984099] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 8192
[  220.037542] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 8192
[  220.091006] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 8192
[  220.144456] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 8192
[  220.197902] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 8192
[  220.251358] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 8192
[  220.304799] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 8192
[  220.358255] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 8192
[  220.411704] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 8192
[  220.465157] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 8192
[  220.518625] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 8192
[  220.572061] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 8192
[  220.625525] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 8192
[  220.678966] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 8192
[  220.732424] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 8192

The following pipeline does not work either ( Regardless of the state):

gst-launch-1.0 v4l2src ! fakesink

Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Internal data stream error.
Additional debug info:
../libs/gst/base/gstbasesrc.c(3127): gst_base_src_loop (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
streaming stopped, reason not-negotiated (-4)
ERROR: pipeline doesn't want to preroll.
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
Redistribute latency...
New clock: GstSystemClock
Got EOS from element "pipeline0".
Execution ended after 0:00:00.000320035
Setting pipeline to NULL ...
Freeing pipeline ...

I appreciate your assistance with this weird issue.

Hey @imran16,

Thanks for sharing the logs!

The errors seem related to the CSI->VI connection failing after the first successful capture. I agree with @ShaneCCC that it might be a sensor driver issue.

Additionally, I downloaded the sources you mentioned for Orin Nano Jetpack 6.2.1 here: ARDUCAM IMX477 JP6.2.1

I see the nv_imx477.ko andtegra-camera.ko module in /boot/arducam/ and the DTBO files under /boot/arducam/dts. Can you please confirm you’re actually using both modules and the matching DTBO? As well for the other files included in the sources.

To verify which driver is loaded and try switching to the Arducam one:

  1. Check the currently loaded module info:
modinfo nv_imx477
  1. Unload the existing module:
sudo modprobe -r nv_imx477
  1. Load the Arducam sensor driver manually:
sudo insmod /boot/arducam/nv_imx477.ko
  1. Check the module info for clues:
modinfo /boot/arducam/nv_imx477.ko
  1. Try capturing again and check if this resolves the issue.

The tegra-camera.ko can be copied to: /lib/modules/5.15.148-tegra/updates/drivers/media/platform/tegra/camera/ so it is loaded automatically at boot. Run sudo depmod -a then reboot.

Hope this helps!

Nico

1 Like

Hey Nico,

Thank you very much for your response. I did try to load the drivers as you said but the results were the same.
Out of frustration I ordered the official Nvidia Developer Kit and it worked as intended right out of the box.

So for people out there using the Yahboom Carrier Board, the issue lies in the board, and the IMX477 camera works perfectly with the official carrier board. As Yahboom does not provide any documentation related to the board, there is essentially nothing much you can do about it.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.