Arducam IMX219 slot 5 not working on Jetson AGX Orin

Hey everyone, I’m running into a stubborn issue with my Arducam IMX219 Multi-Camera Kit on a Jetson AGX Orin. I’m trying to get all 6 cameras working in a 2x3 surveillance grid, but Camera 5 (sensor-id=5) refuses to cooperate.

All the cameras and cables work fine when I test them individually on other ports, so the hardware itself seems okay — it’s just that specific port/slot that won’t play ball.

I followed the official quick start guide here:
https://docs.arducam.com/Nvidia-Jetson-Camera/Nvidia-Jetson-Orin-Series/NVIDIA-Jetson-AGX-Orin/Quick-Start-Guide/

Here’s the Python script I’m using with OpenCV and GStreamer:

import cv2
import numpy as np

def create_pipeline(sensor_id, width=640, height=480, framerate=30):
    return (
        f"nvarguscamerasrc sensor-id={sensor_id} ! "
        f"video/x-raw(memory:NVMM), width={width}, height={height}, format=NV12, framerate={framerate}/1 ! "
        "nvvidconv ! video/x-raw, format=BGRx ! "
        "videoconvert ! video/x-raw, format=BGR ! appsink"
    )

def main():
    sensor_ids = [0, 1, 2, 3, 4, 5]
    cams = [cv2.VideoCapture(create_pipeline(sensor_id), cv2.CAP_GSTREAMER) for sensor_id in sensor_ids]
    for i, cap in enumerate(cams):
        if not cap.isOpened():
            print(f"Camera {sensor_ids[i]} could not be opened")
            return
    print("All cameras successfully opened. Press 'q' to exit.")
    while True:
        frames = []
        for i, cap in enumerate(cams):
            ret, frame = cap.read()
            if not ret or frame is None:
                print(f"Camera {sensor_ids[i]} is not providing a frame")
                frames.append(np.zeros((300, 400, 3), dtype=np.uint8))
            else:
                frames.append(cv2.resize(frame, (400, 300)))
        if len(frames) != len(sensor_ids):
            break
        row1 = np.hstack(frames[:3])
        row2 = np.hstack(frames[3:])
        combined_frame = np.vstack([row1, row2])
        cv2.imshow("Surveillance View (2x3 Grid)", combined_frame)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    for cap in cams:
        cap.release()
    cv2.destroyAllWindows()

if __name__ == "__main__":
    main()

It always fails right at the cap.isOpened() check for sensor-id=5. The other five cameras open and stream without any issues. Has anyone else seen a single port on this board just not work? Anything else I should try before assuming the board is defective?

Thanks for the detailed report and code. Before we jump to any hardware conclusions, let’s isolate whether the problem is in your Python/OpenCV pipeline or something lower-level. Can you try hitting sensor-id=5 directly with a bare GStreamer pipeline? This bypasses OpenCV entirely and goes straight to the display:

SENSOR_ID=5
FRAMERATE=21
width=4032
height=3040
gst-launch-1.0 nvarguscamerasrc sensor-id=$SENSOR_ID ! "video/x-raw(memory:NVMM),width=$width,height=$height,framerate=$FRAMERATE/1" ! nvvidconv ! nveglglessink -e

This runs at full resolution (4032x3040 @ 21fps) so we’re testing the full camera pipeline. Let me know what happens — does the stream open or do you get an error?

Alright, I went deep on isolation testing and here’s what I found:

  1. I physically swapped cameras around between ports — every single camera module works perfectly in slots 1 through 4, but no camera works in slot 5. Doesn’t matter which camera I put there.

  2. I also swapped the FFC ribbon cables around between all slots. Every cable works fine in slots 1-4. Slot 5 fails regardless of which cable is connected.

  3. Ran the GStreamer command you provided — works beautifully with every camera I plug into any slot… except when I use sensor-id=5 (the port in question). Same failure every time.

So after testing every combination of camera + cable + slot, the failure follows the slot, not the camera and not the cable. At this point I’m pretty convinced port/slot 5 on the camera board itself is defective. I’ve been at this for a while now and I can’t see any other variable left to test. What’s the best path forward here?

Good isolation work — that rules out a lot. Before we call it definitively though, one more thing: have you tried using the exact same FFC cable that you know works in another slot and moving it to slot 5? I know you mentioned swapping cables around, but I want to be absolutely sure the FFC in slot 5 isn’t the culprit here. Sometimes cables can look fine but have a subtle bend or contact issue that only manifests in a particular orientation.

Yep, already did that — I took a cable that works 100% in slot 1, moved it to slot 5, and the same failure occurs. Then moved it back to slot 1 and it works again. I repeated this with every cable I have. All of them work perfectly in every slot except slot 5. So unfortunately the FFC cables are definitely ruled out — the issue is tied to that specific port on the board no matter what camera or cable combination I use.

Thanks for confirming. At this stage we’ve systematically eliminated every variable:

  • All 6 camera modules work individually on other ports ✓
  • All FFC cables work individually on other ports ✓
  • The Python/OpenCV pipeline works for sensors 0-4 ✓
  • The raw GStreamer test works for sensors 0-4 but fails on sensor-id=5 ✓
  • Swapping known-good cameras and cables into slot 5 consistently fails ✓

This really only points to one conclusion: there’s a hardware fault on the multi-camera board at port/slot 5. It could be a bad MIPI connector, a trace issue, or a problem with the mux/switch IC servicing that port — but regardless, it’s not something fixable through software or configuration changes.

I’ve sent you details privately about how to proceed with getting a replacement board. Once you have a new unit, the same setup should work across all 6 ports without any of these issues. Let us know how it goes once the replacement is in hand.