Dual IMX477 Cameras with Jetson Orin Nano J401 Board?

Hi there,

WOW, I feel your pain… I know it can be frustrating. especially when a OEM product isn’t measuring up. You have tagged Kevin so please try and be patient they will respond but it does take some time and they more times than not come already with a solution. I hear you have a lot riding on this, so it is worth all your patients and Effort.

to mUy technical mind, it should be a patch or a config issue. They work , the cameras as CAM1. The tools you use are they for this unit specifically ? or are they the “Nvidia” tools?
this may be part of the issue? Not all of Nvidia’s tools will be compatible, these have there own DTS, so I imagine this could be the root cause. But I could be wrong too. I don’t have one but I see most folks are pretty satisfied with the basics on here.

I’m looking into as much of it as I can… sometimes two heads are better than one. Hopefully the active of this thread will get us some attention."

Meanwhile a deep dive with AI , shows this info…
what do you think?

AL’s take on it…Worth a look :crossed_fingers:

Summary of the Problem

  • Hardware: Jetson Orin Nano 4GB with Seeed J401 carrier board
  • Cameras: 2x Raspberry Pi HQ (IMX477) with R8 resistor removed
  • Software: Jetpack 6.2 (L4T R36.4.3), Seeed custom image (mfi_recomputer-orin-nano-4g-j401)
  • Behavior:
    • Both cameras work on CAM1, not on CAM0
    • nvarguscamerasrc fails on CAM0 with NvBufSurfaceFromFd Failed and no video
    • Camera shows up in I2C and sensor is detected by kernel
    • Error occurs in GStreamer threadExecute() when buffer allocation fails

What’s Working

  • Both cameras initialize properly — no I2C errors.
  • CAM1 works well — sensor is streaming video.
  • CAM0 is detected, but streaming fails at buffer mapping.
  • User tried remapping Jetson-IO to CAM0-only with no change.

What’s Likely Wrong

This does not appear to be:

  • A software-only problem — because CAM1 works fine, and both cameras work on CAM1, meaning sensors are good.
  • A firmware mismatch — image is built for J401, JetPack version matches kernel.

Instead, this smells like a hardware issue or missing device-tree overlay setup for CAM0. (this was muy initial thought also). the dts is not a standard match to Nvidia’s perhaps.

further inquiry :crossed_fingers:

Root Cause Candidates

1. CAM0 MIPI or PCIe Lane Conflict

  • Jetson Orin Nano shares lanes for multiple peripherals.
  • The J401 carrier board maps CAM0 and CAM1 differently than NVIDIA’s devkit.
  • A missing or misapplied device tree overlay may fail to bring up CAM0’s CSI lanes.

2. J401 Device Tree Issue

  • Seeed’s BSP might have only enabled CAM1 (CSI1) in default overlay.
  • CAM0 may need an additional overlay applied (especially if using dual cam support).

3. Hardware Fault

  • One of the CSI lanes or clocks for CAM0 could be damaged on the J401 board.
  • Since both cameras work on CAM1 — not a sensor problem.

4. NvBufSurfaceFromFd Failure = buffer/FD allocation fail

  • This usually means the buffer for the camera image could not be mapped to GPU/ISP.
  • Often tied to bad memory configuration, disabled CSI lane, or missing DT config.

Suggested Next Steps

1. Check CAM0 lane power

sudo dmesg | grep -i csi

Look for CSI errors or inactive state for csi0.

:white_check_mark: 2. Inspect connected devices

i2cdetect -y -r 9
i2cdetect -y -r 10

Make sure both cameras show up at 0x1a.

:white_check_mark: 3. Verify overlays loaded

sudo cat /boot/extlinux/extlinux.conf

Look for DTB (device tree) used. Make sure it points to the correct dual-imx477 config for J401.

sudo grep -r imx477 /boot/dtb/ | grep j401

recheck;

ls /boot/dtb/kernel_tegra*.dtb

:white_check_mark: 4. Force CAM0-only

Try testing CAM0 alone after unplugging CAM1 completely and rebooting.

Fix Path (if device tree issue)

You can try applying the correct overlay manually:

  1. Get Seeed BSP or overlays:
    GitHub - Seeed-Studio/seeed-linux-dtoverlays: Device Tree Overlays for Seeed boards
  2. Look for J401 + dual camera overlay:
    Likely file: seeed-j401-dual-imx477-overlay.dts
  3. Apply overlay using:

sudo /opt/nvidia/jetson-io/jetson-io.py
then try ,
Enable dual camera mode with CAM0 + CAM1.

Final Thoughts

  • The fact that CAM0 fails during NvBufSurfaceFromFd is a huge clue — it indicates CSI capture channel is not up, or device tree isn’t initializing CAM0 properly.
  • It’s not likely to be a RAM issue — 4GB is fine for 1080p streams.
  • Seeed’s carrier boards often need very specific overlays, so reapplying the correct one is the fastest way to isolate the fault.

Really hope that helps figure more out. I’m convinced it’s the overlay NOW! :+1: with that said I would think it CAN be Resolved.

HTH
GL :slight_smile: PJ :v:

if it still goes unanswered , by the weekend I’ll ping Kevin and see if they can get you some more SOLID help and Solution. easier said than done but Hang in there :+1:

2 Likes