Hi all, I’m trying to get an Arducam Pivariety 18MP AR1820HS camera module (SKU B0367) running on a Jetson Orin Nano and I’m hitting a wall. Before I go deeper - does this module actually need the extra JetVariety project board/shield, or can it connect straight to the dev kit? Right now it’s plugged into the CAM0 port with a 22-pin CSI cable and nothing else attached. The ArduCam drivers are installed and v4l2-ctl sees the camera, but any GStreamer attempt fails. Does anyone have a working GStreamer command or setup steps for this combo?
Welcome to the forum! Quick answer: no, you don’t need the extra JetVariety board/shield for this module - a direct 22-pin CSI connection is fine. Since you’re using a JetVariety camera, I’d recommend streaming with the arducam_displayer script instead of a raw GStreamer command for now. Can you run the demo code and paste the error log here? That will tell us a lot more. Demo reference: Quick Start Guide - Arducam Wiki
Thanks for confirming the board isn’t needed. Here’s the full picture. I can’t reach the camera through a GStreamer pipeline using v4l2src on the Orin Nano. Setup: camera on CAM0 via 22-pin CSI, no other boards, ArduCam drivers installed. Running v4l2-ctl -d /dev/video0 --list-formats-ext does return the resolution specified for this camera. But the example Python code from the ArduCam GitHub and direct GStreamer commands both end in various errors - communication with the camera just isn’t working. The weird part: the same demo code works fine on my old Jetson Nano DevKit, but on the Orin Nano DevKit I get a blank screen and no error message at all. I’m guessing it’s a JetPack driver issue on the Orin Nano. I followed this guide: Quick Start Guide - Arducam Wiki. I collected a jtop info screenshot, a screenshot of the blank screen, and a txt file with the terminal commands plus kernel buffer messages from after running the demo. One thing I’m trying to understand: is a v4l2src-based GStreamer pipeline generally not recommended for these cameras, or is it just a troubleshooting thing?
Thanks for the detailed report. Based on what you’ve shared, the JetVariety camera driver looks like it installed successfully on the Orin Nano. Here’s the first thing I’d try: the Orin Nano Dev board has two CSI ports, and it’s possible the camera is sitting on a bad port. Can you move the camera to the other CSI port and test again?
Okay, moving it to CAM1 helped, but only partially. The demo code ran once, then every run after that the camera just output blank frames. I’m also seeing frame-by-frame acquisition issues on both the Nano and the Orin Nano now. And on both devices I can’t set exposure time or any other camera parameters at all.
I wrote a custom Python script based on the demo code, with a device_flag variable that switches constants depending on the device - default format is BA10 on the Nano and Y16 on the Orin Nano. On the Nano with default BA10, only every 4th frame contains information - blank-blank-blank-info repeats for at least 60 cycles. Stats from that run:
Acquired 240 frames in 41.510305404663086 s. Total FPS is 5.781696801802847
Acquired 60 frames containing data in 41.510305404663086 s. Effective FPS is 1.4454242004507118
Every meaningful frame on the Nano shows a Bayer-like pattern when zoomed in, and that pattern disappears after conversion to BGR. On the Orin Nano with default Y16, the program reads three frames: one line of image in the top third with the rest of the frame all zeros, plus two frames with image - every other frame is blank, and a timeout error keeps appearing after those 3 frames. The 3 frames that do show up are captured very close together in time and don’t reflect what happens between reads, so they’re not really ‘live’. I tried switching between BA10 and Y16 but it didn’t help. Also, might be worth updating the CAM0 port info in the ArduCam wiki (Introduction to Arducam Jetson Cameras - Arducam Wiki) since CAM0 didn’t work for me.
So my main questions: what causes the frame-by-frame acquisition issues, and how do I fix them to get stable 6 FPS live video? How do I control the output data format (BA10 vs Y16)? And how can I control acquisition time, white balance, and other basic parameters?
Thanks for the detailed breakdown - that’s really helpful. Let me summarize where we are: the driver appears to be installed correctly, and moving to CAM1 gave a partial improvement (the demo ran once), but the remaining symptoms are the blank frames, the every-4th-frame pattern on the Nano with BA10, and the timeout errors with mostly-blank frames on the Orin Nano with Y16. That kind of pattern usually suggests a data format/alignment issue between what the sensor is producing and what the driver is passing to userspace, but the root cause isn’t confirmed yet.
For now the workaround is to keep the camera on CAM1 and use the arducam_displayer script rather than a raw GStreamer v4l2src pipeline. As for your questions about forcing BA10 vs Y16 and setting exposure/white balance - those are still open and will need more digging on the driver side. If you can share the kernel buffer log and the output of v4l2-ctl -d /dev/video0 --list-formats-ext from the Orin Nano, that’ll let us compare the format tables between the Nano and the Orin and take the next step.