Complete green image from B0579 camera on Seeed Studio J4012 after following Arducam tutorial

Hi everyone, I’m having trouble with the Arducam B0579 camera module on a Seeed Studio J4012 carrier board (Jetson Orin NX, JetPack R36, REVISION 4.4). I followed the Arducam tutorial to install the driver, and the camera gets detected at /dev/video0, but all I get is a completely green image — no actual picture at all.

I’m using this gst-launch pipeline:

gst-launch-1.0 v4l2src device=/dev/video0 ! 'video/x-raw, framerate=30/1, width=(int)1920, height=(int)1200, format=UYVY' ! decodebin ! videoconvert ! autovideosink

The stream starts but just shows solid green. Anyone seen this before with this camera/carrier combo?

That sounds frustrating. Let’s dig into what’s happening at the driver level. Could you run the following and share the output?

v4l2-ctl --all

Also, any errors from dmesg related to the camera or I2C would be helpful. And can you confirm the exact gst-launch terminal output including any warnings?

Sure, here’s everything I’ve got.

Environment:

  • Jetson Orin NX, R36 (release), REVISION: 4.4
  • Driver: tegra-video, version 5.15.148
  • Media driver: tegra-camrtc-ca
  • Card: vi-output, arducam-csi2 9-000c
  • Bus: platform:tegra-capture-vi:2
  • Hardware revision: 0x00000003 (3)

v4l2-ctl --all (key parts):

Format Video Capture:
  Width/Height  : 1920/1200
  Pixel Format   : 'UYVY' (UYVY 4:2:2)
  Bytes per Line : 3840
  Size Image     : 4608000
  Colorspace     : sRGB
  Transfer Func  : Rec. 709
  YCbCr Encoding : Rec. 709
  Quantization   : Limited Range

User Controls:
  brightness=33000, contrast=2, saturation=2, exposure=1
  gain=0, horizontal_flip=0, vertical_flip=0, sharpness=3
  disable_frame_timeout=0, frame_timeout=2000, frame_rate=30

Camera Controls:
  bypass_mode=0, override_enable=0, height_align=1, size_align=0
  write_isp_format=1, low_latency_mode=0, preferred_stride=0
  override_capture_timeout_ms=2500, sensor_modes=1

error 22 getting ext_ctrl Sensor configuration
error 22 getting ext_ctrl Sensor mode I2C packet
error 22 getting ext_ctrl Sensor control I2C packet

Video input: 0 (Camera 2: no power)

gst-launch output:

WARNING: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Signal lost
Additional info: No input source was detected - video frames invalid

Those error 22 messages and the “Camera 2: no power” line look suspicious to me. Any ideas?

Thanks for the detailed dump. There are a few red flags here:

  1. error 22 (EINVAL) on all three extended controls — Sensor configuration, Sensor mode I2C packet, and Sensor control I2C packet are all failing. This means the I2C control path to the sensor isn’t working properly. The driver can see the camera at a basic level, but can’t actually configure it.

  2. “Camera 2: no power” — This is a big one. It suggests a hardware-level power delivery issue.

Before we go further — what carrier board are you using exactly? Could you share a gpioinfo dump? I’m wondering if there’s a regulator or mux issue on the CSI lanes. Also, have a look at dmesg | grep -i regulator for anything related to camera power rails.

The carrier board is the Seeed Studio J4012 (reComputer J4012). Here’s the thing — I was digging through the datasheet and it looks like this board only provides 2-lane CSI, but the B0579 is a 4-lane camera. That seems like it could be the root of the problem.

Datasheet: https://files.seeedstudio.com/products/NVIDIA/reComputer-J401x-datasheet.pdf
Board: https://www.seeedstudio.com/reComputer-J4012-p-5586.html

Here are the relevant gpioinfo lines:

gpiochip0:

