OV9281 streaming

I am currently working on OV9281 camera sensor and I am able to capture raw img from the sensor, however I am trying to stream camera on nvidia jetson xavier nx som using nvarguscamerasrc but seems like its not streaming. Could you please help me how come I able to stream this camera.
I am using kernel version 5.10 and also is there any camera_override.isp file for the same. If so, kindly share any link if someone has used.

Thanks…

What’s the error log?

v4l2-ctl --list-formats-ext
ioctl: VIDIOC_ENUM_FMT
Type: Video Capture

[0]: 'RG10' (10-bit Bayer RGRG/GBGB)
	Size: Discrete 1280x800
		Interval: Discrete 0.017s (60.000 fps)
	Size: Discrete 1280x720
		Interval: Discrete 0.017s (60.000 fps)
	Size: Discrete 640x400
		Interval: Discrete 0.017s (60.000 fps)

v4l2-ctl --stream-mmap -d /dev/video0
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.35 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.35 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.35 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.35 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.35 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.35 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.35 fps

dmesg log:

191.011525] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 1, flags: 0, err_data 131072
[ 191.028106] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 2, flags: 0, err_data 131072
[ 191.061269] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 4, flags: 0, err_data 131072
[ 191.127525] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 8, flags: 0, err_data 131072
[ 191.144090] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 9, flags: 0, err_data 131072
[ 191.160660] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 10, flags: 0, err_data 131072
[ 191.186575] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 11, flags: 0, err_data 131072
[ 191.193802] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 12, flags: 0, err_data 131072
[ 191.210376] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 13, flags: 0, err_data 131072
[ 191.226951] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 14, flags: 0, err_data 131072
[ 191.243542] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 15, flags: 0, err_data 131072
[ 191.269366] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 16, flags: 0, err_data 131072
[ 191.276670] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 17, flags: 0, err_data 131072
[ 191.293213] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 18, flags: 0, err_data 160
[ 191.309801] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 19, flags: 0, err_data 131072
[ 191.326398] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 20, flags: 0, err_data 131072
[ 191.342982] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 21, flags: 0, err_data 131072
[ 191.359521] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 22, flags: 0, err_data 131072
[ 191.376090] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 23, flags: 0, err_data 131072
[ 191.392652] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 24, flags: 0, err_data 131072
[ 191.425814] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 26, flags: 0, err_data 131072
[ 191.442373] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 27, flags: 0, err_data 131072
[ 191.458978] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 28, flags: 0, err_data 131072
[ 191.475533] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 29, flags: 0, err_data 131072
[ 191.492076] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 30, flags: 0, err_data 131072
[ 191.518000] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 31, flags: 0, err_data 131072
[ 191.525252] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 32, flags: 0, err_data 131072
[ 191.541801] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 33, flags: 0, err_data 131072
[ 191.558395] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 34, flags: 0, err_data 131072
[ 191.574940] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 35, flags: 0, err_data 131072
[ 191.591491] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 36, flags: 0, err_data 160
[ 191.624661] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 38, flags: 0, err_data 131072
[ 191.641235] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 39, flags: 0, err_data 131072

this dmesg log hit when I try to stream using this cmd:

v4l2-ctl --stream-mmap -d /dev/video0

Sharing the trace log:

trace.txt (43.4 KB)

I mean what’t the gstreamer log?

And what’s the daemon log.

journalctl -u nvargus-daemon -f 

I am able to stream using nvarguscamerasrc but stream is slightly a pinkish tone.

OV9281 sensor is monochrome so how do I achieve monochrome gray tone.

Using mode type: gray and pixel_phase= y removes the video nodes. Only bayer with rggb or bggr works. Is that with argus architecture to forcefully mention bayer mode type.

Add below parameter to /var/nvidia/nvcam/settings/camera_overrides.isp

Need change the file to 664 to apply the isp overrides

demosaic.v5.family.use=CCCC
defaults.yuvMatrix[0] = {0.3333, 0.3333, 0.3333, 0}
defaults.yuvMatrix[1] = {0, 0, 0, 0}
defaults.yuvMatrix[2] = {0, 0, 0, 0}
defaults.yuvMatrix[3] = {0, 0, 0, 1}

could you please share any source of camera_overrides.isp file on nvidia forums

Actually it’s text file only you can create it by yourself.

Thanks

