Are there IMX230 Pivariety camera drivers for Jetson Xavier NX/Nano?

IMX230 based cameras for Jetson

Hi, I’d like to try an IMX230-based camera on a Jetson Xavier NX and also on a Nano. The IMX230 modules I’m looking at are listed under the Pivariety cameras (the 21MP IMX230 color module, the one advertised for RPi 4B/3B/2B/3A/Pi Zero/CM3/CM4).

Before I order, I want to check: are there compatible drivers for Jetson Nano / NX for these IMX230 cameras? I’ve been reading the Pivariety docs here:
https://docs.arducam.com/Raspberry-Pi-Camera/Pivariety-Camera/20MP-IMX230/
and the product page here:

But both pages seem to be Raspberry Pi focused, so I’m not sure if the same driver works on Jetson. Thanks!

Hi, thanks for checking before ordering. Quick clarification so you don’t go down the wrong path:

The IMX230 listing you found is under the Pivariety camera docs, and that Pivariety driver package is meant for Raspberry Pi boards. It will not work on Jetson, because the Jetson kernel and driver stack are different.

For using these IMX230 cameras on Jetson, you need the Jetvariety driver instead of the Pivariety driver.

Can you tell me a bit about the setup so I can point you at the right guide?

  • Which Jetson module exactly (Xavier NX / Nano)?
  • Which JetPack / L4T version?
  • Are you planning to use one camera or multiple?

In the meantime, the correct starting point for Jetson is the Jetvariety Camera Quick Start Guide:
https://docs.arducam.com/Nvidia-Jetson-Camera/Jetvariety-Camera/Quick-Start-Guide/

Thanks, that explains a lot. Setup is:

  • Jetson Xavier NX (dev kit carrier board), JetPack 5.1 (L4T R35.2.1)
  • Also have an older Jetson Nano (4GB, JetPack 4.6) I wanted to test on
  • Single IMX230 module for now

I actually already tried the Pivariety install on the Xavier NX before posting. I followed the Pi guide and ran the install script, rebooted, but the camera never shows up.

v4l2-ctl --list-devices only shows the onboard stuff, nothing that looks like the IMX230. And dmesg is full of probe errors:

[ 12.345678] imx230 9-0010: probing i2c device
[ 12.345679] imx230 9-0010: failed to read chip id
[ 12.345679] imx230: probe of 9-0010 failed with error -121
[ 12.345680] tegra-i2c 3180000.i2c: no acknowledge from address 0x10

So I guess I installed the wrong thing entirely. Should I just wipe and reinstall, or can I swap to the Jetvariety driver on top of this?

Yeah, that output makes sense. Error -121 (EREMOTEIO) with “no acknowledge from address 0x10” means the i2c driver that got loaded isn’t the right one for your setup — the Pivariety install puts RPi-targeted pieces in place, but on the Jetson the kernel/DT binding doesn’t match, so the sensor never actually talks to the IMX230.

Two things before you reinstall:

  1. Undo the Pivariety install first. On Jetson the RPi installer can leave stale modules and overlays behind. Easiest is to remove what it installed (or reflash, if the NX is easy for you to reflash) so we start clean.
  2. Then install the Jetvariety driver, which is the package built for Jetson.

Once you’re clean, follow the Jetvariety Camera Quick Start Guide for Jetson:
https://docs.arducam.com/Nvidia-Jetson-Camera/Jetvariety-Camera/Quick-Start-Guide/

A heads up: the exact driver/firmware package depends on your module and L4T version, so I’ll send the matching package to you via private message — please check your messages and use that one for the install. Don’t reuse the file from the Pivariety docs.

Got it, that’s the part I was missing. Cleaned off the old install, then used the package from your private message along with the Jetvariety Quick Start Guide you linked.

Rebooted and now the camera actually comes up:

v4l2-ctl --list-devices
imx230 (platform:tegra-camrtc-ca):
/dev/video0

And dmesg looks healthy now, no probe failures:

[ 14.998765] imx230 9-0010: imx230_probe: success
[ 14.998766] imx230 9-0010: Detected IMX230 sensor

Sensor is streaming fine. Couple of questions before I set up the Nano:

  1. Is the same Jetvariety driver the right one for the Jetson Nano (JetPack 4.6), or is that a separate package?
  2. Anything different in the steps for the Nano vs the NX?

Great, that’s exactly what we want to see — clean probe, sensor detected, /dev/video0 present. So to summarize where we landed:

The IMX230 listing you originally found is a Pivariety/Raspberry Pi offering, and the Pivariety driver isn’t what runs these cameras on Jetson. For the IMX230 on Jetson, the correct path is the Jetvariety driver. Once the right driver was installed, the probe errors (-121 / no acknowledge at 0x10) disappeared and the sensor was detected and streaming.

On your two questions:

  1. Yes — the Jetvariety driver is the Jetson-side driver family for these cameras. The specific package/version still has to match the module and the JetPack/L4T version, and JetPack 4.6 on the Nano is a different L4T branch than your NX on JetPack 5.1, so it won’t be the identical package you just used.
  2. Same overall procedure, following the same Jetvariety Quick Start Guide: Quick Start Guide - Arducam Wiki — just install the package that matches the Nano’s L4T version.

I’ll send you the Nano-matching package via private message so you have the right one. Ping back here if the probe fails again and we’ll compare the dmesg output.

ok, thanks.