Hello NVIDIA team,
I am currently bringing up a Sony IMX900 camera sensor on a Jetson Orin NX SOM and I am facing a system hang as soon as I attempt actual V4L2 streaming or frame capture.
I would appreciate guidance on debugging the CSI/NVCSI/VI path and identifying why the system becomes temporarily inaccessible during STREAMON.
Hardware
- NVIDIA Jetson Orin NX SOM
- Sony IMX900 sensor
- Direct CSI-2 connection from IMX900 to Orin NX
- 2 CSI-2 lanes
- RAW10
- 1024x720
- 30 FPS
- Sensor CSI data rate: 594 Mbps/lane
Software
- Jetson Orin NX
- Linux kernel:
5.15.148-tegra - Jetpack version: 36.4.4
Current bring-up status
The following stages are working successfully:
- IMX900 I2C communication
- Sensor reset GPIO
- Sensor driver probe
- Sensor detection
- V4L2 sensor subdevice creation
- NVCSI media link
- VI media link
/dev/video0creation
The driver probe log is:
fr_imx900: module verification failed: signature and/or required key missing - tainting kernel
imx900 9-001a: probing v4l2 sensor
imx900 9-001a: imx900_parse_dt: ADI GUI POC Device Tree Parser active
imx900 9-001a: IMX900 reset GPIO parsed: 397
imx900 9-001a: IMX900 reset GPIO initialized LOW: 397
imx900 9-001a: tegracam sensor driver:imx900_v2.0.6
imx900 9-001a: imx900_power_on: power on sequence starting
imx900 9-001a: IMX900 reset LOW gpio=397
imx900 9-001a: IMX900 reset HIGH gpio=397
imx900 9-001a: imx900_board_setup: Board setup successful
imx900 9-001a: imx900_power_off: power off sequence starting
imx900 9-001a: IMX900 reset LOW gpio=397
imx900 9-001a: imx900_board_setup: sensor left in RESET LOW state
tegra-camrtc-capture-vi tegra-capture-vi: subdev imx900 9-001a bound
imx900 9-001a: Detected imx900 sensor
The module is loaded:
fr_imx900 24576 0
tegra_camera 217088 4 nvhost_isp5,nvhost_nvcsi_t194,fr_imx900,nvhost_vi5
Media topology
media-ctl -p reports:
Media controller API version 5.15.148
Media device information
------------------------
driver tegra-camrtc-ca
model NVIDIA Tegra Video Input Device
driver version 5.15.148
Device topology
- entity 1: imx900 9-001a (1 pad, 1 link)
type V4L2 subdev subtype Sensor
device node name /dev/v4l-subdev0
pad0: Source
[fmt:SRGGB10_1X10/1024x720@1/30 field:none colorspace:srgb]
-> "13e00000.host1x:nvcsi@15a00000-":0 [ENABLED]
- entity 3: 13e00000.host1x:nvcsi@15a00000- (2 pads, 2 links)
type V4L2 subdev subtype Unknown
device node name /dev/v4l-subdev1
pad0: Sink
<- "imx900 9-001a":0 [ENABLED]
pad1: Source
-> "vi-output, imx900 9-001a":1 [ENABLED]
- entity 6: vi-output, imx900 9-001a (1 pad, 1 link)
type V4L flags
device node name /dev/video0
pad0: Sink
<- "13e00000.host1x:nvcsi@15a00000-":1 [ENABLED]
So the media graph is:
IMX900
|
v
NVCSI
|
v
VI
|
v
/dev/video0
All media links are enabled.
V4L2 format
Running:
v4l2-ctl --list-formats-ext -d /dev/video0
returns:
[0]: 'RG10' (10-bit Bayer RGRG/GBGB)
Size: Discrete 1024x720
Interval: Discrete 0.033s (30.000 fps)
The format negotiation itself works.
Actual capture problem
I am unable to perform actual frame capture.
I run:
v4l2-ctl \
-d /dev/video0 \
--set-fmt-video=width=1024,height=720,pixelformat=RG10 \
--set-parm=30 \
--stream-mmap \
--stream-count=1 \
--stream-to=/tmp/imx900.raw \
--verbose
The output is:
VIDIOC_QUERYCAP: ok
VIDIOC_G_FMT: ok
VIDIOC_S_FMT: ok
Format Video Capture:
Width/Height : 1024/720
Pixel Format : 'RG10' (10-bit Bayer RGRG/GBGB)
Field : None
Bytes per Line : 2048
Size Image : 1474560
Colorspace : sRGB
VIDIOC_S_PARM: ok
Frame rate set to 30.000 fps
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)
HANGS
The important observation is that the system becomes temporarily inaccessible immediately after starting the capture operation.
After approximately 10β20 seconds, access to the SOM returns.
The same behavior occurs when attempting V4L2 streaming and when attempting V4L2 operations that require the camera pipeline to become active.
Because the SOM temporarily becomes inaccessible, I am currently unable to reliably collect the kernel messages generated at the exact moment of the failure.
Questions
- What is the recommended way to debug a Jetson Orin NX system that becomes temporarily inaccessible during V4L2
STREAMON? - Is there a recommended NVIDIA debug configuration, tracepoint, dynamic-debug setting, or debugfs interface for diagnosing NVCSI/VI failures?
- How can I determine whether the hang occurs in:
VIDIOC_STREAMON- the IMX900 sensor driverβs
start_streaming() - NVCSI
- VI
- camera RTCPU/RCE
- waiting for the first frame?
- Are there specific NVCSI/VI error counters or debug registers that I should inspect for a direct 2-lane CSI-2 RAW10 sensor?
- Is there a recommended way to capture kernel logs when the Jetson temporarily loses SSH/console access during the camera operation?
- Could the temporary system hang indicate an NVCSI/VI timeout caused by the sensor not transmitting valid CSI-2 packets or by an incorrect CSI timing/configuration?
- Are there any NVIDIA-specific commands you recommend running before/after
STREAMONto diagnose this?
Any guidance on the correct debugging sequence would be greatly appreciated.
At this point my primary goal is simply to capture one RAW10 frame successfully from /dev/video0.
Thank you.
