Multi CSI camera streaming error with Argus

Hi all,

I am using a Leopard Imaging LI-TX1-CB-6CAM carrier board with L4T 28.2. I have three IMX290 imagers connected and can stream all of them fine individually. However, when I switch the mode in argus_camera to multi session, I get a about second video streaming followed by a crash:

Executing Argus Sample Application (argus_camera)
Argus Version: 0.96.2 (multi-process)
(Argus) Error EndOfFile: Unexpected error in reading socket (in src/rpc/socket/client/ClientSocketManager.cpp, function recvThreadCore(), line 214)
(Argus) Error EndOfFile: Receiving thread terminated with error (in src/rpc/socket/client/ClientSocketManager.cpp, function recvThreadWrapper(), line 317)
(Argus) Error InvalidState: Receive thread is not running cannot send. (in src/rpc/socket/client/ClientSocketManager.cpp, function send(), line 96)
(Argus) Error InvalidState:  (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function dispatch(), line 101)
Segmentation fault (core dumped)

This all looks very similar to what was described in this thread:
https://devtalk.nvidia.com/default/topic/1031565/multi-camera-argus-failure/
I already tried disabling the denoising as suggested by @SimonZhu but without success. Note that I am using modified libnvodom_imager.so and libargus.so as suggested by @ShaneCCC in this thread to work around USB camera issues (Realsense cameras in my case):
https://devtalk.nvidia.com/default/topic/1059090/jetson-nano/usb-and-csi-cameras-capture-issues/post/5376683/
This issue is even happening without the realsense cameras connected, though.

Any help is appreciated. Cheers,
Jonas

It’s better to sync up with Leopard to check if any update for the driver.

Hi jonas.witt,

Sorry for the trouble.
For the current driver, you may need to connect all 6 cameras to use the Multi-Session.
If only using 3 cameras, please change the " const uint32_t deviceCount =" to “3” in MultiSession.cpp file in argus code, then re-compile the argus. This can fix the crash issue.

if (m_sessions.empty())
    {
        const uint32_t deviceCount = 3;

        if (deviceCount == 0)
            ORIGINATE_ERROR("No camera devices found");

Thanks, that fixed it!