Hi
I am trying test the “gst-launch-1.0 nvarguscamerasrc” to start stream on 8 cameras
By using “gst-launch-1.0 nvarguscamerasrc sensor-id=$1 ! ‘video/x-raw(memory:NVMM), width=(int)2880, height=(int)1860, framerate=20/1’ ! nvvidconv flip-method=0 ! ‘video/x-raw, format=(string)I420’ ! xvimagesink -e“
But when I have started 7 sensors ,the 8th sensor will start failed,and the log will show
”Setting pipeline to PAUSED …Pipeline is live and does not need PREROLL …Pipeline is PREROLLED …Setting pipeline to PLAYING …New clock: GstSystemClockGST_ARGUS: Creating output streamCONSUMER: Waiting until producer is connected…GST_ARGUS: Available Sensor modes :GST_ARGUS: 2880 x 1860 FR = 20.000000 fps Duration = 50000000 ; Analog Gain range min 1.122018, max 3.548134; Exposure Range min 250000, max 19000000;GST_ARGUS: Running with following settings: Camera index = 7 Camera mode = 0 Output Stream W = 2880 H = 1860 seconds to Run = 0 Frame Rate = 20.000000 GST_ARGUS: Setup Complete, Starting captures for 0 secondsGST_ARGUS: Starting repeat capture requests.CONSUMER: Producer has connected; continuing.(Argus) Error Busy: (propagating from src/eglstream/ImageImpl.cpp, function initialize(), line 482)(Argus) Error Busy: (propagating from src/eglstream/ImageImpl.cpp, function copyToNvBuffer(), line 523)(Argus) Error InvalidState: Failed to copy to NvBuffer (in src/eglstream/ImageImpl.cpp, function createNvBuffer(), line 411)nvbuf_utils: dmabuf_fd -1 mapped entry NOT found^Chandling interrupt.Interrupt: Stopping pipeline …”
And no matter how I change the startup sequence of the cameras or the time interval between each camera startup, the 8th camera always encounters this error.
but when I use the argus_camera tool “Multi Session“ ,it works on starting all cameras.
The nvargus-daemon log remains the same, whether I use argus_camera or gst-launch-1.0 nvarguscamerasrc.
nv@leopard:~/Desktop/rts_test$ sudo service nvargus-daemon stop
[sudo] password for nv:
nv@leopard:~/Desktop/rts_test$ export enableCamPclLogs=5
nv@leopard:~/Desktop/rts_test$ sudo enableCamInfiniteTimeout=1 nvargus-daemon
=== NVIDIA Libargus Camera Service (0.99.33)=== Listening for connections...=== gst-launch-1.0[5378]: Connection established (FFFFB5E1B840)OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module0
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module1
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module2
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module3
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module4
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module5
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module6
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module7
NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
NvPclHwGetModuleList: No module data found
NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
NvPclHwGetModuleList: No module data found
NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
NvPclHwGetModuleList: No module data found
NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
NvPclHwGetModuleList: No module data found
NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
NvPclHwGetModuleList: No module data found
NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
NvPclHwGetModuleList: No module data found
NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
NvPclHwGetModuleList: No module data found
NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
NvPclHwGetModuleList: No module data found
OFParserGetVirtualDevice: NVIDIA Camera virtual enumerator not found in proc device-tree
---- imager: No override file found. ----
LSC: LSC surface is not based on full res!
---- imager: No override file found. ----
LSC: LSC surface is not based on full res!
---- imager: No override file found. ----
LSC: LSC surface is not based on full res!
---- imager: No override file found. ----
LSC: LSC surface is not based on full res!
---- imager: No override file found. ----
LSC: LSC surface is not based on full res!
---- imager: No override file found. ----
LSC: LSC surface is not based on full res!
---- imager: No override file found. ----
LSC: LSC surface is not based on full res!
---- imager: No override file found. ----
LSC: LSC surface is not based on full res!
=== gst-launch-1.0[5378]: CameraProvider initialized (0xffffb0cc6270)LSC: LSC surface is not based on full res!
=== gst-launch-1.0[5430]: Connection established (FFFF877EB840)=== gst-launch-1.0[5430]: CameraProvider initialized (0xffff60000c30)LSC: LSC surface is not based on full res!
=== gst-launch-1.0[5461]: Connection established (FFFF54F9B840)=== gst-launch-1.0[5461]: CameraProvider initialized (0xffff08000c30)LSC: LSC surface is not based on full res!
Any suggestion?
Thanks,
*** Please note that this reply is generated by LLM automatically ***
The issue you’re experiencing with the 8th camera failing to start when using gstlaunch-1.0 nvarguscamerasrc is likely due to a resource limitation or a configuration issue. Here are a few potential causes and suggestions:
-
Resource Limitation: The Jetson AGX Orin has limited resources, including memory and GPU processing power. When you start 7 cameras, the system might be running low on resources, causing the 8th camera to fail. You can try reducing the resolution or frame rate of the cameras to free up resources.
-
Configuration Issue: The error message “Argus Error Busy” suggests that the camera is busy or not available. This could be due to a configuration issue, such as the camera not being properly initialized or the sensor not being available. You can try checking the camera configuration and sensor availability using the argus_camera tool.
-
nvargusdaemon Log: The nvargusdaemon log remains the same whether you use gstlaunch-1.0 or argus_camera tool, which suggests that the issue is not specific to the gstlaunch-1.0 command. This could indicate a deeper issue with the camera driver or the system configuration.
-
Multi-Session Mode: The fact that the argus_camera tool works in multi-session mode suggests that the camera driver is capable of handling multiple cameras simultaneously. However, this does not necessarily mean that the gstlaunch-1.0 command is configured correctly to handle multiple cameras.
-
gstlaunch-1.0 Command: The gstlaunch-1.0 command you provided seems to be correct, but you might want to try adding some additional parameters to configure the camera settings, such as the sensor mode or exposure settings.
-
Camera Driver: The camera driver might be the culprit here. You can try updating the camera driver to the latest version or checking the driver configuration to ensure that it is set up correctly.
-
System Configuration: The system configuration might be limiting the number of cameras that can be started simultaneously. You can try checking the system configuration files, such as the /etc/nvargus.conf file, to see if there are any settings that might be limiting the number of cameras.
In comparison to the argus_camera tool, the gstlaunch-1.0 command seems to be more prone to errors when starting multiple cameras. This could be due to the fact that the gstlaunch-1.0 command is a more general-purpose tool that is not specifically designed for camera applications.
To troubleshoot the issue, you can try the following:
- Check the camera configuration and sensor availability using the argus_camera tool.
- Reduce the resolution or frame rate of the cameras to free up resources.
- Update the camera driver to the latest version.
- Check the system configuration files to ensure that there are no settings that might be limiting the number of cameras.
- Try using the argus_camera tool in multi-session mode to see if it works.
- Try adding additional parameters to the gstlaunch-1.0 command to configure the camera settings.
If none of these suggestions work, you might want to try seeking help from the NVIDIA developer community or the Jetson AGX Orin forums.
*** Please give the thumbs up if you get answers you like. Or provide feedback to help us improve the answer. ***
hello tianyuw1,
it’s known bug for launching more than 7 camera with gstreamer via nvarguscamerasrc, whereas it works with argus_camera application.
Oh,Thanks
Are you saying this bug has always existed in the ‘nvarguscamerasrc’ component? Is there any solution or workaround, or any update plans for it
hello tianyuw1,
please works with argus_camera application for (>7) multi-cam solution.
hello tianyuw1,
please create multiple threads in single process for running 8+ decoding/encoding tasks,
you may give it a try to apply kernel patch from Topic 320865 for verification.
thanks
1 Like
Ok,Thanks
I will get back to you with the test results as soon as possible.
Hi,jerry
as I have apply this patch and generate the ko file and replace the ‘ko’ file on the device with the two I generated.(host1x.ko and tegra-drm.ko)but still has some unknown symbol ,I want to know which binary files I need after the patch has been applied.
Thanks
hello tianyuw1,
just double check you’ve applied the changes to OOT drivers,
for instance, $public_sources/kernel_src/kernel/nvidia-oot/drivers/gpu/
besides..
you may try to replace below ko files for confirmation.
./kernel-jammy-src/kernel-nvidia-oot/nvidia-oot/drivers/gpu/host1x/host1x.ko
./kernel-jammy-src/kernel-nvidia-oot/nvidia-oot/drivers/gpu/host1x-fence/host1x-fence.ko
./kernel-jammy-src/kernel-nvidia-oot/nvidia-oot/drivers/gpu/host1x-nvhost/host1x-nvhost.ko
./kernel-jammy-src/kernel-nvidia-oot/nvidia-oot/drivers/gpu/drm/tegra/tegra-drm.ko
just check I use the two patch
0001-gpu-host1x-Memory-context-stealing.patch
0002-gpu-host1x-When-out-of-memory-contexts-wait-for-free.patch
r36_4_TEST_kernel_host1x.zip (6.0 KB)
and they dont modify the file host1x-fence and host1x-nvhost ,that I still need replace those two ko?
yes, please give it a try to replace those ko files per Makefile.
I have replace them,but still failed
here is the dmesg log
dmesg_error.log (125.2 KB)
hello tianyuw1,
I saw the logs of ar0234_open but there’s no failure messages.
may I know what’s your test pipeline for launching multiple camera streams.
I can stream all before replace the ko.
and the log has many “Unknown symbol“
I use 4 hawks here is my dtb
extracted_proc.txt (356.2 KB)
hello tianyuw1,
did you use the same L4T public release package to rebuilt the kernel modules?
I use the cmd “./nvbuild.sh -o $PWD/kernel_out -m“ to build the new gpu’s ko
if I need use the cmd “./nvbuild.sh -o $PWD/kernel_out“?
Hi Jerry
here is our whole steps for the patch test.
hardware use the orin devkit
softversion R36.4.3
1.apply patch
2.build new ko
3.replace the ko
the error dmesg
dmesg.log (81.1 KB)
If you test the patch is ok in devkit,please share us the way how to get that result,thanks.
ps:I try 8 cameras on thor ,I found it’s ok to stream 8 cameras by gst what’s the patch you do in thor ,I think it will also work on orin.
hello tianyuw1,
we’ve tested with h264 stream to create 10 decoding processes.
for instance,
for i in {0..10} ; do
gst-launch-1.0 filesrc location=big_buck_bunny_480p_h264.mov ! qtdemux ! h264parse ! nvv4l2decoder ! nvvidconv ! xvimagesink &
done
BTW,
those changes has also check-in to the latest JP-6 public release.
if that’s possible, please moving to jetson-linux-r3644 for testing.
Hi jerry
I have test it on orin r36.4.4
Premise:I dont apply the changes to oot drivers for this test as I did apply it befor but the dmesg error log.
and I use next steps to test
I.use file.mov test
1.ffmpeg -f lavfi -i testsrc=duration=10:size=2880x1860:rate=30 -c:v libx264 -pix_fmt yuv420p big_buck_bunny_480p_h264.mov
2.for i in {0..10} ; do
gst-launch-1.0 filesrc location=big_buck_bunny_480p_h264.mov ! qtdemux ! h264parse ! nvv4l2decoder ! nvvidconv ! xvimagesink &
done
and only 8 videos worked
II.use video stream on test
still only get 7 videos
but the 38.2 I use the same way can get 8 videos