Black Screen Issue on Sensor-ID 3 with Bayer Format Camera (AR0233)

Hi everyone,

I’m working with an Orin NX module on a custom carrier board equipped with two MAX96712 deserializers. Also, the kernel is L4T R36.4.4.

When previewing 8 YUV cameras (ISX021), everything works perfectly—all streams display correctly. However, when using a Bayer format camera (AR0233), the preview window for sensor-id=3 consistently shows a black screen. Interestingly, fpsdisplaysink reports that the stream is running at 30 FPS, but the image remains completely dark.

This issue occurs regardless of whether I run all cameras (sensor-id=0 to 7) or just a single one. Only the camera assigned to sensor-id=3 exhibits this black screen behavior.

Here’s the preview script I’m using:

#!/bin/bash
gst-launch-1.0 nvarguscamerasrc sensor-id=$1 ! 'video/x-raw(memory:NVMM), width=2048, height=1280, framerate=30/1' ! nvvidconv ! 'video/x-raw, format=(string)RGBA' ! videoconvert ! queue ! fpsdisplaysink video-sink=xvimagesink sync=false

Streaming video3 via v4l2-ctl also shows 30 FPS.

All 8 YUV cameras stream flawlessly without any black screen issues.

Has anyone encountered a similar issue or have suggestions on what might be causing this?

hello ting.chang,

may I know how many cameras in your system?
also, which CSI port is this sensor-id=3 camera used? please share the simple hardware connections for reference.

My setup uses MIPI CSI with 4-lane configuration:

  • Sensor IDs 0, 1, 2, 3 are connected to MAX96712-1 via CSI0 and CSI1, sharing the 4 lanes

  • Sensor IDs 4, 5, 6, 7 are connected to MAX96712-2 via CSI2 and CSI3, sharing the 4 lanes

In total, there are 8 cameras across two 4-lane CSI sets. Each set uses vc-id 0, 1, 2, 3 respectively.

Below is my DTS overlay for your reference:

orin-nx-ar0233-overlay-max96712-4lane.zip (3.2 KB)

hello ting.chang,

let me have confirmation.
your camera use-case is 8x AR0233, you’ve tested SerDes chip with 8 YUV camera instead, and verified all of YUV camera worked normally?

That’s correct. All 8 YUV cameras are operating normally. Among the 8 AR0233 cameras, only the unit with sensor-id=3 is displaying a black screen; the remaining 7 are functioning as expected.

hello ting.chang,

please give it a try to revise position property in the tegra-camera-platform
for instance,
let’s have multi-camera node definition as below for verification.

position property camera nodes
bottomleft video0
centerleft video1
centerright video2
topleft video3
bottomright video4
topright video5
bottomcenter video6
topcenter video7

Hi Jerry,

I modified the position, but the issue still remains unchanged.

hello ting.chang,

all right, please share me the latest device tree.
please also check it’s actually the camera node with position = "topleft"; having black screen failure.

Hi Jerry,

Here is the latst device tree:

orin-nx-ar0233-overlay-max96712-4lane_position-revise.zip (3.2 KB)

Could you advise how to verify whether the streaming camera node is using the “topleft” position?

hello ting.chang,

here’s API, Argus::ICameraProperties::getSensorPlacement() to check camera sensor placement position,
you may print out the value for cross-checking.

Hi Jerry,

It is the screenshot when sid=0:

And it is the screenshot when sid=3:

It is using the position “TOP_LEFT“

BTW, it is the screenshot for the sample 13_argus_multi_cameras:

hello ting.chang,

it looks no error logs has reported? is this camera facing to a bright light?
besides.. let’s try dump a frame by setting gain/exposure manually for checking.
$ v4l2-ctl --set-fmt-video=width=1920,height=1080,pixelformat=RG10 --set-ctrl bypass_mode=0 --stream-mmap --stream-skip=9 --stream-count=1 --set-ctrl=gain=200 --set-ctrl=exposure=2800 --stream-to=test.raw -d /dev/video0

