I am facing an issue with my Jetson system. When I boot my device, I can capture raw frames with v4l2-ctl just fine. I can also capture frames using GStreamer and nvarguscamerasrc without any problem.
However, I have noticed that after using GStreamer with nvarguscamerasrc, I am no longer able to use v4l2-ctl with this camera.
Note that when using V4L for direct access to sensor without Argus, you may disable bypass (add --set-ctrl=bypass_mode=0 to your v4l2-ctl command), otherwise it might fool Argus.
Adding --set-ctrl=bypass_mode=0 to the v4l2-ctl command solved the issue. Could you explain me what this does or direct me to some documentation that does ?
I’m unable to point out at any documentation, someone from NVIDIA may provide more accurate data.
My understanding is that the camera driver may be used in two different ways;
By default, to be used by Argus, a bypass in the driver will make Argus able to get raw bayer frames from sensor driver into ISP for debayering, auto-tuning gains,exposure,wb,… and providing YUV (NV12) frames into NVMM memory for further processing with VIC, GPU, Video encoders or decoders…
When using that mode, trying to acquire frames from V4L may lead to Argus being fooled.
If you want to get direct bayer frames from V4L API, don’t concurrently use same camera from Argus capture, and be sure to disable the bypass, so that Argus won’t receive any frame from your own V4L command.