IMX477 camera has no voltage and i2cdetect fails on Jetson Orin Nano Super

Hi everyone, I’m trying to set up an Arducam IMX477 on a Jetson Orin Nano Super dev kit running JetPack 6. I ran the Arducam installer:

sudo ./install_full.sh -m imx477

It downloads the R36.4.4 .deb package fine but fails during post-installation. I’m getting this error:

RuntimeError: Multiple DTBs found for NVIDIA Jetson Orin Nano Engineering Reference Developer Kit Super!

And also:

mv: cannot stat '/boot/arducam/arducam_csi2.ko': No such file or directory

The camera isn’t detected at all after this. Anyone seen this before?

That ‘Multiple DTBs found’ error is a bit unusual. It could mean leftover DTB files in /boot from previous install attempts are confusing the detection script. Can you post the full output from the installer? There might be more clues in the complete log about what’s failing and when.

I’ve uploaded the full installer log — I’ll PM you the details. But here’s the key sequence: the .deb downloads and extracts correctly, then during the post-install phase it hits the DTB detection error. The script seems to be looking for a specific device-tree naming pattern and the ‘Super’ variant doesn’t match what it expects.

The arducam_csi2.ko module never actually gets built or placed in /boot/arducam/, so that mv failure is expected — the file was never created in the first place.

Let’s step back from the software side and do some basic hardware checks first. Can you:

  1. Grab a multimeter and measure the 3V3 power pin on the CSI connector — is the camera getting any power at all?
  2. Run i2cdetect to see if the sensor is responding:
sudo i2cdetect -y -r 9
sudo i2cdetect -y -r 10

The IMX477 should appear on one of these buses. If you get error -121, that means the device isn’t acknowledging — essentially invisible on the bus.

Good call on the multimeter. I’m reading 0V on the camera 3V3 pin at the CSI connector — completely dead.

Ran i2cdetect on both buses:

Bus 9: error -121 (Remote I/O error)
Bus 10: error -121 (Remote I/O error)

So no ACK from the camera at all. The sensor is electrically invisible right now.

0V on the power rail plus no I2C response narrows it down — either the power delivery isn’t being configured, or there’s a physical connection break. Let’s check two more things to see if the device-tree overlay is even taking effect:

  1. Check if camera power regulators are being registered:
cat /sys/kernel/debug/regulator/regulator_summary | grep -i cam
  1. Look for camera nodes in the device-tree:
ls /proc/device-tree/ | grep -i cam

If the overlay isn’t applied properly, the camera regulators won’t be enabled and you’ll see exactly what you’re seeing — 0V and no I2C response.

Checked both:

/sys/kernel/debug/regulator/regulator_summary — no entries with ‘cam’ at all. No camera regulators anywhere in the output.

/proc/device-tree/ — no camera nodes present either.

So the device-tree overlay definitely isn’t being applied. That explains the 0V — the power rails for the camera are never getting enabled because the kernel doesn’t know about the camera.

That’s useful data, but before we chase the DTB issue exclusively, let’s rule out something simpler on the physical side. Try:

  • Testing both CSI ports on the Orin Nano (CSI-A and CSI-C)
  • Flipping the ribbon cable orientation on both ends — camera module side and board side
  • If you have a spare ribbon cable, swap it in

Sometimes physical issues can masquerade as software problems, and it’s worth eliminating this first.

Just finished going through all the physical combinations:

  • Both CSI ports (A and C): same result, 0V and -121
  • Both cable orientations at both ends of the ribbon: no change
  • Two different ribbon cables: no difference

Also tried swapping which end of the cable goes to the board vs the camera module — no luck. I’m fairly convinced this isn’t a cable or port issue at this point.

Okay, let’s try a different approach on the software side. The Arducam install_full.sh script clearly isn’t handling the Orin Nano Super variant’s DTB naming convention correctly. NVIDIA’s own jetson-io tool should work better here:

sudo /opt/nvidia/jetson-io/jetson-io.py