I streamed sucessfully but after one min or two stream stops. I am sharing logs for the reference.

gst-launch-1.0 nvarguscamerasrc sensor-id=0 ! ‘video/x-raw(memory:NVMM),width=1280,height=800,framerate=60/1’ ! nvvidconv ! nvv4l2h264enc bitrate=4000000 ! rtph264pay pt=96 ! udpsink host=192.168.55.100 port=5000 sync=false
Setting pipeline to PAUSED …
Opening in BLOCKING MODE
Pipeline is live and does not need PREROLL …
Setting pipeline to PLAYING …
New clock: GstSystemClock
Redistribute latency…
NvMMLiteOpen : Block : BlockType = 4
===== NvVideo: NVENC =====
NvMMLiteBlockCreate : Block : BlockType = 4
GST_ARGUS: Creating output stream
CONSUMER: Waiting until producer is connected…
GST_ARGUS: Available Sensor modes :
GST_ARGUS: 1280 x 800 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 = 0
Output Stream W = 1280 H = 800
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.
H264: Profile = 66, Level = 0
NVMEDIA: Need to set EMC bandwidth : 1692000
NVMEDIA: Need to set EMC bandwidth : 1692000
NvVideo: bBlitMode is set to TRUE
CONSUMER: Done Success
Got EOS from element “pipeline0”.
Execution ended after 0:03:45.699552256
Setting pipeline to NULL …
GST_ARGUS: Cleaning up
GST_ARGUS: Done Success
(Argus) Error Timeout: (propagating from src/rpc/socket/client/ClientSocketManager.cpp, function send(), line 137)
(Argus) Error Timeout: (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function dispatch(), line 91)
Freeing pipeline …
(Argus) Error Timeout: (propagating from src/rpc/socket/client/ClientSocketManager.cpp, function send(), line 137)
(Argus) Error Timeout: (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function dispatch(), line 91)
(Argus) Error InvalidState: Argus client is exiting with 2 outstanding client threads (in src/rpc/socket/client/ClientSocketManager.cpp, function recvThreadCore(), line 366)

