I’m trying to get the IMX477 camera working on a Jetson Xavier NX with JetPack 5.0.2, both on the official dev kit carrier board and a custom carrier board we designed to match it. The problem with the existing Arducam driver package for 5.0.2 is that it overwrites kernel parameters that fix the RTC bug present in all JetPack 5 releases. Is there a kernel patch file available that doesn’t revert those RTC fixes?
Also, we have a Jetson Orin NX (Seeed Studio reComputer J4012) running JetPack 5.1.2 with the IMX477 driver installed. When I move that Orin NX module into the Xavier NX dev kit carrier board, the IMX477 driver installer fails because it can’t find the expected DTB file.
One more thing — there’s a known low frame rate issue where the IMX477 only gives about 21 FPS instead of what it should be at 4032x3040. I’ve seen this mentioned on the Nvidia developer forums too, but figured I’d flag it here.
Thanks for the detailed report. Let me break down what’s happening here:
JetPack 5.0.2 + RTC bug: The Arducam driver package for JetPack 5.0.2 includes a kernel patch that unfortunately reverts custom kernel parameter changes, which is why your RTC bug fix gets wiped out when you apply it. There isn’t a dedicated patch file specifically for JetPack 5.0.2 that preserves those changes.
Orin NX on Xavier NX carrier board: When you use a Jetson Orin NX module in a Xavier NX carrier board, the DTB file expected by the IMX477 driver installer doesn’t match the board configuration, so the installer can’t proceed. Arducam’s cameras are primarily designed for the official carrier boards and we don’t have documented modifications for third-party carrier board setups.
Low frame rate (~21 FPS): This is a known issue that’s been reported on the Nvidia developer forums as well — it seems to be a JetPack/Nvidia-side problem rather than something specific to the Arducam driver.
For the patch file, we do have something that may help. We have a patch available for JetPack 5.1.2. Would migrating your Xavier NX setup to 5.1.2 be an option? That patch should work without the RTC issue you described on 5.0.2.
Migrating to 5.1.2 on the Xavier NX is worth considering, yes. Can you share the 5.1.2 patch?
Just for context — I actually received IMX477 source code from Arducam back in March 2024, but there wasn’t any guidance on how to modify the Jetson device tree included. At the time the response was essentially that Arducam cameras are designed for the official carrier board and modifications for third-party boards aren’t something you can advise on.
I’ve sent the JetPack 5.1.2 patch file to you via private message. Please check your messages and download it from there.
Regarding the device tree modifications for custom/third-party carrier boards — I understand the frustration, but we genuinely don’t have reference guides for that. Arducam cameras are validated against the official NVIDIA carrier board designs, and the device tree changes needed for a third-party board depend heavily on how that board routes the camera interfaces. That said, if your custom carrier board is designed to match the Xavier NX dev kit carrier board layout, you shouldn’t need additional device tree modifications beyond what the patch provides.
Give the 5.1.2 patch a try on your Xavier NX and let me know how it goes.
I’ve been going through the 5.1.2 patch file and I noticed something odd. The patch creates a new file at ../kernel/nvidia/drivers/media/i2c/arducam.h, but as far as I can tell, nothing else in the patch — and nothing in the existing JetPack kernel source — ever references or includes this file. Is arducam.h actually needed? Or is something missing from the patch?
That arducam.h header is part of the broader Arducam driver framework. It may be referenced by other driver components that are part of the full driver package but aren’t included in this specific patch file. If you’re building only with what’s in the patch and the file isn’t being included anywhere in the IMX477 driver code path, you can safely leave it in place — it won’t cause any issues and having it there means it’ll be available if other Arducam camera drivers need it later. If it’s truly unreferenced in your build, it’s harmless.
Quick update — I successfully applied the JetPack 5.1.2 patch and built the kernel. The camera is detected and I can list available resolutions, so that part is working.
However, I noticed that all the resolutions and frame rates listed are different from what I had with the JetPack 5.0.2 driver. The mode table in the 5.1.2 patch has completely changed. Can you explain why these resolution and frame rate changes were implemented? I’ve attached screenshots showing the difference:
The resolution and frame rate mode tables were updated in the 5.1.2 patch to better align with the sensor’s capabilities and to address compatibility with changes in the JetPack 5.1.x camera stack. The mode table entries — things like {0x0112, 0x0A} — are register-value pairs that configure the sensor for each mode, and they were revised to improve reliability and timing across different JetPack 5.1.x releases.
That said, I understand you may have applications that depend on the specific modes available in the older 5.0.2 driver. Which particular resolutions and frame rates from the 5.0.2 driver do you need to preserve?
Honestly, I’d prefer to just have the full legacy resolution and frame rate set from the 5.0.2 driver available on the 5.1.2 kernel. I don’t fully understand the mode table entries — things like {0x0112, 0x0A} in the imx477_mode_tbls.h file — and I’m not confident I can create those lists myself without breaking something.
Is it possible to get a patch that makes the 5.0.2-era resolutions and frame rates available on JetPack 5.1.2? That would be the ideal outcome for us.
I understand the concern. The mode table entries in imx477_mode_tbls.h are essentially register initialization sequences — each pair is a sensor register address followed by the value to write. They configure things like pixel clock, blanking intervals, exposure limits, and output timing for each resolution mode. It’s not something you’d want to hand-edit without the sensor datasheet.
At this point, here’s a summary of where things stand:
For JetPack 5.0.2 users who need the RTC fix preserved: Your best path forward is migrating to JetPack 5.1.2, as we don’t have a dedicated 5.0.2 patch that avoids reverting kernel parameters.
For the Orin NX on Xavier NX carrier board DTB mismatch: This is a known limitation — our installer expects the DTB that matches the official carrier board. We don’t provide custom DTB modification guides for third-party boards.
For the ~21 FPS issue at 4032x3040: This remains a known JetPack/Nvidia-side issue affecting the IMX477 and isn’t something the Arducam driver alone can resolve.
For the legacy resolution modes: I’ll check with the team to see if we can provide a mode table that restores the 5.0.2-era resolutions for the 5.1.2 driver. I’ll follow up via private message if we can put something together.