Having a weird issue with the Arducam 16MP Autofocus Quad-Camera Kit (UC-512) HAT on a Jetson Nano 4GB Developer Kit. I plugged an IMX219 camera module into the HAT, and the camera is detected at /dev/video0, but it crashes as soon as I try to capture. If I connect the same IMX219 directly to the Jetson (no HAT), it works without any error.
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
Argus Error Status
Welcome! The HAT board in the UC-512 kit is designed to be used only with the IMX519 camera modules that ship with it. It isn’t compatible with the IMX219 module, which is why the IMX219 works fine connected directly to the Jetson but fails through the HAT. That mismatch is what’s behind the nvbuf_utils/dmabuf_fd errors you’re seeing during capture.
So for this kit, stick with the included IMX519 modules on the quad-camera HAT.
Thanks. Unfortunately I’ve now tried the IMX519 cameras that came with the Camarray HAT and they still won’t stream on the Jetson Nano. The quick start guide (Quick start - Arducam Wiki) doesn’t actually cover streaming from the Camarray HAT with the IMX519. I only found IMX219 and IMX477 sections, and those gstreamer commands didn’t work either.
Also, can I use other Arducam IMX519 Jetson Nano compatible modules with this HAT? I was hoping to use an IMX519 with an M12 thread so I can swap in a wider-angle lens. One of the forum questions said the Camarray HAT only works with the modules that came with the board, but I wanted to double-check.
Let’s work through the IMX519 setup. Can you post the exact gstreamer command you’re using with the Camarray HAT and IMX519, plus confirm your environment: Jetson Nano, L4T/JetPack version, and how you installed the IMX519 drivers?
That command looks right for the IMX519. Can you paste the full terminal output from when the pipeline starts until it exits? The Argus sensor mode list and the exact point where it fails will be useful.
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: 4656 x 3496 FR = 10.000000 fps Duration = 100000000 ; Analog Gain range min 1.000000, max 16.000000; Exposure Range min 13000, max 683709000;
GST_ARGUS: 3840 x 2160 FR = 21.000000 fps Duration = 47619048 ; Analog Gain range min 1.000000, max 16.000000; Exposure Range min 13000, max 683709000;
GST_ARGUS: 1920 x 1080 FR = 59.999999 fps Duration = 16666667 ; Analog Gain range min 1.000000, max 16.000000; Exposure Range min 13000, max 683709000;
GST_ARGUS: 1280 x 720 FR = 120.000005 fps Duration = 8333333 ; Analog Gain range min 1.000000, max 16.000000; Exposure Range min 13000, max 683709000;
GST_ARGUS: Running with following settings:
Camera index = 0
Camera mode = 1
Output Stream W = 3840 H = 2160
seconds to Run = 0
Frame Rate = 21.000000
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:02.078576188
Setting pipeline to PAUSED …
Setting pipeline to READY …
GST_ARGUS: Cleaning up
(Argus) Error Timeout: (propagating from src/rpc/socket/client/ClientSocketManager.cpp, function send(), line 137)
(Argus) Error Timeout: (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function dispatch(), line 91)
(Argus) Error Timeout: (propagating from src/rpc/socket/client/ClientSocketManager.cpp, function send(), line 137)
(Argus) Error Timeout: (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function dispatch(), line 91)
^C
Thanks, that’s helpful. Argus is enumerating the IMX519 sensor modes correctly (4656x3496, 3840x2160, 1920x1080, 1280x720), so the sensor side is talking. The failure is at the nvbuf_utils stage: ‘dmabuf_fd -1 mapped entry NOT found’ — the same class of error you saw with the IMX219.
The important limitation here is that the Camarray HAT is paired specifically with the camera modules that ship with it. It won’t work with a single IMX519 module, and it won’t work with other Arducam IMX519 modules either, including the M12-thread variant you were asking about for a wider-angle lens.
For the IMX477 quadrascopic bundle on the Jetson Nano Developer Kit: if you’re on NVIDIA Jetson L4T 35.x / JetPack 5.x or above, the CamArray Kit needs the latest firmware — no earlier than the 2023.02.03 version. Older firmware will only work on previous JetPack versions. So the firmware date is the first thing to check.
To check the firmware date on your HAT, use the small check tool from the edward-ardu/tools repo. I’ve sent you the details privately so you can run it; it will report the firmware date.
To recap:
The Camarray HAT only works with the camera modules that shipped with it. IMX219 modules and other/single IMX519 modules (including M12-thread variants) are not supported.
For JetPack 5.x / L4T 35.x and above, the CamArray Kit firmware must be 2023.02.03 or newer. Run the firmware date check tool I sent you and post the reported date if it still fails.