Hey everyone, I’m trying to get an IMX290 camera working on my NVIDIA Jetson Orin NX Developer Kit. I’m running L4T 36.4.4 (confirmed with cat /etc/nv_tegra_release).
First thing I tried was running the install_full.sh script that came with the camera drivers, but it bombed out with this Python error:
subprocess.CalledProcessError: Command 'lsblk -n -r -o mountpoint,partlabel' returned non-zero exit status 1
Seems like the script is calling lsblk and it’s failing for some reason. Anyone seen this on Jetson before?
That’s odd — the lsblk call failing suggests the install script might be making assumptions about the disk layout that don’t hold on the Jetson. Could you try bypassing the full install script and installing the .deb package directly? Sometimes those wrapper scripts add extra checks that aren’t strictly necessary.
Run dpkg -i on the package and let’s see if it gets any further.
Gave that a shot — manually installed the .deb package with dpkg -i. Unfortunately it fails with the exact same error:
subprocess.CalledProcessError: Command 'lsblk -n -r -o mountpoint,partlabel' returned non-zero exit status 1
Digging into it, it looks like the post-installation script config-by-hardware.py is the culprit. It runs after the package unpacks and that’s where the lsblk call happens. The script seems to be trying to detect something about the board/hardware and just falls over on the Jetson.
Anyone know a way to skip or modify that post-install script?
That config-by-hardware.py script sounds like it’s doing some platform detection that doesn’t recognize the Jetson. Rather than fighting with the .deb, another approach would be to compile the driver from source. Have you tried pulling the MIPI_Camera repository from GitHub and building manually? That way you’d bypass the packaging scripts entirely.
Yeah, I went down that road too. Cloned the MIPI_Camera GitHub repo hoping to compile natively. Problem is — the repository only contains Raspberry Pi files. There’s no Makefile for Jetson, no Tegra-specific source code, nothing. It’s purely structured for Raspberry Pi’s camera stack.
So compiling from that repo is a dead end for the Orin NX.
Fair enough. Another angle: you could try compiling the driver against the native kernel source on your Jetson. The idea is to pull the kernel headers for L4T 36.4.4 and build the camera driver module against those. The headers should expose the V4L2 and media controller interfaces that camera drivers need.
Have you tried fetching the kernel source for your L4T version and attempting a build that way?
Tried that as well, and that’s where I hit another wall. The standard tools for pulling kernel source on ARM64 just grab the generic Ubuntu ARM64 kernel source — not the NVIDIA Tegra kernel source.
The Tegra kernel has all the custom camera driver headers, VI/ISP framework, and device tree plumbing that a camera driver would need. The generic Ubuntu kernel source doesn’t include any of that. So there’s no way to compile a camera driver module without the actual NVIDIA L4T kernel tree.
At this point I’m stuck. I’ve tried:
install_full.sh (fails at lsblk)
.deb package directly (fails at config-by-hardware.py)
GitHub MIPI_Camera repo (RPi-only, no Jetson source)
Native kernel compilation (wrong kernel source, no Tegra headers)
Is there any chance I can get pre-compiled driver files for this camera? Specifically:
A .ko driver module compiled for L4T 36.4.4
A .dtbo device tree overlay for the IMX290 on Jetson Orin NX
Manual folder copy instructions so I can place everything by hand
Happy to bypass the broken install scripts entirely if I can just get the right binaries.
Before I go further down the troubleshooting path — could you share a link to the exact camera module you purchased? I want to check the hardware specs and the intended platform before we spend more time trying to force this to work. Different IMX290 modules have different interface implementations and it’s worth confirming what we’re dealing with.
It’s the Arducam 2MP Ultra Low Light Starvis IMX290 with motorized IR cut. I’m aware it’s marketed as a Raspberry Pi camera, but the sensor is an IMX290 and I was hoping the MIPI CSI interface would be standard enough to work on the Jetson Orin NX with the right driver setup. Is that not the case?
Thanks for the link — and this explains everything. Here’s the root cause of all the failures you’ve been hitting:
The Arducam IMX290-83 module is designed specifically for the Raspberry Pi platform. Every installation method you tried — the install_full.sh script, the .deb package with config-by-hardware.py, the MIPI_Camera GitHub repo, and even attempting a kernel build — all of them target the Raspberry Pi’s VideoCore ISP pipeline and the BCM2835/BCM2711 CSI receiver. None of that exists on the Jetson Orin NX.
On the Jetson, the camera interface goes through NVIDIA’s Tegra VI (Video Input) and ISP hardware, which requires drivers written for the L4T kernel’s V4L2 media controller framework. The RPi driver stack and the Jetson driver stack are completely different — different device tree bindings, different pipeline topology, different everything. This isn’t something you can fix with a .ko or a .dtbo; the camera module itself is wired for the RPi’s CSI pinout and communicates through a firmware/ISP layer that simply doesn’t exist on Jetson.
In short, the IMX290-83 cannot be made to work on the Jetson Orin NX Developer Kit regardless of any driver installation approach.
For a Jetson-compatible solution, you’ll want to look at XISP-based camera modules — these are designed with the proper Tegra VI/ISP integration. UCTronics carries a line of them here:
Those modules use NVIDIA’s ISP directly and come with proper L4T driver packages that install cleanly on the Orin NX. The key difference is the interface implementation — XISP cameras talk to the Tegra VI hardware natively rather than going through a Raspberry Pi ISP abstraction.
I’d recommend reviewing the options at that link and picking one that matches your resolution/FOV requirements. If you have questions about which specific XISP module fits your use case, feel free to follow up.