How to access with Gstreamer to an Arducam AR0234 (B0429) module?

  1. Where did you get the camera module(s)?
    UCTRONICS

  2. Model number of the product(s)?
    B0429

  3. What hardware/platform were you working on?
    Jetson Nano Jetpack 4.4.1-b50

  4. Instructions you have followed. (link/manual/etc.)
    Quick Start Guide - Arducam Wiki

  5. Problems you were having?
    Can not get frames using GStreamer

  6. The dmesg log from your hardware?

  7. Troubleshooting attempts you’ve made?
    I follow the Quick Start Guide installing driver and python application.
    I manged to get frames with arducam_displayer.py
    But I can not meke it work with GStreamer.
    This command (with debug): export GST_DEBUG=“v4l2src:6” && gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,framerate=30/1,width=1920,height=1200 ! videoconvert ! ximagesink
    Get:

Setting pipeline to PAUSED …
Pipeline is live and does not need PREROLL …
0:00:02.866130122 19216 0x5573f3ac00 DEBUG v4l2src gstv4l2src.c:512:gst_v4l2src_negotiate: caps of src: video/x-raw, format=(string)GRAY16_LE, width=(int)1920, height=(int)1200, framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string)GRAY16_LE, width=(int)1920, height=(int)1080, framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string)GRAY16_LE, width=(int)1280, height=(int)720, framerate=(fraction)[ 0/1, 2147483647/1 ]
0:00:02.866592527 19216 0x5573f3ac00 DEBUG v4l2src gstv4l2src.c:520:gst_v4l2src_negotiate: caps of peer: video/x-raw, format=(string)BGRx, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], pixel-aspect-ratio=(fraction)1/1; video/x-raw, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], pixel-aspect-ratio=(fraction)1/1, format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10BE, I420_10LE, I422_10BE, I422_10LE, Y444_10BE, Y444_10LE, GBR, GBR_10BE, GBR_10LE, NV16, NV24, NV12_64Z32, A420_10BE, A420_10LE, A422_10BE, A422_10LE, A444_10BE, A444_10LE, NV61, P010_10BE, P010_10LE, IYU2, VYUY, GBRA, GBRA_10BE, GBRA_10LE, GBR_12BE, GBR_12LE, GBRA_12BE, GBRA_12LE, I420_12BE, I420_12LE, I422_12BE, I422_12LE, Y444_12BE, Y444_12LE, GRAY10_LE32, NV12_10LE32, NV16_10LE32 }
0:00:02.866732686 19216 0x5573f3ac00 DEBUG v4l2src gstv4l2src.c:526:gst_v4l2src_negotiate: intersect: video/x-raw, width=(int)1920, height=(int)1200, framerate=(fraction)[ 0/1, 2147483647/1 ], pixel-aspect-ratio=(fraction)1/1, format=(string)GRAY16_LE; video/x-raw, width=(int)1920, height=(int)1080, framerate=(fraction)[ 0/1, 2147483647/1 ], pixel-aspect-ratio=(fraction)1/1, format=(string)GRAY16_LE; video/x-raw, width=(int)1280, height=(int)720, framerate=(fraction)[ 0/1, 2147483647/1 ], pixel-aspect-ratio=(fraction)1/1, format=(string)GRAY16_LE
0:00:02.866784822 19216 0x5573f3ac00 DEBUG v4l2src gstv4l2src.c:403:gst_v4l2src_fixate: fixating caps video/x-raw, width=(int)1920, height=(int)1200, framerate=(fraction)[ 0/1, 2147483647/1 ], pixel-aspect-ratio=(fraction)1/1, format=(string)GRAY16_LE; video/x-raw, width=(int)1920, height=(int)1080, framerate=(fraction)[ 0/1, 2147483647/1 ], pixel-aspect-ratio=(fraction)1/1, format=(string)GRAY16_LE; video/x-raw, width=(int)1280, height=(int)720, framerate=(fraction)[ 0/1, 2147483647/1 ], pixel-aspect-ratio=(fraction)1/1, format=(string)GRAY16_LE
0:00:02.866835032 19216 0x5573f3ac00 DEBUG v4l2src gstv4l2src.c:418:gst_v4l2src_fixate: Prefered size 3840x2160
Setting pipeline to PLAYING …

And everything seems to work bu I get black frames.
It seems that only GRAY16_LE format is supported using. But even I dont get Black&White frames.

  1. What help do you need?
    What is a valid GStreamer command to get color frames feed into the pipeline?

i am also facing the same issue, using arducam AR0234 b0429 is not giving color video stream on my jetson orin nano.

Hi @anish
Thank you for reaching out. I can definitely clarify what’s happening with your Arducam B0429 camera on your Jetson Orin Nano.

The grayscale video stream you are seeing is the expected behavior for this specific camera model when used with a Jetson platform. This is not a defect or an error in your setup.

The reason for this is that the B0429 is a raw sensor module that does not have a built-in Image Signal Processor (ISP) .

Think of an ISP as the component that “develops” the raw data from a sensor into a full-color image, handling all the color correction, white balance, and demosaicing. Without an ISP, you only get the raw, unprocessed data, which appears as a grayscale or monochrome image.

The NVIDIA Jetson platform relies on the camera module itself to have an ISP to produce a color image directly. Since the B0429 does not have one, it can only output the raw, colorless data stream on your Orin Nano.

For your goal of getting a high-quality, full-color video stream, you will need a camera module that includes an on-board, pre-tuned ISP. We have a product designed for exactly this purpose, and I would strongly recommend you consider it:

This XISP camera has the crucial Image Signal Processor built right onto the board. It will handle all the color processing automatically and deliver the vibrant, full-color video stream you’re looking for, making it a plug-and-play solution for your Jetson.

I understand that this means a different hardware solution is needed, but we want to ensure you have the right tool for your project.

Please let us know if you have any other questions.