Second camera not seen after switching from Nano to Nano Orin

Hi,
I have this very simple C++ program to read and process two cameras:

int main(int argc, char **argv)
{
    VideoCapture cap1;
    VideoCapture cap2;

    Mat CameraFrame1;
    Mat CameraFrame2;

    cout << "Open 1" << endl;
    cap1.open(0);
    cout << "Open 2" << endl;
    cap2.open(1);

    if (!cap1.isOpened())
    {
        cout << "***Could not initialize capturing 1...***\n";
        return -1;
    }
    if (!cap2.isOpened())
    {
        cout << "***Could not initialize capturing 2...***\n";
        return -1;
    }

    int frame = 0;
    for (;;)
    {
        cap1.read(CameraFrame1);
        cap2.read(CameraFrame2);
		
        if (CameraFrame1.empty())
            break;
        if (CameraFrame2.empty())
            break;

        Some frame processing
		.....

        frame++;
        char keypressed = (char)waitKey(10);
        if (keypressed == 27)
            break;
    }

    cap1.release();
    cap2.release();

    return 0;
}

This worked perfect on the Nano. Now I switched to the Nano Orin. But the exact same program does not work anymore.
This is the output I get:

Open 1
[ WARN:0] global /home/ubuntu/build_opencv/opencv/modules/videoio/src/cap_gstreamer.cpp (1100) open OpenCV | GStreamer warning: Cannot query video position: status=0, value=-1, duration=-1
Open 2
[ WARN:0] global /home/ubuntu/build_opencv/opencv/modules/videoio/src/cap_gstreamer.cpp (2075) handleMessage OpenCV | GStreamer warning: Embedded video playback halted; module v4l2src1 reported: Device '/dev/video1' is not a capture device.
[ WARN:0] global /home/ubuntu/build_opencv/opencv/modules/videoio/src/cap_gstreamer.cpp (1053) open OpenCV | GStreamer warning: unable to start pipeline
[ WARN:0] global /home/ubuntu/build_opencv/opencv/modules/videoio/src/cap_gstreamer.cpp (616) isPipelinePlaying OpenCV | GStreamer warning: GStreamer: pipeline have not been created
[ WARN:0] global /home/ubuntu/build_opencv/opencv/modules/videoio/src/cap_v4l.cpp (890) open VIDEOIO(V4L2:/dev/video1): can't open camera by index
***Could not initialize capturing 2...***

I have the same two cameras connected. Why isn’t it seeding the second one?
How can I check that the second camera is present for Linux?
There is a /dev/video1
But also a /dev/video2 and /dev/video3, so I do not know if that means something.

hello mechamania,

please narrow down the issue, you may refer to Applications Using V4L2 IOCTL Directly by using V4L2 IOCTL to verify camera basic functionality.
please also check the kernel init messages, you may dig into $ dmesg > klogs.txt, are those two cameras register to linux as video node correctly?

Yes, I would like to narrow down this issue. But I’m not used to the Linux operating system. So thanks helping me with that.

When I startup the board and add the two cameras one by one, the following lines are added to the dmesg log:

155.519438] usb 2-1.4: new SuperSpeed Gen 1 USB device number 5 using tegra-xusb
[  155.544529] usb 2-1.4: LPM exit latency is zeroed, disabling LPM.
[  155.546629] usb 2-1.4: New USB device found, idVendor=2560, idProduct=c124, bcdDevice= 0.00
[  155.546636] usb 2-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  155.546642] usb 2-1.4: Product: See3CAM_20CUG
[  155.546647] usb 2-1.4: Manufacturer: e-con systems
[  155.546651] usb 2-1.4: SerialNumber: 192C050E
[  155.551732] hid-generic 0003:2560:C124.0007: hiddev96,hidraw6: USB HID v1.11 Device [e-con systems See3CAM_20CUG] on usb-3610000.xhci-1.4/input2
[  155.741749] uvcvideo: Found UVC 1.00 device See3CAM_20CUG (2560:c124)
[  155.744969] input: See3CAM_20CUG as /devices/platform/3610000.xhci/usb2/2-1/2-1.4/2-1.4:1.0/input/input14
[  155.745160] usbcore: registered new interface driver uvcvideo
[  155.745163] USB Video Class driver (1.1.1)
[  171.522942] usb 2-1.3: new SuperSpeed Gen 1 USB device number 6 using tegra-xusb
[  171.544404] usb 2-1.3: LPM exit latency is zeroed, disabling LPM.
[  171.546551] usb 2-1.3: New USB device found, idVendor=2560, idProduct=c124, bcdDevice= 0.00
[  171.546558] usb 2-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  171.546563] usb 2-1.3: Product: See3CAM_20CUG
[  171.546566] usb 2-1.3: Manufacturer: e-con systems
[  171.546569] usb 2-1.3: SerialNumber: 352C050E
[  171.548717] uvcvideo: Found UVC 1.00 device See3CAM_20CUG (2560:c124)
[  171.551640] input: See3CAM_20CUG as /devices/platform/3610000.xhci/usb2/2-1/2-1.3/2-1.3:1.0/input/input15
[  171.553106] hid-generic 0003:2560:C124.0008: hiddev97,hidraw7: USB HID v1.11 Device [e-con systems See3CAM_20CUG] on usb-3610000.xhci-1.3/input2

To me this looks like both cameras are recognized and accepted by the system. The order of the lines for the second camera are a bit different from the first, but I guess that is no problem.

So how can I narrow down this further?

I would like to give that a try. Is there some C++ example code available? That would be a huge help for me to learn and understand this stuff.

Issue in on e-con systems See3CAM_20CUG, suggest to contact with E-Con to get the support directly. Sorry for the late response.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.