Arducam OV9281 not working with RPI 4B

Hello everybody,

I am trying to use an Arducam OV9281 with a Raspberry 4B with Raspberry OS 32 bits

The arducam is:

I followed the steps here:

But apparently there is a problem with OV9281 at startup, see boot log:

4.850865] bcm2835-isp bcm2835-isp: Register output node 0 with media controller
[ 4.850902] bcm2835-isp bcm2835-isp: Register capture node 1 with media controller
[ 4.850925] bcm2835-isp bcm2835-isp: Register capture node 2 with media controller
[ 4.850945] bcm2835-isp bcm2835-isp: Register capture node 3 with media controller
[ 4.852424] bcm2835-isp bcm2835-isp: Loaded V4L2 bcm2835-isp
[ 4.884897] brcmfmac: F1 signature read @0x18000000=0x15264345
[ 4.896537] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43455-sdio for chip BCM4345/6
[ 4.897499] usbcore: registered new interface driver brcmfmac
[ 4.919311] brcmfmac mmc1:0001:1: Direct firmware load for brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.txt failed with error -2
[ 5.020061] vc4-drm gpu: bound fe600000.firmwarekms (ops vc4_fkms_ops [vc4])
[ 5.020085] checking generic (3e7fe000 3fc000) vs hw (0 ffffffffffffffff)
[ 5.020106] fb0: switching to vc4drmfb from simple
[ 5.020775] Console: switching to colour dummy device 80x30
[ 5.021006] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[ 5.021020] [drm] No driver support for vblank timestamp query.
[ 5.021032] [drm] Setting vblank_disable_immediate to false because get_vblank_timestamp == NULL
[ 5.021639] [drm] Initialized vc4 0.0.0 20140616 for gpu on minor 1
[ 5.060695] Console: switching to colour frame buffer device 170x48
[ 5.060742] vc4-drm gpu: fb0: vc4drmfb frame buffer device
[ 5.164436] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43455-sdio for chip BCM4345/6
[ 5.180631] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM4345/6 wl0: Mar 23 2020 02:19:54 version 7.45.206 (r725000 CY) FWID 01-88ee44ea
[ 5.633651] ov9281 10-0060: Unexpected sensor id(b45c1400), ret(-5)
[ 7.298060] random: crng init done
[ 7.298077] random: 7 urandom warning(s) missed due to ratelimiting
[ 7.445940] uart-pl011 fe201000.serial: no DMA platform data
[ 7.608326] 8021q: 802.1Q VLAN Support v1.8
[ 7.881875] brcmfmac: brcmf_cfg80211_set_power_mgmt: power save enabled
[ 8.046273] Adding 2097148k swap on /var/swap. Priority:-2 extents:3 across:2457596k SSFS
[ 8.118602] bcmgenet: Skipping UMAC reset
[ 8.120198] bcmgenet fd580000.ethernet: configuring instance for external RGMII
[ 8.120404] bcmgenet fd580000.ethernet eth0: Link is Down
[ 9.793677] broken atomic modeset userspace detected, disabling atomic
[ 12.312215] fuse: init (API version 7.31)
[ 12.316744] bcmgenet fd580000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx
[ 12.316772] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[ 14.134337] Bluetooth: Core ver 2.22
[ 14.134378] NET: Registered protocol family 31
[ 14.134384] Bluetooth: HCI device and connection manager initialized
[ 14.134398] Bluetooth: HCI socket layer initialized
[ 14.134406] Bluetooth: L2CAP socket layer initialized
[ 14.134421] Bluetooth: SCO socket layer initialized
[ 14.142894] Bluetooth: HCI UART driver ver 2.3
[ 14.142903] Bluetooth: HCI UART protocol H4 registered
[ 14.142960] Bluetooth: HCI UART protocol Three-wire (H5) registered
[ 14.146573] Bluetooth: HCI UART protocol Broadcom registered
[ 14.317987] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[ 14.317995] Bluetooth: BNEP filters: protocol multicast
[ 14.318008] Bluetooth: BNEP socket layer initialized
[ 14.320263] ICMPv6: process `dhcpcd’ is using deprecated sysctl (syscall) net.ipv6.neigh.eth0.retrans_time - use net.ipv6.neigh.eth0.retrans_time_ms instead
[ 14.367427] Bluetooth: RFCOMM TTY layer initialized
[ 14.367445] Bluetooth: RFCOMM socket layer initialized
[ 14.367462] Bluetooth: RFCOMM ver 1.11
[ 31.836326] ov9281_dvdd: disabling
[ 31.836346] ov9281_dovdd: disabling
[ 31.836369] ov9281_avdd: disabling



Any advise please






Sorry to hear that. Don’t worry and I will try my best to help you.

Let’s solve your issue step by step.

Firstly, have you added dtoverlay=ov9281 to /boot/config.txt?

Secondly. After reboot, can you see the video0 device node using ls /dev/video0 command?




Thanks for replying. Yes I tried all that, I can not see /dev/video0.

I also tested with the instructions here: and I am able to see a preview and adjust exposure time by using opencvGui.

The problem now is that I am not sure the configuration through opencvGui is correct (or maybe not all parameters are accessible through the GUI) because I got too much motion blur. I was thinking about setting up the parameters with an I2C read/write tool but I don’t know very well how to choose the values or the register addresses. Do you have any recommended set of parameter values? I would like to use this camera for a mobile robot to focus objets at more than 1 meter on outdoor daylight conditions, I dont need too much fps maybe 40 or 50. As robot will be mobile I am trying to minimize motion blur.






About the exposure time adjustment, you can use arducamstill tool and use keyboard to adjust.


I just got why it does not work, it seems that driver does not support Raspberry Pi 4 8G RAM

Any plan to support this board?




Have you use the latest driver to try ?

Hello @bin,


Could you please tell me which one? Where do I get it?





Please open the /boot/config.txt file and comment the “dtoverlay=0x9281”. Then reboot.

Downloading the latest library here

Then following the user guide

Let me know if you need more help.

I have the exact same problem. UC-599 trying to get the ov9281 to work with CM4 IO Board. Same error “unexpected sensor id”. What to do?

$ grep ov92 /boot/config.txt

$ dmesg | grep ov928
[ 5.934206] ov9281 10-0060: Unexpected sensor id(1d9bfc00), ret(-5)
[ 31.836259] ov9281_dvdd: disabling
[ 31.836270] ov9281_dovdd: disabling
[ 31.836280] ov9281_avdd: disabling

$ uname -a
Linux raspberrypi 5.4.79-v7l+ #1373 SMP Mon Nov 23 13:27:40 GMT 2020 armv7l GNU/Linux

Please attach me your hardware connection diagram.