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?
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.
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!