In the menu, select ‘Configure Jetson for compatible hardware’ and try the IMX477 overlays. There should be IMX477-A for CSI port A, IMX477-C for CSI port C, and possibly a Dual configuration. Apply one, reboot, and run i2cdetect. Try each overlay and let us know what you get.

Went through all three IMX477 overlay options in jetson-io, rebooting after each:

  • IMX477-A → reboot → i2cdetect bus 9: -121, bus 10: -121
  • IMX477-C → reboot → i2cdetect bus 9: -121, bus 10: -121
  • Dual IMX477 → reboot → i2cdetect bus 9: -121, bus 10: -121

Still 0V on the 3V3 pin after every attempt. The overlays seem to apply without error, but something still isn’t right.

Let’s try one more thing to verify the overlay is even valid for your board. Do a manual fdtoverlay merge against the Super variant’s base DTB:

sudo fdtoverlay -i /boot/dtb/tegra234-p3768-0000+p3767-0005-nv-super.dtb -o /boot/dtb/test.dtb /boot/tegra234-p3767-camera-imx477-*.dtbo

Then use the resulting DTB and run i2cdetect again. This will tell us whether the overlay itself merges cleanly for this board variant or if there’s a dtbo compatibility issue.

Did the manual fdtoverlay merge. It completes without errors and produces the merged DTB file fine. But after booting with the resulting DTB — still getting -121 on i2cdetect on both buses. No difference from any of the other attempts.

I think I’ve identified what’s going on here. There are actually two separate issues at play:

Physical issue — the cable orientation on the camera module side: I’ve seen this many times with the Arducam IMX477 module. The MIPI ribbon cable on the camera module side is very likely inserted upside down. The orientation can be counterintuitive — the contacts need to face a specific direction and it’s easy to get wrong. When it’s flipped:

  • The power lines don’t make contact → 0V reading at the CSI connector
  • The I2C data lines are open → error -121 on every probe
  • The sensor is completely electrically invisible

This is why no amount of DTB tweaking, overlay merging, or port swapping made any difference — the sensor was never getting power in the first place.

Software issue — installer incompatibility with the Super variant: The Arducam install_full.sh script doesn’t recognize the device-tree naming convention used by the Jetson Orin Nano ‘Super’ variant. Its DTB detection logic hits multiple matching patterns and throws the ‘Multiple DTBs found’ error. This is why jetson-io is the correct approach for this board on JetPack 6.

For the physical fix: Power down the board completely. Unlatch the CSI connector on the Arducam IMX477 module itself, flip the ribbon cable to the correct orientation, and reseat it firmly. Make sure it’s fully seated before latching.

That was 100% it! I flipped the ribbon cable on the camera module side and now I’m reading proper voltage at the 3V3 pin. Can’t believe it was the orientation — it looked correct to me. So now that the hardware is sorted, what’s the recommended software setup? Should I go back to jetson-io?

Yes, jetson-io is the way to go for the IMX477 on JetPack 6 with the Super variant. Here’s the step-by-step:

  1. Run the tool:
sudo /opt/nvidia/jetson-io/jetson-io.py
  1. In the graphical interface, select ‘Configure Jetson for compatible hardware’

  2. Choose the appropriate IMX477 option — IMX477-A for a single camera on CSI port A, or IMX477-C for CSI port C

  3. Save the configuration and reboot

After the reboot, you should see:

  • Camera regulator entries in /sys/kernel/debug/regulator/regulator_summary
  • Camera nodes present in /proc/device-tree/
  • The IMX477 responding on i2cdetect at the expected address

There’s also a setup guide here for reference:
https://docs.arducam.com/Nvidia-Jetson-Camera/Application-note/Jetson-io/

One more thing — since the Arducam installer failed multiple times, you might have leftover DTB files in /boot/ from those attempts. Worth cleaning those up to avoid confusion down the line. The ‘Multiple DTBs found’ error from the installer is a known limitation with the Super variant — stick with jetson-io and you’ll be fine.