Cannot find Arducam Jetson OV9281 intrinsics to update camera parameters after Kalibr calibration

Hi, I’m trying to change the intrinsic parameters of my Arducam OV9281 cameras on a Jetson board to match the values I just got out of a calibration, but I can’t find the internal parameters (intrinsics) anywhere. Where are they stored / how do I change them? I finished calibrating both cameras with Kalibr and now I need to push the new intrinsics back so the cameras actually use the corrected values instead of whatever they ship with.

Hey, happy to help look into this. A few quick questions so I understand your setup:

  1. Which Jetson module and which JetPack/L4T version are you on?
  2. How are you accessing the cameras — through the standard v4l2 interface (/dev/videoX), an Arducam driver, or something like GStreamer/argus?
  3. When you say you can’t find the intrinsics, where have you looked so far? For example:
    • v4l2-ctl -d /dev/video0 --list-ctrls
    • v4l2-ctl -d /dev/video0 --all
    • any config/ini/yaml files under the Arducam install directory

That’ll help me point you in the right direction.

Thanks. It’s a Jetson with the OV9281 module over the Arducam driver. I’m using the v4l2 interface.

I ran v4l2-ctl -d /dev/video0 --list-ctrls and I only get the usual stuff like exposure, gain, white balance, etc. Nothing that looks like fx, fy, cx, cy or a distortion model. I also ran v4l2-ctl --all and there’s no intrinsics block.

I poked around the Arducam install folders looking for any yaml/ini/json that might hold the camera matrix, but I couldn’t find anything that looks like K or D. I also checked the device tree overlay assuming the params might be in there, but I couldn’t spot anything set as intrinsics either. Am I looking in totally the wrong place?

Just to add — the calibration itself went fine, Kalibr gave me a proper camchain file with intrinsics and extrinsics for both cameras. The problem is purely on the “write the new intrinsics back” side. I don’t see any file or control that lets me override the values the driver/camera is using. Is there a documented way to update them, or are they baked in somewhere I can’t reach?

Thanks, that’s helpful context. So the short version is: on these modules the intrinsic parameters live at the kernel driver level. That means they’re not exposed through the normal v4l2 control set, and they aren’t stored in a userspace config file you can edit. That’s why --list-ctrls and --all don’t show anything like fx/fy/cx/cy — the driver simply doesn’t surface them as user-facing controls.

So it’s not that you’re looking in the wrong directory; there just isn’t a userspace entry point for reading or writing those values.

Hmm, that’s a bit of a problem for me. Is there really no way to do it? Could I rebuild/modify the driver, patch a device tree overlay, or set the values at runtime somehow? Even editing something and reflashing would be fine if it gets the calibrated intrinsics in. I just need the camera to use my Kalibr values instead of the default ones.

I checked into this with the team, and unfortunately we can’t help modify these. The camera internal parameters are handled at the kernel driver level, which is closed to users — it isn’t open or exposed for modification, and there’s no supported procedure we can provide to change or override them.

So to summarize where this lands:

  • Your calibration with Kalibr is fine; the limitation is on the write-back side.
  • The intrinsics are held in the kernel driver layer and are not accessible from userspace (no v4l2 control, no config file, no supported overlay tweak).
  • We don’t have a workaround or a set of steps for injecting your calibrated values, so there’s nothing actionable I can hand you for changing them on our side.

I know that’s not the answer you were hoping for. If your downstream pipeline can consume the Kalibr camchain directly, that’s likely the most practical path, but as far as modifying the camera’s internal parameters on the module itself, that’s not something we’re able to support. Feel free to ping here if you hit anything else and I’ll take a look.