journalctl -u nvargus-daemon -f
– Logs begin at Sat 2000-01-01 06:36:10 IST. –
Jan 01 06:37:08 ubuntu nvargus-daemon[1969]: === gst-launch-1.0[2028]: CameraProvider initialized (0xffffac60eec0)SCF: Error BadValue: NvPHSSendThroughputHints (in src/common/CameraPowerHint.cpp, function sendCameraPowerHint(), line 56)
Jan 01 06:37:08 ubuntu nvargus-daemon[1969]: E/ libnvphs:socket: Error[2]: socket connection /var/lib/nvphs/nvphsd.ctl to PHS failed: No such file or directory
Jan 01 06:37:08 ubuntu nvargus-daemon[1969]: D/ libnvphs:socket: Warning: connecting to Power Hinting Service failed. Is PHS running?
Jan 01 06:37:08 ubuntu nvargus-daemon[1969]: E/ libnvphs: Error: NvPHSSendThroughputHints[usecase=camera, hint=MinCPU, value=4294967295, timeout_ms=1000]: queue_or_send() failed
Jan 01 06:37:08 ubuntu nvargus-daemon[1969]: LSC: LSC surface is not based on full res!
Jan 01 06:39:50 ubuntu systemd[1]: Stopping Argus daemon…
Jan 01 06:39:51 ubuntu nvargus-daemon[1969]: === gst-launch-1.0[2028]: CameraProvider destroyed (0xffffac60eec0)=== gst-launch-1.0[2028]: Connection closed (FFFFB2E9C900)=== gst-launch-1.0[2028]: Connection cleaned up (FFFFB2E9C900)
Jan 01 06:39:51 ubuntu systemd[1]: nvargus-daemon.service: Succeeded.
Jan 01 06:39:51 ubuntu systemd[1]: Stopped Argus daemon.
Jan 01 06:39:51 ubuntu systemd[1]: Started Argus daemon.
Jan 01 06:40:18 ubuntu nvargus-daemon[2129]: === NVIDIA Libargus Camera Service (0.99.33)=== Listening for connections…=== gst-launch-1.0[2131]: Connection established (FFFF8A75C900)OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module0
Jan 01 06:40:18 ubuntu nvargus-daemon[2129]: OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module1
Jan 01 06:40:18 ubuntu nvargus-daemon[2129]: NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
Jan 01 06:40:18 ubuntu nvargus-daemon[2129]: NvPclHwGetModuleList: No module data found
Jan 01 06:40:18 ubuntu nvargus-daemon[2129]: NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
Jan 01 06:40:18 ubuntu nvargus-daemon[2129]: NvPclHwGetModuleList: No module data found
Jan 01 06:40:18 ubuntu nvargus-daemon[2129]: OFParserGetVirtualDevice: NVIDIA Camera virtual enumerator not found in proc device-tree
Jan 01 06:40:18 ubuntu nvargus-daemon[2129]: ---- imager: Found override file [/var/nvidia/nvcam/settings/camera_overrides.isp]. ----
Jan 01 06:40:19 ubuntu nvargus-daemon[2129]: NvCameraIspUnpackingBlob 156: Blob: Wrong magic number!
Jan 01 06:40:19 ubuntu nvargus-daemon[2129]: CAM: serial no file already exists, skips storing againLSC: LSC surface is not based on full res!
Jan 01 06:40:19 ubuntu nvargus-daemon[2129]: ---- imager: Found override file [/var/nvidia/nvcam/settings/camera_overrides.isp]. ----
Jan 01 06:40:19 ubuntu nvargus-daemon[2129]: NvCameraIspUnpackingBlob 156: Blob: Wrong magic number!
Jan 01 06:40:19 ubuntu nvargus-daemon[2129]: CAM: serial no file already exists, skips storing againLSC: LSC surface is not based on full res!
Jan 01 06:40:19 ubuntu nvargus-daemon[2129]: E/ libnvphs:socket: Error[2]: socket connection /var/lib/nvphs/nvphsd.ctl to PHS failed: No such file or directory
Jan 01 06:40:19 ubuntu nvargus-daemon[2129]: D/ libnvphs:socket: Warning: connecting to Power Hinting Service failed. Is PHS running?
Jan 01 06:40:19 ubuntu nvargus-daemon[2129]: === gst-launch-1.0[2131]: CameraProvider initialized (0xffff846105b0)SCF: Error BadValue: NvPHSSendThroughputHints (in src/common/CameraPowerHint.cpp, function sendCameraPowerHint(), line 56)
Jan 01 06:40:19 ubuntu nvargus-daemon[2129]: E/ libnvphs:socket: Error[2]: socket connection /var/lib/nvphs/nvphsd.ctl to PHS failed: No such file or directory
Jan 01 06:40:19 ubuntu nvargus-daemon[2129]: D/ libnvphs:socket: Warning: connecting to Power Hinting Service failed. Is PHS running?
Jan 01 06:40:19 ubuntu nvargus-daemon[2129]: E/ libnvphs: Error: NvPHSSendThroughputHints[usecase=camera, hint=MinCPU, value=4294967295, timeout_ms=1000]: queue_or_send() failed
Jan 01 06:40:19 ubuntu nvargus-daemon[2129]: NvCameraIspUnpackingBlob 156: Blob: Wrong magic number!
Jan 01 06:40:19 ubuntu nvargus-daemon[2129]: CAM: serial no file already exists, skips storing againLSC: LSC surface is not based on full res!
Jan 01 06:44:05 ubuntu nvargus-daemon[2129]: SCF: Error InvalidState: Timeout!! Skipping requests on sensor GUID 1, capture sequence ID = 6835 draining session frameStart events 2
Jan 01 06:44:05 ubuntu nvargus-daemon[2129]: (in src/services/capture/FusaCaptureViCsiHw.cpp, function waitCsiFrameStart(), line 531)
Jan 01 06:44:05 ubuntu nvargus-daemon[2129]: SCF: Error Timeout: Sending critical error event for Session 1
Jan 01 06:44:05 ubuntu nvargus-daemon[2129]: (in src/api/Session.cpp, function sendErrorEvent(), line 1039)
Jan 01 06:44:05 ubuntu nvargus-daemon[2129]: SCF: Error InvalidState: Sensor GUID 1 is in error state. Skipping requests, capture sequence ID = 6836 continue draining session frameStart events 1
Jan 01 06:44:05 ubuntu nvargus-daemon[2129]: (in src/services/capture/FusaCaptureViCsiHw.cpp, function waitCsiFrameStart(), line 545)
Jan 01 06:44:05 ubuntu nvargus-daemon[2129]: SCF: Error InvalidState: Sensor 1 already in same state
Jan 01 06:44:05 ubuntu nvargus-daemon[2129]: (in src/services/capture/CaptureServiceDeviceSensor.cpp, function setErrorState(), line 100)
Jan 01 06:44:05 ubuntu nvargus-daemon[2129]: SCF: Error InvalidState: Timeout!! Skipping requests on sensor GUID 1, capture sequence ID = 6834 draining session frameEnd events 3
Jan 01 06:44:05 ubuntu nvargus-daemon[2129]: (in src/services/capture/FusaCaptureViCsiHw.cpp, function waitCsiFrameEnd(), line 648)
Jan 01 06:44:05 ubuntu nvargus-daemon[2129]: Module_id 30 Severity 2 : (fusa) Error: Timeout propagating from:/capture/src/fusaViHandler.cpp 771
Jan 01 06:44:05 ubuntu nvargus-daemon[2129]: SCF: Error BadParameter: CC has already been disposed (in src/components/CaptureContainerManager.cpp, function dispose(), line 161)
Jan 01 06:44:09 ubuntu nvargus-daemon[2129]: Module_id 30 Severity 2 : (fusa) Error: Timeout propagating from:/capture/src/fusaViHandler.cpp 771
Jan 01 06:44:09 ubuntu nvargus-daemon[2129]: SCF: Error InvalidState: Timeout!! Skipping requests on sensor GUID 1, capture sequence ID = 6835 draining session frameEnd events 2
Jan 01 06:44:09 ubuntu nvargus-daemon[2129]: (in src/services/capture/FusaCaptureViCsiHw.cpp, function waitCsiFrameEnd(), line 648)
Jan 01 06:44:09 ubuntu nvargus-daemon[2129]: SCF: Error BadParameter: CC has already been disposed (in src/components/CaptureContainerManager.cpp, function dispose(), line 161)
Jan 01 06:44:09 ubuntu nvargus-daemon[2129]: SCF: Error InvalidState: Sensor 1 already in same state
Jan 01 06:44:09 ubuntu nvargus-daemon[2129]: (in src/services/capture/CaptureServiceDeviceSensor.cpp, function setErrorState(), line 100)
Jan 01 06:44:09 ubuntu nvargus-daemon[2129]: SCF: Error InvalidState: Timeout!! Skipping requests on sensor GUID 1, capture sequence ID = 6836 draining session frameEnd events 1
Jan 01 06:44:09 ubuntu nvargus-daemon[2129]: (in src/services/capture/FusaCaptureViCsiHw.cpp, function waitCsiFrameEnd(), line 648)
Jan 01 06:44:09 ubuntu nvargus-daemon[2129]: SCF: Error BadParameter: CC has already been disposed (in src/components/CaptureContainerManager.cpp, function dispose(), line 161)

