Hi all, I’m trying to get an IMX219 (B0187) camera running on a Jetson Xavier NX and it just won’t start.
Setup:
Jetson Xavier NX, connected to my laptop over USB
B0187 / IMX219 8MP camera on the MIPI-CSI connector
No other camera connected right now. Earlier I used a ZED camera and a normal USB webcam on the Jetson and both were recognized fine.
Symptoms:
Camera doesn’t start. From the troubleshooting page I understand this means the driver isn’t detecting the camera.
nvgstcapture says “Capture completed” but there are errors and no capture results show up on the Jetson.
Earlier I could reach the Set/Get menu in the terminal but got errors like “Encoder null, cannot set bitrate”, “Opening in BLOCKING MODE”, and “No cameras available” (gstnvarguscamerasrc.cpp, execute:645).
GST_ARGUS: Available Sensor modes :
GST_ARGUS: 3264 x 2464 FR = 21.000000 fps ...
GST_ARGUS: 3264 x 1848 FR = 28.000001 fps ...
GST_ARGUS: 1920 x 1080 FR = 29.999999 fps ...
GST_ARGUS: 1640 x 1232 FR = 29.999999 fps ...
GST_ARGUS: 1280 x 720 FR = 59.999999 fps ...
ARGUS_ERROR: Error generated. .../gstnvarguscamerasrc.cpp, execute: 895 Frame Rate specified is greater than supported
ARGUS_ERROR: Error generated. .../gstnvarguscamerasrc.cpp, execute: 1131 InvalidState.
ERROR: from element /GstPipeline:pipeline0/GstNvArgusCameraSrc:nvarguscamerasrc0: Internal data stream error.
gstbasesrc.c(3055): gst_base_src_loop (): ... streaming stopped, reason error (-5)
nvbuf_utils: dmabuf_fd -1 mapped entry NOT found
I’ve double-checked the physical MIPI-CSI connection and it’s good. uname -a gives:
Linux ubuntu 5.14.0-1045-oem #51-Ubuntu SMP Mon Jul 4 06:41:22 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
and I couldn’t find that version in the github XavierNX folder.
Any help appreciated. I’ve attached screenshots of the setup and the error report.
Thanks for the detailed report. Let’s go through the standard checks first.
Please follow the Troubleshooting section here: and then send the full dmesg output. You can also compare against the IMX219 8MP camera doc and its capture section: / .
Can you also run these and paste the results?
i2cdetect -r -y 10 (the last number is the CSI port — try 9 and 10 since your camera can be on either port)
cat /boot/extlinux/extlinux.conf
And confirm which CSI port the camera is physically on, and whether you followed the driver installation page and the Jetson-IO CSI configuration page (in step 3 choose the second option).
The B0187 = imx219, so no extra driver install should be needed, but let’s confirm the board is set up correctly before going further.
I double-checked the physical connection again, it’s fine. I ran the pin configuration again as suggested and then the command from the link — again, no use.
I went through the driver-installation page. That’s where I used uname -a, but I couldn’t match the version in the github XavierNX folder.
I also ran the Jetson-IO CSI config and attached cat /boot/extlinux/extlinux.conf (sometimes it comes up as DEFAULT JetsonIO, sometimes I changed it manually to Jetson primary).
Looking at your gst output, the key line is this one:
ARGUS_ERROR: ... execute: 895 Frame Rate specified is greater than supported
Each resolution on the IMX219 only supports certain frame rates, and in your command you set FRAMERATE=60 while requesting 1920x1080 — but 1920x1080 only runs at 29.999999 fps on this sensor. That’s why Argus throws “Frame Rate specified is greater than supported” and the stream dies.
The modes Argus reports for your sensor are:
3264x2464 @ 21 fps
3264x1848 @ 28 fps
1920x1080 @ 29.999999 fps
1640x1232 @ 29.999999 fps
1280x720 @ 59.999999 fps
So 60 fps is only valid for 1280x720, not 1920x1080. Please change your command to FRAMERATE=30 and try again:
FRAMERATE=30
The supported frame rates per resolution are documented on the product page: .
Also, let’s stick to the Arducam gst examples for now — we won’t consider code from other repositories (like the JetsonHacks CSI-Camera script) at this point.
I’ve attached the error screenshot and the supported-frame-rates screenshot for reference.
user@jetson:~$ echo $FRAMERATE
30
user@jetson:~$ echo $SENSOR_ID
0
user@jetson:~$ gst-launch-1.0 nvarguscamerasrc sensor-id=$SENSOR_ID ! "video/x-raw(memory:NVMM),width=1920,height=1080,framerate=$FRAMERATE/1" ! nvvidconv ! nvoverlaysink
nvbuf_utils: Could not get EGL display connection
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
GST_ARGUS: Creating output stream
CONSUMER: Waiting until producer is connected...
GST_ARGUS: Available Sensor modes :
GST_ARGUS: 3264 x 2464 FR = 21.000000 fps ...
GST_ARGUS: 3264 x 1848 FR = 28.000001 fps ...
GST_ARGUS: 1920 x 1080 FR = 29.999999 fps ...
GST_ARGUS: 1640 x 1232 FR = 29.999999 fps ...
GST_ARGUS: 1280 x 720 FR = 59.999999 fps ...
GST_ARGUS: Running with following settings:
Camera index = 0
Camera mode = 2
Output Stream W = 1920 H = 1080
seconds to Run = 0
Frame Rate = 29.999999
GST_ARGUS: Setup Complete, Starting captures for 0 seconds
GST_ARGUS: Starting repeat capture requests.
CONSUMER: Producer has connected; continuing.
nvbuf_utils: dmabuf_fd -1 mapped entry NOT found
nvbuf_utils: Can not get HW buffer from FD... Exiting...
CONSUMER: ERROR OCCURRED
ERROR: from element /GstPipeline:pipeline0/GstNvArgusCameraSrc:nvarguscamerasrc0: CANCELLED
Additional debug info:
Argus Error Status
Execution ended after 0:00:01.784901248
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
GST_ARGUS: Cleaning up
Setting pipeline to NULL ...
Freeing pipeline ...
Same failure as before — the “Frame Rate specified is greater than supported” error is gone now, but it still dies with dmabuf_fd -1 mapped entry NOT found and the pipeline is CANCELLED. So I really don’t think the frame rate was it.
Thanks for testing that. You’re right that the frame-rate change alone didn’t fix it — dropping to 30 fps removes the “Frame Rate specified is greater than supported” error, but the capture still fails while streaming (dmabuf_fd -1 mapped entry NOT found, then pipeline CANCELLED), so no frames are produced.
Where things stand:
The unsupported 60 fps on 1920x1080 was a real problem, and that specific error is now gone — but it clearly wasn’t the whole story.
The i2c/dmesg output shows the imx219 board setup failing with “error during i2c read probe (-121)” on one port while the other port binds, and which port fails seems to flip between boots (9-0010 vs 10-0010).
With FRAMERATE=30 on 1920x1080, Argus connects in mode 2 (1920x1080 @ 29.999999) but then errors out with dmabuf_fd -1 mapped entry NOT found / Can not get HW buffer from FD.
So we don’t have a confirmed fix yet. To narrow it down, can you try capturing directly at the other modes and on the other port, and paste the full output each time:
1280x720 @ 60 (mode 4)
sensor-id=1 if you move the camera to the other CSI port
That should tell us whether this is mode-specific or a per-port/board setup issue, and we can go from there.