Hi everyone, I’m trying to get the Arducam OV9281 camera module working on a Raspberry Pi 5. The module is number 788 rev b and has “for jetson” printed on it. I’ve been following the docs at the Arducam site for the 1MP OV9281/OV9282 global shutter camera.
I edited /boot/config.txt with:
camera_auto_detect=0
dtoverlay=ov9281
I’ve tried this on two different kernel versions — the older 6.6 that shipped with my Pi 5 originally, and then I updated to the latest Raspberry Pi OS with kernel 6.12.x. Neither works. The camera doesn’t show up in rpicam-hello or libcamera-hello at all.
The docs mentioned something about running rpi-update for a specific pull request, but that seems to have expired — the artifacts only stay around for 90 days apparently.
Here’s the relevant dmesg output. I can see dependencies resolving but then it fails:
[ ...] ov9281: probe started
[ ...] ov9281: dependencies resolved
[ ...] ov9281: failed to power on
Anyone got this working on a Pi 5? Not sure if this module is even supposed to work on a Pi given the “for jetson” label.
Thanks for the detailed post. That dmesg output is actually really helpful — the “failed to power on” error is usually a device tree configuration issue rather than a hardware fault.
The root cause here is likely that you’re running a kernel version where the ov9281 overlay doesn’t properly support the Raspberry Pi 5. There was a significant overlay change introduced in kernel 6.12.25. If you’re on anything older than that, the overlay won’t initialise the camera correctly on the Pi 5’s hardware.
First thing to try: upgrade to kernel version 6.12.25 or newer. You can check your current kernel with uname -r. Once you’re on 6.12.25+, the overlay syntax has also changed — you only need:
dtoverlay=ov9281
The old dtoverlay=ov9281,arducam syntax with the ,arducam suffix is now deprecated and no longer required. If you had that in your config from following older guides, remove it — just the plain dtoverlay=ov9281 is what you need now.
And don’t worry about the “for jetson” label — these modules can work on both platforms. The physical sensor is the same. The difference is just in the setup procedure and the cable type you use.
Thanks for the quick reply. So the rpi-update artifacts being expired isn’t a problem then — I just need to get onto 6.12.25 via the normal apt update path?
While I’m waiting for the Pi update, I should mention I also plan to use this camera on a Jetson Orin Nano (hence buying the “for jetson” labelled version). I’ve got two different types of 22-pin to 22-pin flat cables that I bought separately:
Type A: contacts on the same side
Type B: contacts on opposite sides
I’ve tried a few orientations on the Pi — blue plastic facing the lens side of the camera board, and blue plastic facing the HDMI ports on the Pi. I’ve attached some photos of the physical setup so you can see what I’m working with.
Which cable type should I actually be using? And does it differ between the Pi and the Jetson?
Good question on the cables — this trips up a lot of people. You need to use the Type B 22-pin to 22-pin cable (contacts on opposite sides) for both platforms. That’s the same cable type for Raspberry Pi and Jetson. The Type A won’t give you the correct pin mapping.
As for orientation: on a Type B cable, the blue plastic tab orientation flips at each end — so one end will have the blue tab facing one direction, the other end facing the opposite direction. This is by design. Don’t try to make both ends look the same — that’s usually how people end up with the cable backwards.
For the kernel update on the Pi 5: yes, just do a regular sudo apt update && sudo apt full-upgrade and you should get a kernel >= 6.12.25 if you’re on the latest Raspberry Pi OS. After that, confirm with:
dtoverlay=ov9281
in your config.txt (no suffix), reboot, and check dmesg again.
Here are the platform-specific setup guides you’ll want to follow:
Raspberry Pi: Pivariety Camera Quick Start Guide (the native camera path for global shutter models)
Jetson: Jetvariety Camera Quick Start Guide — follow the driver install section carefully
I’ve sent you the direct documentation links via private message. The setup procedure is quite different between the two platforms, but the cable type (Type B) is the same.
Alright, I’ve shelved the Pi 5 for a moment and moved over to the Jetson Orin Nano since that’s my primary platform for this project.
Setup:
Jetson Orin Nano
22-pin to 22-pin Type B cable
Connected to CAM1 port
Followed the Jetvariety Quick Start Guide for driver installation
Ran the driver install script from the guide, completed without obvious errors, rebooted.
But… no /dev/video* devices show up at all. I’ve pasted the full install script log to Pastebin and I’m on the latest Jetpack I could get. Here’s the log:
I’ve also attached a photo of the current Jetson setup. Am I missing something obvious?
Thanks for the install log — I’ve looked through it and the driver installation itself seems to have completed correctly. The script ran through all the expected steps without errors, and your Jetpack version looks fine.
Given that the driver compiled and installed cleanly but you’re getting no /dev/video* nodes at all after reboot, this almost always points to a physical connection issue rather than a software problem. The kernel simply doesn’t see the camera on the I2C bus, so it never creates the video device.
Looking at your setup photo — can you double-check the orientation of the cable at the camera end specifically? On the Type B cable, the contacts flip between ends. The most common issue we see is the cable being inserted backwards at the camera side. The blue plastic tab should be on a specific side relative to the camera board — if it’s flipped, the pins won’t line up correctly and the Jetson won’t detect anything on CAM1.
Could you try flipping the cable at the camera end and rebooting?
Well, that’s embarrassing. You were absolutely right — the cable was connected backwards at the camera end. I flipped it around, rebooted, and now /dev/video0 is there and working.
Attached a photo after the fix. Camera is detected and I’m getting frames on the Jetson Orin Nano now.
I’ll come back and test the Raspberry Pi 5 later once I’ve got some time to update the kernel and apply the config changes you suggested. For now at least I’ve confirmed the hardware is good and the module works. Thanks for the help!
Glad that sorted it! The backwards cable at the camera end is honestly the number one issue we see with these modules — you’re definitely not the first and won’t be the last.
When you get around to testing the Pi 5, the checklist is:
Kernel >= 6.12.25 (uname -r to confirm)
Type B cable (same as you’re using now on the Jetson)
/boot/config.txt with dtoverlay=ov9281 (no suffix)
camera_auto_detect=0
Once those are in place, rpicam-hello --list-cameras should pick it up. Feel free to update this thread when you get around to it — curious to hear if it works smoothly on the Pi 5 side too.