In first case when i launch 6 argus cameras first and then couple of v4l2 cameras , everything fails. but if i launch non argus/v4l2 camera captures first and then from argus cameras, everything works initially but later at some point random v4l2 streams stop. this is application log for first case. initialised and opened 6 argus camera sessions successfully for capturing and then two v4l2 cameras(tuve) initialised successfully but while initlializing third one, all argus camera captures starts failing to acquire frame for resource allocation issues or some other reason?
Argus Camera device 0 was requested but only 6 are available.
Capturing from device using sensor mode (1936x1096)
Exposure Time Range: [2000000 - 33000000] nanoseconds
argus camera 1 initialized
Argus Camera device 1 was requested but only 6 are available.
Capturing from device using sensor mode (1936x1096)
Exposure Time Range: [2000000 - 33000000] nanoseconds
argus camera 2 initialized
Argus Camera device 2 was requested but only 6 are available.
Capturing from device using sensor mode (1936x1096)
Exposure Time Range: [2000000 - 33000000] nanoseconds
argus camera 3 initialized
Camera device 3 was requested but only 6 are available.
Capturing from device using sensor mode (1936x1096)
Exposure Time Range: [2000000 - 33000000] nanoseconds
argus camera 4 initialized
Argus Camera device 4 was requested but only 6 are available.
Capturing from device using sensor mode (1936x1096)
Exposure Time Range: [2000000 - 33000000] nanoseconds
argus camera 5 initialized
Argus Camera device 5 was requested but only 6 are available.
Capturing from device using sensor mode (1936x1096)
Exposure Time Range: [2000000 - 33000000] nanoseconds
argus camera 6 initialized
Opening Video at /dev/video1
queue size = 3
tuve camera 1 loaded successfully
Opening Video at /dev/video2
queue size = 3
tuve camera 2 loaded successfully
Opening Video at /dev/video3
Failed to acquire frame
Failed to acquire frame
Failed to acquire frame
Failed to acquire frame
Failed to acquire frame
Failed to acquire frame
Failed to acquire frame
Failed to acquire frame
Failed to acquire frame
does it seems to resource exhaustion or allocation issue between argus and v4l2 captures? how to address it ? same issue we faced on xavier and for that reason we have moved to orin .
Does those camera using virtual channel?
There’s no problem for 3 cameras open by Argus and 3 cameras open by v4l2-ctl on my six cameras board on AGX Xavier.
yes they use virtual channels. we have d3 engineering fpd-link 16 ports board. we have 6 argus cameras(imx390) 4 lanes and 3 one lane v4l2 cameras.
argus cameras are connected to first 0-5 ports and v4l2 cameras are connected to port 13-14-15 on d3 board. this is virtual channels setting for vi and csi ports from 0-15.
__overlay__ {
bus@0 {
host1x@13e00000 {
nvcsi@15a00000 {
status = "okay";
num-channels = <0x10>;
#address-cells = <0x01>;
#size-cells = <0x00>;
phandle = <0x5b>;
channel@15 {
reg = <0x0f>;
phandle = <0x5c>;
ports {
#address-cells = <0x01>;
#size-cells = <0x00>;
port@0 {
status = "disabled";
reg = <0x00>;
phandle = <0x5d>;
endpoint@30 {
status = "disabled";
port-index = <0x06>;
bus-width = <0x01>;
remote-endpoint = <0x01>;
phandle = <0x36>;
};
};
port@1 {
status = "disabled";
reg = <0x01>;
phandle = <0x5e>;
endpoint@31 {
status = "disabled";
remote-endpoint = <0x02>;
phandle = <0x21>;
};
};
};
};
channel@14 {
reg = <0x0e>;
phandle = <0x5f>;
ports {
#address-cells = <0x01>;
#size-cells = <0x00>;
port@0 {
status = "disabled";
reg = <0x00>;
phandle = <0x60>;
endpoint@28 {
status = "disabled";
port-index = <0x06>;
bus-width = <0x01>;
remote-endpoint = <0x03>;
phandle = <0x38>;
};
};
port@1 {
status = "disabled";
reg = <0x01>;
phandle = <0x61>;
endpoint@29 {
status = "disabled";
remote-endpoint = <0x04>;
phandle = <0x22>;
};
};
};
};
channel@13 {
reg = <0x0d>;
phandle = <0x62>;
ports {
#address-cells = <0x01>;
#size-cells = <0x00>;
port@0 {
status = "disabled";
reg = <0x00>;
phandle = <0x63>;
endpoint@26 {
status = "disabled";
port-index = <0x06>;
bus-width = <0x01>;
remote-endpoint = <0x05>;
phandle = <0x3a>;
};
};
port@1 {
status = "disabled";
reg = <0x01>;
phandle = <0x64>;
endpoint@27 {
status = "disabled";
remote-endpoint = <0x06>;
phandle = <0x23>;
};
};
};
};
channel@12 {
reg = <0x0c>;
phandle = <0x65>;
ports {
#address-cells = <0x01>;
#size-cells = <0x00>;
port@0 {
status = "disabled";
reg = <0x00>;
phandle = <0x66>;
endpoint@24 {
status = "disabled";
port-index = <0x06>;
bus-width = <0x01>;
remote-endpoint = <0x07>;
phandle = <0x3c>;
};
};
port@1 {
status = "disabled";
reg = <0x01>;
phandle = <0x67>;
endpoint@25 {
status = "disabled";
remote-endpoint = <0x08>;
phandle = <0x24>;
};
};
};
};
channel@11 {
reg = <0x0b>;
phandle = <0x68>;
ports {
#address-cells = <0x01>;
#size-cells = <0x00>;
port@0 {
status = "disabled";
reg = <0x00>;
phandle = <0x69>;
endpoint@22 {
status = "disabled";
port-index = <0x04>;
bus-width = <0x01>;
remote-endpoint = <0x09>;
phandle = <0x40>;
};
};
port@1 {
status = "disabled";
reg = <0x01>;
phandle = <0x6a>;
endpoint@23 {
status = "disabled";
remote-endpoint = <0x0a>;
phandle = <0x25>;
};
};
};
};
channel@10 {
reg = <0x0a>;
phandle = <0x6b>;
ports {
#address-cells = <0x01>;
#size-cells = <0x00>;
port@0 {
status = "disabled";
reg = <0x00>;
phandle = <0x6c>;
endpoint@20 {
status = "disabled";
port-index = <0x04>;
bus-width = <0x01>;
remote-endpoint = <0x0b>;
phandle = <0x42>;
};
};
port@1 {
status = "disabled";
reg = <0x01>;
phandle = <0x6d>;
endpoint@21 {
status = "disabled";
remote-endpoint = <0x0c>;
phandle = <0x26>;
};
};
};
};
channel@9 {
reg = <0x09>;
phandle = <0x6e>;
ports {
#address-cells = <0x01>;
#size-cells = <0x00>;
port@0 {
status = "disabled";
reg = <0x00>;
phandle = <0x6f>;
endpoint@18 {
status = "disabled";
port-index = <0x04>;
bus-width = <0x01>;
remote-endpoint = <0x0d>;
phandle = <0x44>;
};
};
port@1 {
status = "disabled";
reg = <0x01>;
phandle = <0x70>;
endpoint@19 {
status = "disabled";
remote-endpoint = <0x0e>;
phandle = <0x27>;
};
};
};
};
channel@8 {
reg = <0x08>;
phandle = <0x71>;
ports {
#address-cells = <0x01>;
#size-cells = <0x00>;
port@0 {
status = "disabled";
reg = <0x00>;
phandle = <0x72>;
endpoint@16 {
status = "disabled";
port-index = <0x04>;
bus-width = <0x01>;
remote-endpoint = <0x0f>;
phandle = <0x46>;
};
};
port@1 {
status = "disabled";
reg = <0x01>;
phandle = <0x73>;
endpoint@17 {
status = "disabled";
remote-endpoint = <0x10>;
phandle = <0x28>;
};
};
};
};
channel@7 {
reg = <0x07>;
phandle = <0x74>;
ports {
#address-cells = <0x01>;
#size-cells = <0x00>;
port@0 {
status = "disabled";
reg = <0x00>;
phandle = <0x75>;
endpoint@14 {
status = "disabled";
port-index = <0x02>;
bus-width = <0x04>;
remote-endpoint = <0x11>;
phandle = <0x4a>;
};
};
port@1 {
status = "disabled";
reg = <0x01>;
phandle = <0x76>;
endpoint@15 {
status = "disabled";
remote-endpoint = <0x12>;
phandle = <0x29>;
};
};
};
};
channel@6 {
reg = <0x06>;
phandle = <0x77>;
ports {
#address-cells = <0x01>;
#size-cells = <0x00>;
port@0 {
status = "disabled";
reg = <0x00>;
phandle = <0x78>;
endpoint@12 {
status = "disabled";
port-index = <0x02>;
bus-width = <0x04>;
remote-endpoint = <0x13>;
phandle = <0x4c>;
};
};
port@1 {
status = "disabled";
reg = <0x01>;
phandle = <0x79>;
endpoint@13 {
status = "disabled";
remote-endpoint = <0x14>;
phandle = <0x2a>;
};
};
};
};
channel@5 {
reg = <0x05>;
phandle = <0x7a>;
ports {
#address-cells = <0x01>;
#size-cells = <0x00>;
port@0 {
status = "disabled";
reg = <0x00>;
phandle = <0x7b>;
endpoint@10 {
status = "disabled";
port-index = <0x02>;
bus-width = <0x04>;
remote-endpoint = <0x15>;
phandle = <0x4e>;
};
};
port@1 {
status = "disabled";
reg = <0x01>;
phandle = <0x7c>;
endpoint@11 {
status = "disabled";
remote-endpoint = <0x16>;
phandle = <0x2b>;
};
};
};
};
channel@4 {
reg = <0x04>;
phandle = <0x7d>;
ports {
#address-cells = <0x01>;
#size-cells = <0x00>;
port@0 {
status = "disabled";
reg = <0x00>;
phandle = <0x7e>;
endpoint@8 {
status = "disabled";
port-index = <0x02>;
bus-width = <0x04>;
remote-endpoint = <0x17>;
phandle = <0x50>;
};
};
port@1 {
status = "disabled";
reg = <0x01>;
phandle = <0x7f>;
endpoint@9 {
status = "disabled";
remote-endpoint = <0x18>;
phandle = <0x2c>;
};
};
};
};
channel@3 {
reg = <0x03>;
phandle = <0x80>;
ports {
#address-cells = <0x01>;
#size-cells = <0x00>;
port@0 {
status = "disabled";
reg = <0x00>;
phandle = <0x81>;
endpoint@6 {
status = "disabled";
port-index = <0x00>;
bus-width = <0x04>;
remote-endpoint = <0x19>;
phandle = <0x54>;
};
};
port@1 {
status = "disabled";
reg = <0x01>;
phandle = <0x82>;
endpoint@7 {
status = "disabled";
remote-endpoint = <0x1a>;
phandle = <0x2d>;
};
};
};
};
channel@2 {
reg = <0x02>;
phandle = <0x83>;
ports {
#address-cells = <0x01>;
#size-cells = <0x00>;
port@0 {
status = "disabled";
reg = <0x00>;
phandle = <0x84>;
endpoint@4 {
status = "disabled";
port-index = <0x00>;
bus-width = <0x04>;
remote-endpoint = <0x1b>;
phandle = <0x56>;
};
};
port@1 {
status = "disabled";
reg = <0x01>;
phandle = <0x85>;
endpoint@5 {
status = "disabled";
remote-endpoint = <0x1c>;
phandle = <0x2e>;
};
};
};
};
channel@1 {
reg = <0x01>;
phandle = <0x86>;
ports {
#address-cells = <0x01>;
#size-cells = <0x00>;
port@0 {
status = "disabled";
reg = <0x00>;
phandle = <0x87>;
endpoint@2 {
status = "disabled";
port-index = <0x00>;
bus-width = <0x04>;
remote-endpoint = <0x1d>;
phandle = <0x58>;
};
};
port@1 {
status = "disabled";
reg = <0x01>;
phandle = <0x88>;
endpoint@3 {
status = "disabled";
remote-endpoint = <0x1e>;
phandle = <0x2f>;
};
};
};
};
channel@0 {
reg = <0x00>;
phandle = <0x89>;
ports {
#address-cells = <0x01>;
#size-cells = <0x00>;
port@0 {
status = "disabled";
reg = <0x00>;
phandle = <0x8a>;
endpoint@0 {
status = "disabled";
port-index = <0x00>;
bus-width = <0x04>;
remote-endpoint = <0x1f>;
phandle = <0x5a>;
};
};
port@1 {
status = "disabled";
reg = <0x01>;
phandle = <0x8b>;
endpoint@1 {
status = "disabled";
remote-endpoint = <0x20>;
phandle = <0x30>;
};
};
};
};
};
};
};
tegra-capture-vi {
status = "okay";
num-channels = <0x10>;
phandle = <0x8c>;
ports {
#address-cells = <0x01>;
#size-cells = <0x00>;
port@15 {
status = "disabled";
reg = <0x0f>;
phandle = <0x8d>;
endpoint {
status = "disabled";
port-index = <0x05>;
bus-width = <0x01>;
remote-endpoint = <0x21>;
vc-id = <0x03>;
phandle = <0x02>;
};
};
port@14 {
status = "disabled";
reg = <0x0e>;
phandle = <0x8e>;
endpoint {
status = "disabled";
port-index = <0x05>;
bus-width = <0x01>;
remote-endpoint = <0x22>;
vc-id = <0x02>;
phandle = <0x04>;
};
};
port@13 {
status = "disabled";
reg = <0x0d>;
phandle = <0x8f>;
endpoint {
status = "disabled";
port-index = <0x05>;
bus-width = <0x01>;
remote-endpoint = <0x23>;
vc-id = <0x01>;
phandle = <0x06>;
};
};
port@12 {
status = "disabled";
reg = <0x0c>;
phandle = <0x90>;
endpoint {
status = "disabled";
port-index = <0x05>;
bus-width = <0x01>;
remote-endpoint = <0x24>;
vc-id = <0x00>;
phandle = <0x08>;
};
};
port@11 {
status = "disabled";
reg = <0x0b>;
phandle = <0x91>;
endpoint {
status = "disabled";
port-index = <0x04>;
bus-width = <0x01>;
remote-endpoint = <0x25>;
vc-id = <0x03>;
phandle = <0x0a>;
};
};
port@10 {
status = "disabled";
reg = <0x0a>;
phandle = <0x92>;
endpoint {
status = "disabled";
port-index = <0x04>;
bus-width = <0x01>;
remote-endpoint = <0x26>;
vc-id = <0x02>;
phandle = <0x0c>;
};
};
port@9 {
status = "disabled";
reg = <0x09>;
phandle = <0x93>;
endpoint {
status = "disabled";
port-index = <0x04>;
bus-width = <0x01>;
remote-endpoint = <0x27>;
vc-id = <0x01>;
phandle = <0x0e>;
};
};
port@8 {
status = "disabled";
reg = <0x08>;
phandle = <0x94>;
endpoint {
status = "disabled";
port-index = <0x04>;
bus-width = <0x01>;
remote-endpoint = <0x28>;
vc-id = <0x00>;
phandle = <0x10>;
};
};
port@7 {
status = "disabled";
reg = <0x07>;
phandle = <0x95>;
endpoint {
status = "disabled";
port-index = <0x02>;
bus-width = <0x04>;
remote-endpoint = <0x29>;
vc-id = <0x03>;
phandle = <0x12>;
};
};
port@6 {
status = "disabled";
reg = <0x06>;
phandle = <0x96>;
endpoint {
status = "disabled";
port-index = <0x02>;
bus-width = <0x04>;
remote-endpoint = <0x2a>;
vc-id = <0x02>;
phandle = <0x14>;
};
};
port@5 {
status = "disabled";
reg = <0x05>;
phandle = <0x97>;
endpoint {
status = "disabled";
port-index = <0x02>;
bus-width = <0x04>;
remote-endpoint = <0x2b>;
vc-id = <0x01>;
phandle = <0x16>;
};
};
port@4 {
status = "disabled";
reg = <0x04>;
phandle = <0x98>;
endpoint {
status = "disabled";
port-index = <0x02>;
bus-width = <0x04>;
remote-endpoint = <0x2c>;
vc-id = <0x00>;
phandle = <0x18>;
};
};
port@3 {
status = "disabled";
reg = <0x03>;
phandle = <0x99>;
endpoint {
status = "disabled";
port-index = <0x00>;
bus-width = <0x04>;
remote-endpoint = <0x2d>;
vc-id = <0x03>;
phandle = <0x1a>;
};
};
port@2 {
status = "disabled";
reg = <0x02>;
phandle = <0x9a>;
endpoint {
status = "disabled";
port-index = <0x00>;
bus-width = <0x04>;
remote-endpoint = <0x2e>;
vc-id = <0x02>;
phandle = <0x1c>;
};
};
port@1 {
status = "disabled";
reg = <0x01>;
phandle = <0x9b>;
endpoint {
status = "disabled";
port-index = <0x00>;
bus-width = <0x04>;
remote-endpoint = <0x2f>;
vc-id = <0x01>;
phandle = <0x1e>;
};
};
port@0 {
status = "disabled";
reg = <0x00>;
phandle = <0x9c>;
endpoint {
status = "disabled";
port-index = <0x00>;
bus-width = <0x04>;
remote-endpoint = <0x30>;
vc-id = <0x00>;
phandle = <0x20>;
};
};
};
};
Suppose don’t support Argus and v4l2-ctl camera open connect to the same CSI(port-index)
but they are not sharing csi ports and deserializer ports. i have already posted vi and csi mapping in previous reply. pleae have a look at it. i am facing this issue for long. we have ruled out all these possibilities that you are suggesting. please suggest a solution. its not that i am facing this issue for the first time. we have replaced xavier with orin because of this issue. please understand the gravity of situation. out deliveries and trials are stuck because of it
we have to place more orders for orin. but if this issue persists what’s the point?
Can you confirm one argus one v4l2-ctl then two argus and two v4l2-ctl?
I have a Jetson Xavier platform with the following CSI cameras:
-
IMX390 cameras used via Argus
-
OV5693 cameras used via V4L2
V4L2 device mapping (from v4l2-ctl --list-devices):
OV5693 @ 2-0060 → /dev/video0 /dev/video1 /dev/video2 /dev/video3 (VI channel 0)
OV5693 @ 2-0064 → /dev/video4 /dev/video5 (VI channel 2)
IMX390 @ 2-0068 → /dev/video6 /dev/video7 /dev/video8 (VI channel 4)
IMX390 @ 2-006C → /dev/video9 /dev/video10 /dev/video11 (VI channel 5)
Problem Observation (Xavier only):
When I run Argus capture on sensor-id N,
the V4L2 node /dev/videoN fails, even if /dev/videoN belongs to a completely different sensor and VI channel.
Example:
-
Running
sensor-id=0(IMX390 on VI channel 4)
→ /dev/video0 (OV5693 on VI channel 0) fails with:v4l2src: Failed to allocate required memory Buffer pool activation failed -
Running
sensor-id=1
→ /dev/video1 fails -
Running
sensor-id=5
→ /dev/video5 fails
(even though sensor-id=5 is IMX390 on VI channel 5, and /dev/video5 is OV5693 on VI channel 2)
In every case:
Argus sensor-id index == V4L2 /dev/videoX index that fails
even though the two are completely unrelated cameras on different ports and different VI channels.
Other /dev/videoX nodes continue to work normally.
Could you build argus APP by single process to check.
cmake -DDISABLE_MULTIPROCESS=ON ..
I am capturing with gstreamer. same issue with argus API.
for argus camera
gst-launch-1.0 -e nvarguscamerasrc sensor-id=0 sensor-mode=0 ! ‘video/x-raw(memory:NVMM),width=1920,height=1080,framerate=30/1’ ! nvvidconv ! nvv4l2h265enc ! h265parse ! mp4mux ! filesink location=out.mp4
for v4l2 camera
gst-launch-1.0 -v v4l2src device=/dev/video0 ! ‘video/x-raw,width=(int)640,height=(int)480’ ! videoconvert ! ximagesink
Please consult with D3 for the sensor driver support.
Thanks