line   0: "PA.00"  "regulator-vdd-3v3-sd"  output  active-high
line  ...: "PI.05"  kernel  input
line  ...: "PM.00"  kernel  input
line  ...: "PX.00"  kernel  input
line  ...: "PX.01"  kernel  input
line  ...: "PL.02"  "nvidia,pex-wake"
line  ...: "PEE.04" "Power"  input  active-low

gpiochip1:

line   5: "PAA.05"  "regulator-vdd-3v3-pcie"  output  active-high
line  15: "PCC.03"  "mux"  output  active-high

Do you think rebuilding the kernel with Arducam source code could force the power delivery to work, or is this a fundamental hardware mismatch with the 2-lane vs 4-lane thing?

Good catch on the lane mismatch — that’s very likely contributing to the problem. But the I2C errors and the “no power” status suggest there may be more going on than just lane count.

To summarize what we’re seeing:

  • The camera is detected at the driver level as arducam-csi2 9-000c on /dev/video0 at 1920x1200@30fps (UYVY)
  • But all three extended control reads (sensor config, mode, control I2C packets) return error 22 — the I2C control channel to the sensor is failing
  • The video input status explicitly reports “Camera 2: no power” — this is a hardware-level flag, not a software issue
  • A kernel rebuild alone likely won’t fix this if the carrier board isn’t providing proper power to the camera rail or if the I2C routing is different from what the device tree expects

Before we go down the kernel route, can you test with the Python demo from the Arducam quick start guide? It uses a simpler pipeline and might give us cleaner diagnostics:

https://docs.arducam.com/Nvidia-Jetson-Camera/MIPI-xISP-Camera/Quick-Start-Guide/#software-user-brief

Run:

python3 arducam_demo.py -W 1920 -H 1200

Let’s see if the behavior changes at all.

Ran the Python demo — same green screen, unfortunately. What’s interesting is the frame rate:

width: 1920 height: 1200 fps: 1
width: 1920 height: 1200 fps: 4
width: 1920 height: 1200 fps: 4
width: 1920 height: 1200 fps: 4
width: 1920 height: 1200 fps: 4

Only getting about 4 fps instead of the 30 fps the driver advertises. So the data is flowing, but something is seriously degraded.

At this point I’m pretty convinced it’s the J4012 carrier board. Since the B0579 expects 4 lanes and the J4012 only routes 2, I’m guessing half the pixel data is just missing — which would explain both the green tint (corrupted/missing color planes in UYVY) and the terrible frame rate.

This is on a Jetson Orin NX with the J4012. Is it possible to configure the B0579 to operate in 2-lane mode? Or would I need a custom device tree / driver build that accounts for the J4012’s CSI routing? If you have compiled .dtb and driver files that would work with this specific board, I’d be happy to test them.

You’ve narrowed it down well. The 4 fps vs 30 fps discrepancy really points toward a CSI lane issue — if only 2 of the 4 lanes are connected, the sensor is likely trying to push data across lanes that don’t physically reach the Orin’s CSI controller, causing massive data corruption and the green output you’re seeing.

Regarding 2-lane operation: the B0579’s sensor should be capable of operating in 2-lane mode — most MIPI sensors support lane count configuration — but it depends on whether it’s been exposed in the current device tree. The default .dtb for the B0579 almost certainly configures it for 4 lanes. Getting it to work in 2-lane mode would require:

  1. Modifying the device tree to set continuous-clock and reduce data-lanes from 4 to 2 in the CSI endpoint node
  2. Possibly adjusting the sensor’s register initialization sequence to switch it to 2-lane output mode
  3. Ensuring the J4012’s pinmux and regulator configuration matches what the modified DT expects

I’ve sent you a private message with some files to try — a modified device tree targeting 2-lane operation for the B0579 on the Orin NX, along with instructions for deploying it. Keep in mind that 2-lane mode will halve the available bandwidth, so you may need to reduce the resolution or frame rate. Let us know how it goes after testing.