Hi, hoping someone here can help. I’m trying to run the Arducam bug report tool on my Jetson but it dies immediately with a Python error. The command is:
Traceback (most recent call last):
File “./arducam-camera-bug-report-nvidia”, line 128, in
height_ = run_cmd(height).stdout.strip()
File “./arducam-camera-bug-report-nvidia”, line 16, in run_cmd
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
File “/usr/lib/python3.6/subprocess.py”, line 423, in run
with Popen(*popenargs, **kwargs) as process:
TypeError: init() got an unexpected keyword argument ‘text’
The Python looks like 3.6 based on that subprocess path. Any idea what’s going on? I’m using this as part of trying to debug a camera that has never worked on this board.
Thanks for the details. Quick heads up first: that bug report script is still in BETA, and you may well be the first person to actually run it, so a crash isn’t a total surprise. The error is coming from the script itself — it passes a text= keyword argument to subprocess.Popen, but that argument only exists from Python 3.7 onward. On Python 3.6 it throws exactly the TypeError you’re seeing. That one is on us and I’ll get it patched.
While I sort that out, can you tell me more about your setup? Which board, how the camera is connected, and what the actual camera problem is?
Sure. The board is a Jetson Xavier NX. I have it connected to my laptop over USB, and the camera is an Arducam B0187 wired up over MIPI-CSI. Honestly the camera has never given me an image at all, not once. That’s the reason I was running the bug report script in the first place.
Ok that helps a lot. Just so we’re on the same page — earlier we’d looked at this as possibly a display problem (capture happens in software but the image never gets shown), and we also found the frame rate in the pipeline wasn’t actually supported by the sensor/resolution. When the wrong frame rate is requested, the camera just fails to produce a frame at all.
Can you paste the kernel messages for the sensor? Try:
dmesg | grep imx219
Also include anything about EGL/dmabuf you might be seeing in the logs.
That’s a useful clue. The i2c read probe failing with -121 means the board couldn’t talk to the sensor on that port — usually a wiring/connection problem on that specific CSI port — while the other one (10-0010) bound correctly. The EGL/dmabuf messages point to a possible display-side issue.
Important: the B0187 is just the IMX219 module, and it does NOT need any driver installed. So please switch anything back to imx219 and don’t install extra drivers for it.
I’ve fixed the TypeError in the beta script. Grab the updated one and run it:
That will drop an arducam-bug-report.txt in your current directory — please attach that file.
It also generates an arducam-test.jpg in the execution directory. Try opening that image yourself: if it opens fine, it means the problem is with your display, not the capture.
Ok, re-ran the updated script and it works now — no more TypeError. It produced both files. I’ve attached the bug report txt. One thing though: the arducam-test.jpg opens fine on my machine, so does that point at the display side?
Also, going back to the frame rate thing — what should FRAMERATE actually be? I think I had it at 60 earlier.
Good, glad the script runs now. And yes — if arducam-test.jpg opens, that confirms the issue is on the display path rather than capture.
For the frame rate, don’t use 60 with 1920x1080. Use 30 (the mode roughly supports 2 to 60, but 60 was giving Frame Rate specified is greater than supported). Test with:
SENSOR_ID=0 # 0 for CAM0 and 1 for CAM1 ports
FRAMERATE=30 # Framerate can go from 2 to 60 for 1920x1080 mode
gst-launch-1.0 nvarguscamerasrc sensor-id=$SENSOR_ID ! “video/x-raw(memory:NVMM),width=1920,height=1080,framerate=$FRAMERATE/1” ! nvvidconv ! nvoverlaysink
If you want to bypass the display entirely and just confirm frames are being produced, use fakesink:
Alright, set FRAMERATE=30 and I still don’t get a picture on screen, but the fakesink pipeline seems to run without complaining. So it really does look like the display path. Any docs on the CSI config I should follow? I’m wondering if I messed up Jetson-IO somehow.
Thanks, I’ll go back through the Jetson-IO steps and re-seat the connector on the port that threw the -121 error. I’ll post back with a fresh bug report if it still doesn’t come up.
The beta arducam-camera-bug-report-nvidia crash was a bug in the script: it passed an unsupported text= kwarg to subprocess.Popen on Python 3.6, giving TypeError: __init__() got an unexpected keyword argument 'text'. That’s fixed, and the updated script now runs and produces arducam-bug-report.txt.
B0187 is the IMX219 module and needs no driver installation — make sure it’s set back to imx219.
The camera produced no image partly because of an unsupported frame rate (Frame Rate specified is greater than supported when using 60 at 1920x1080). Use FRAMERATE=30.
dmesg | grep imx219 shows one CSI port failing the i2c probe (imx219_board_setup: error during i2c read probe (-121) / probe of 9-0010 failed with error -121) while the other bound (subdev imx219 10-0010 bound). Combined with the EGL/dmabuf errors (Could not get EGL display connection, dmabuf_fd -1 mapped entry NOT found, CONSUMER: ERROR OCCURRED, Argus Error Status), this points to a connection problem on that port plus a display-side issue.
The generated arducam-test.jpg opens fine, which suggests the remaining problem is on the display path rather than capture.
Next step: re-seat/check the CSI connector on the failing port and redo the Jetson-IO config (second option in step 3). If it still doesn’t come up, run the bug report script again and post the new arducam-bug-report.txt.