Arducam IR-CUT Camera Night Mode on Jetson Nano: External IR Light Needed? Day/Night Range?

Hi everyone, I’m trying to get an Arducam IMX477 camera working on my Jetson Nano over SSH (headless setup, no monitor attached). I followed the guide I found but I’m hitting errors right out of the gate.

Here’s the GStreamer pipeline I’m running:

gst-launch-1.0 nvarguscamerasrc sensor_id=$sensor_id ! "video/x-raw(memory:NVMM),width=1920,height=1080,framerate=$Framerate/1,format=NV12" ! nvvidconv flip-method=0 ! "video/x-raw,width=960,height=720" ! nvvidconv ! nvegltransform ! nveglglessink -e

I defined sensor_id=0 and Framerate=30 as variables before running it. But the pipeline just dies with these errors:

nvbufsurftransform: Could not get EGL display connection
WARNING: erroneous pipeline: could not set property "sensor-id" in element "nvarguscamerasrc0" to "!"
EGL failed to initialize!  Exiting...
Setting pipeline to PAUSED ...
Using winsys: x11
Failed to set pipeline to PAUSED.
Setting pipeline to NULL ...
Freeing pipeline ...

I’m not sure if this is a driver issue, a pipeline syntax problem, or something to do with running over SSH. Any help appreciated.

Welcome to the forum! You’ve actually got two separate issues happening at the same time in that pipeline. Let me break them down:

Issue #1 – Empty sensor-id: Look at the error: could not set property "sensor-id"... to "!". That ! character showing up where a sensor ID should be is a dead giveaway. You defined your variable as sensor_id (all lowercase), but in your pipeline you’re referencing $SENSOR_ID. Linux environment variables are case-sensitive, so $SENSOR_ID is resolving to an empty string. The shell then ends up passing something like sensor_id= ! to gst-launch, which is why it explodes.

Issue #2 – Headless EGL failure: nveglglessink requires a physical display connected to the Jetson’s HDMI output. Since you’re over SSH with no monitor, there’s no EGL display to connect to, hence Could not get EGL display connection and EGL failed to initialize!.

Before we fix the pipeline, let’s first make sure the camera driver is properly loaded. Can you run this and post what you get?

ls -l /dev/video*

Ah, that variable typo is embarrassing — I was following a guide meant for the IMX708 originally and I must have mixed up the variable names. Good catch.

I ran ls -l /dev/video* and I do see /dev/video0 listed, so I think the driver is loaded. What’s the correct pipeline I should use for a headless setup? I just need to capture video to a file, nothing fancy.

No worries, mixing up guides between the IMX708 and IMX477 is actually pretty common — they use different drivers, so it’s good that you checked /dev/video* and confirmed the device node exists. If it hadn’t shown up, you’d need to run sudo /opt/nvidia/jetson-io/jetson-io.py, select the IMX477 driver, save and reboot.

Since your driver looks fine, here’s a clean pipeline for headless/SSH capture. I’ve hardcoded sensor-id=0 to avoid any variable headaches:

gst-launch-1.0 -e nvarguscamerasrc sensor-id=0 ! "video/x-raw(memory:NVMM),width=1920,height=1080,framerate=30/1" ! nvv4l2h264enc ! h264parse ! mp4mux ! filesink location=test_video.mp4

Let it run for maybe 5–10 seconds, then hit Ctrl+C to stop. After that, check if test_video.mp4 was created and try playing it back on your PC.

One other thing worth knowing about the IMX477 module — the IR-Cut filter is the “Automatic Switching” variant. It’s hardware-controlled via a photoresistor (LDR) and comparator circuit on the board. When it gets dark, it mechanically toggles to Night Mode (IR pass); when it’s bright, it switches back to Day Mode (IR blocked). There’s no GStreamer property or software command to control it — it’s entirely autonomous.

That worked! The pipeline ran fine and I’ve got a playable test_video.mp4 file. Thanks for the help on that.

A couple of follow-up questions about the IR-Cut filter and nighttime use:

  1. When the filter switches to Night Mode, does the camera need an external IR illuminator to actually see anything in the dark? Or does it have some built-in IR LEDs?
  2. What kind of distance can I expect from this camera during daytime and nighttime? I’m using the 6mm CS lens that came with it (F1.2 I believe).

Glad the pipeline is working!

To answer your questions:

External IR Light — Yes, required. When the mechanical IR-cut filter switches to Night Mode, the IR-blocking glass physically moves out of the optical path, which means the sensor can now see infrared light. But the camera module itself does not emit any light. In complete darkness, without an external IR source, you’ll just get a black image. You’ll want an external 850nm IR illuminator/LED — those are common for security camera setups and the IMX477 sensor has good sensitivity in that range.

Distance Range (6mm CS Lens, F1.2):

  • Daytime: Minimum focusing distance is about 0.2m (20cm) — that’s the MOD (Minimum Object Distance) for this lens. Maximum is effectively infinity since it’s a manual-focus CS-mount lens; you just turn the focus ring to set your working distance.
  • Nighttime: This is entirely determined by how powerful your external IR light is. The F1.2 aperture helps a lot — it gathers roughly 2–3× more light than typical F1.8 or F2.0 lenses. As rough estimates:
    • Small onboard-style IR LED ring: ~3 to 5 meters
    • Dedicated security IR floodlight: 20 to 30+ meters, depending on wattage and beam angle

Thanks for the detailed explanation, that all makes sense.

I’ve got two more technical questions if you don’t mind:

  1. Do you have the pinout diagram for the 4-lane MIPI CSI-2 interface between the Jetson Nano and the IMX477 camera module?
  2. Is there any documentation on the spectral response / sensitivity characteristics of this sensor — specifically how it behaves with visible light vs. IR, both with and without the IR-cut filter in place? I’m trying to understand the wavelength cutoff.

Here’s the 4-lane MIPI CSI-2 pinout for the camera module:

MIPI CSI-2 Pinout

As for spectral response charts — unfortunately we don’t have specific spectral response curves or filter transmission data published for this exact module configuration (i.e., with vs. without the IR-cut filter in place). The IMX477 is a Sony sensor and its bare-silicon spectral response is documented in Sony’s datasheet, but the combined response with our IR-cut filter glass isn’t something we’ve characterized and published as a chart.

That pinout diagram is exactly what I needed, thank you.

Regarding the spectral response — do you have spectral response charts for any of your other camera modules or sensors? Even something for a different model would be helpful as a reference point.

Unfortunately, no — we don’t have published spectral response or transmission charts available for any of our camera modules at this time. This kind of characterization data isn’t something we currently provide in our documentation.

If you need more detailed technical specifications beyond what’s in the public datasheets, your best bet would be to reach out to our sales team directly — they may be able to check with the engineering team on whether any unpublished characterization data exists for your use case.