I’m trying to get my Arducam Full HD Color Global Shutter Camera (2.3MP AR0234 Wide Angle Pivariety) working on an NVIDIA Jetson Nano. I followed the official quick start guide at docs.arducam.com and everything seemed to install fine.
But when I try to run the demo script:
python3 arducam_demo.py -v 3
I get this OpenCV error:
The function is not implemented. Rebuild the library with support for Windows, GTK+ 2.x, or Cocoa. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function 'cvNamedWindow'
The camera seems to connect (no driver errors), but no window ever opens to show the video stream. Has anyone run into this on the Jetson Nano? Not sure if I missed a dependency or if OpenCV on JetPack is compiled without GUI support by default.
The error you’re seeing is actually pretty common on Jetson platforms. The core issue is that the OpenCV build included with JetPack (or the one you’ve installed) was compiled without GTK+ 2.x support. Without that GUI backend, cvNamedWindow() has nothing to work with and fails at runtime — even though the camera hardware and drivers are perfectly fine.
The arducam_demo.py script relies on OpenCV’s cvNamedWindow for displaying the video feed, so it’s a dead end with that OpenCV build.
Here’s what I’d suggest: try the alternative demo script called arducam_displayer.py. It’s also referenced in the Quick Start Guide under the “Check and Validate the Camera Connection” section. That script may use a different display method that doesn’t depend on the OpenCV GUI backend, so it should bypass this issue entirely.
I switched to arducam_displayer.py and it actually runs and shows output this time, but now I have a different problem: the video is always grayscale. No matter what I do, it seems stuck in Y16 format.
Here’s what I’ve tried so far:
Changed the pixel format in the script to RGB, BA10, and other supported Bayer formats — output still grayscale
Tried setting the format with v4l2-ctl before running the script — no change
The script itself reports the pixel format as Y16 every time
Both the live preview window and any saved frames are grayscale
Environment details:
Camera: Arducam Full HD Color Global Shutter, 2.3MP AR0234 Wide Angle Pivariety
Platform: NVIDIA Jetson Nano
JetPack updated to latest
Physical connections double-checked
All drivers installed per the official docs
I’ve attached a sample frame and a couple screenshots showing what I’m seeing (sample.jpg, Screenshot 2025-08-15 at 18.20.42.png, Screenshot 2025-08-15 at 18.23.48.png).
So my questions are:
Why is the format always Y16 even when I explicitly change it?
How do I properly get this camera to output color?
Is there a firmware or driver update needed to enable the color/Bayer modes?
Just adding a few more screenshots in case it helps — same issue, still stuck in Y16.
I’ve uploaded another sample frame and additional screenshots from my terminal showing the format settings and script output. The camera is definitely streaming, just not in color.
Has anyone else with the AR0234 on Jetson Nano managed to get color output from arducam_displayer.py? Starting to wonder if this is a driver-level limitation or something specific to the Pivariety variant of this sensor.
Thanks for the detailed report and all the screenshots — that’s really helpful.
Let me break down what’s happening based on what you’ve described:
The AR0234 sensor outputs raw Bayer data natively. Y16 is a monochrome/grayscale format, and the fact that the driver keeps defaulting to it — even after you try to switch formats via v4l2-ctl or in the script — suggests one of a few things:
The driver or device tree may not be advertising the Bayer format correctly — the Pivariety camera series uses a different driver stack compared to standard V4L2 cameras on Jetson, and format negotiation can behave differently.
There could be a mismatch between the sensor mode and the requested format — if the sensor is being initialized in a monochrome mode, the driver may reject Bayer format requests silently and stay on Y16.
The arducam_displayer.py script itself may have hardcoded Y16 or be doing its own format selection that overrides your manual changes.
At this stage, this looks like it needs a deeper look at the driver and script interaction. Can you run the following and share the output?
v4l2-ctl -d /dev/video0 --list-formats-ext
That’ll show us exactly what formats the driver is advertising as supported. Also, if you can share the terminal output of arducam_displayer.py when it starts up (the initialization messages), that would help narrow down where the format is getting locked to Y16.
We’ll get to the bottom of this — the AR0234 is absolutely a color sensor, so this is definitely a configuration/driver issue rather than a hardware limitation.