Hi Jerry,

I’ve dumped a frame by below v4l2 command:

v4l2-ctl --set-ctrl bypass_mode=0 --set-fmt-video=width=2048,height=1280,pixelformat=RG12 --stream-mmap --stream-skip=9 --stream-count=1 --set-ctrl=gain=100 --set-ctrl=exposure=100 --stream-to=video3.raw -d /dev/video3

And preview the raw data by using ffplay:

ffplay -f rawvideo -pixel_format gray12le -video_size 2048x1280 video3.raw

The result shows the image frame is normal:

However, the gstreamer command is still show a black screen.

Any ideas?

hello ting.chang,

is it due to incorrect 3A calculation?
let’s try below gst pipeline to capture all the camera frames into jpeg file for examination.
for instance,
$ gst-launch-1.0 nvarguscamerasrc sensor-id=0 num-buffers=101 ! 'video/x-raw(memory:NVMM),width=1920, height=1080, framerate=30/1, format=NV12' ! nvvidconv ! jpegenc ! multifilesink location=~/Desktop/tmp/capture%d.jpeg -e

besides..
you’re able to capture validate frame with v4l2 IOCTL setting gain/exposure manually.
you may also try adding the sensor controls to nvarguscamerasrc for confirmation.
for instance,
$ gst-launch-1.0 -e nvarguscamerasrc sensor-id=0 num-buffers=1 ispdigitalgainrange='1 1' aelock=true gainrange='1 1' wbmode=3 exposuretimerange="300000000 300000000" ! "video/x-raw(memory:NVMM),width=1920,height=1080,framerate=30/1" ! nvjpegenc ! filesink location=capture-test.jpeg

Hi Jerry,

I ran the following command to capture multiple image frames. However, when using sensor-id=3, all the 101 captured frames are still black. But other sensor-ids are fine.

gst-launch-1.0 nvarguscamerasrc sensor-id=0 num-buffers=101 ispdigitalgainrange='1 1' aelock=true gainrange='1 1' wbmode=3 exposuretimerange="300000000 300000000" ! 'video/x-raw(memory:NVMM), width=2048, height=1280, framerate=30/1, format=NV12' ! nvvidconv ! jpegenc ! multifilesink location=capture%d.jpeg -e

hello ting.chang,

let’s configure below settings on the target to obtain Argus debug logs.
for instance,
$ sudo su
# pkill nvargus-daemon
# export enableCamCoreLogs=5
# nvargus-daemon

it will output lots of logs. please dig into the AE debug logs,
let’s check the prefix with runBreakDownAlgorithm output for more details.
for instance,
runBreakDownAlgorithm output ---: convergenceStatus: 1, framerate 30.00000, requiredCain 0.01330 totalAchievedCGains 0.01330 with AA 0.17361 {step 0, f-Number 2.40000}, ET 0.03333, AG 2.29763, ISPDG 1.00000

Hi Jerry,

The output of runBreakDownAlgorithm for both video2 and video3 is identical.
However, while the preview for video2 displays correctly, video3 shows a black screen.

Attached below are the nvargus-daemon logs with enableCamCoreLogs=5.
nvargus_camCoreLog_video2.txt (216.8 KB)
nvargus_camCoreLog_video3.txt (218.2 KB)

hello ting.chang,

could you please swap the sensor modules to check it’s hardware related issue?

Hi Jerry,

I’ve verified all hardware functions, and both the camera and hardware design appear to be working as expected.

Moreover, if this were a hardware issue, v4l2 shouldn’t be able to display the correct image—yet it does.

Given this, I believe the problem lies with nvargus.

hello ting.chang,

your debug logs shows convergenceStatus: 1, it meant it’s in the searching state, which has indicate specified algorithm is still searching for an optimal set of values.

besides.. all these cameras they’re sharing the same algorithm.
all these camera should have black screen scenario if that’s software stack issue.
I doubt it might be due to incorrect tuning file has applied, could you please check the badge property within your device tree. let’s try using another unique name that identifies this module.