Imx477 probe failure with error -121 on 10-001a in dmesg log (Jetson Orin Nano)

Hi everyone, I’m getting some concerning dmesg errors on my Jetson Orin Nano and hoping someone can help me understand what’s going on.

Setup:

  • Jetson Orin Nano
  • IMX477 camera (B0279) connected to CAM0 port
  • Sensor driver version: imx477_v2.0.6
  • Drivers installed per the Getting Started Guide

I’m using this pipeline to stream:

SENSOR_ID=0 # 0 for CAM0 and 1 for CAM1 ports
FRAMERATE=30
gst-launch-1.0 nvarguscamerasrc sensor-id=$SENSOR_ID ! "video/x-raw(memory:NVMM),width=1920,height=1080,framerate=$FRAMERATE/1" ! nvvidconv ! nveglglessink -e

But dmesg shows these errors and I’m worried something is wrong with the camera or driver:

[    9.905577] imx477 9-001a: tegracam sensor driver:imx477_v2.0.6
[   10.207216] tegra-camrtc-capture-vi tegra-capture-vi: subdev imx477 9-001a bound
[   10.217000] imx477 10-001a: tegracam sensor driver:imx477_v2.0.6
[   10.494576] Modules linked in: ... nv_imx477(OE+) ...
[   10.517686] imx477 10-001a: imx477_board_setup: error during i2c read probe (-121)
[   10.517723] imx477 10-001a: board setup failed
[   10.517813] imx477: probe of 10-001a failed with error -121

Is my camera or driver broken? Should I be worried about the probe failure on 10-001a?

Before jumping to conclusions, can you run the following command and share the output? It’ll help us see the full picture of what the driver is doing across both camera ports:

sudo dmesg | grep -E "imx477|imx219|arducam"

Also, just to confirm — the camera does actually stream successfully from CAM0 when you run your GStreamer pipeline, correct?

Yeah, streaming from CAM0 works fine — I can see the video feed without any issues. Here’s the filtered dmesg output:

[    9.905577] imx477 9-001a: tegracam sensor driver:imx477_v2.0.6
[   10.207216] tegra-camrtc-capture-vi tegra-capture-vi: subdev imx477 9-001a bound
[   10.217000] imx477 10-001a: tegracam sensor driver:imx477_v2.0.6
[   10.517686] imx477 10-001a: imx477_board_setup: error during i2c read probe (-121)
[   10.517723] imx477 10-001a: board setup failed
[   10.517813] imx477: probe of 10-001a failed with error -121

So the camera works but those error messages are still there. Confusing.

This is actually completely expected behavior — nothing is broken. Here’s what’s happening:

On the Jetson Orin Nano, the system probes both I2C addresses for the imx477 sensor regardless of whether a camera is physically connected:

  • 9-001a → CAM0 port (where your camera is connected)
  • 10-001a → CAM1 port (empty, no camera)

Looking at your logs:

[    9.905577] imx477 9-001a: tegracam sensor driver:imx477_v2.0.6
[   10.207216] tegra-camrtc-capture-vi tegra-capture-vi: subdev imx477 9-001a bound   <-- CAM0: healthy
[   10.217000] imx477 10-001a: tegracam sensor driver:imx477_v2.0.6
[   10.517686] imx477 10-001a: imx477_board_setup: error during i2c read probe (-121)  <-- CAM1: nothing there
[   10.517723] imx477 10-001a: board setup failed
[   10.517813] imx477: probe of 10-001a failed with error -121

9-001a (CAM0) initializes correctly and binds to the VI subsystem. 10-001a (CAM1) tries to probe, finds no device on the I2C bus, and returns error -121 (I/O error / no response). That’s perfectly normal for an empty port.

You can safely ignore the 10-001a errors. Your setup is working as intended.

Thanks for clearing that up — makes total sense now. The dmesg output was just spooking me since I’m new to the Jetson platform.

I do have a different problem though, and it’s more of a blocker for my project. I’m trying to set manual exposure on the IMX477 using the nvarguscamerasrc GStreamer API from Python, but the exposure requests have absolutely no effect. The auto-exposure keeps doing its own thing no matter what values I try.

What’s weird is that the Nvidia Argus Camera sample app (the GUI one) can set manual exposure on the same camera just fine. So the hardware supports it, but nvarguscamerasrc seems to ignore my exposure settings.

Has anyone managed to get manual exposure working with the IMX477 through nvarguscamerasrc on the Orin Nano? Or is there another approach I should be using?

Interesting. Can you share a bit more about what you’re trying to achieve? Specifically:

  • What’s your use case that requires manual exposure?
  • Are you trying to control gain as well, or just exposure time?
  • What lighting conditions are you working in?

This will help narrow down whether the nvarguscamerasrc limitation has a known workaround or if there’s a completely different API path you should take.

Sure, here’s the context:

I’m building an object recognition application that needs to process frames in real-time. The problem is that in certain lighting conditions, the auto-exposure algorithm increases the exposure time way too much, and I end up with significant motion blur. That kills my detection accuracy.

What I need:

  • Short exposure time — critical for eliminating motion blur, even if the image gets darker
  • Manual gain control — I’m willing to bump up the gain to compensate for the shorter exposure
  • The ability to lock both exposure and gain to fixed values from Python

The auto-exposure is the main enemy here — it keeps prioritizing a well-lit image over a blur-free one, and my object recognition pipeline can handle a noisier/darker image much better than a blurry one.

I tried nvarguscamerasrc exposure parameters and they just don’t stick. The Argus Camera sample app proves the sensor can do it, so it’s an API-level problem.

Got it — that’s a really clear use case and I can see why auto-exposure is causing you grief. Motion blur is a dealbreaker for object detection.

You’re right that the IMX477 hardware fully supports manual exposure and gain control, and the fact that the Nvidia Argus Camera app works confirms the driver isn’t the problem. The limitation you’re hitting is specifically with nvarguscamerasrc — it doesn’t expose reliable manual exposure control for all sensors in the same way the full Argus API does.

The better approach is to use the Argus library directly (libargus) from Python. This gives you the same level of control the sample app has.

I’ve put together a Python code sample that demonstrates how to manually set exposure time and gain on the IMX477. I’ve sent it to you via private message — check your inbox. The key section you’ll need to modify is clearly marked; that’s where you’ll set your desired exposure and gain values.

Give it a try and let me know if you run into any issues. The short version is: skip nvarguscamerasrc for exposure control, use the Argus API directly.

I just tested the Python code you sent and it works perfectly. I can now lock exposure to a short value and bump up the gain — no more motion blur. My object recognition pipeline is way more reliable now, even in challenging lighting conditions.

For anyone else hitting the same wall: if nvarguscamerasrc ignores your exposure settings on the IMX477 (or likely other sensors too), going through the Argus API is the way forward. The level of control is night and day.

Thanks for the help on both issues — the dmesg clarification and the exposure solution. Really appreciate it!