What’s the BSP version?

cat /etc/nv_tegra_release

cat /etc/nv_tegra_release

R35 (release), REVISION: 6.1, GCID: 39721438, BOARD: t186ref, EABI: aarch64, DATE: Tue Mar 4 10:13:09 UTC 2025

Apply the solution form below to verify.

[camera stability][t234]
https://forums.developer.nvidia.com/t/306195/9

One more thing after applying your suggestion for isp tuning pinkish tone gone but still there is too much noise and no clarity in the feed so could you please suggest some more add on parameters for isp tuning using camera_overrides.isp file. It would be a great help for me to move forward.

Thanks in advance..

Please attached the picture to show the problem to understand the problem.

Thanks

Can you tell what exactly the problem?

  1. Noise in low-light conditions
  2. Lack of sharpness and contrast optimization
  3. Inconsistent grayscale reproduction for the monochrome OV9281 sensor
  4. contrast optimization
  5. stable exposure/gain behavior

Could you please help with:

  • Recommended ISP tuning parameters for OV9281 monochrome sensor

  • Reference ISP override configuration

  • Guidance for noise reduction/sharpening tuning

  • Any required calibration workflow for Jetson Argus ISP

Sorry to tell. We don’t support monochrome sensor tuning.

mode_type = “grey”;
pixel_phase = “y”;

Is this mode format is supported for monochrome sensor ov9281 I am using or do I need to forcefully use bayer format rg10 ?

Argus only support Bayer format.

For grey format you can use v4l2 app like v4l2src …