two ov9281 cameras not working on RPi4b

1.Which seller did you purchase the product(s) from?
RobotShop
2.The Model number of the product(s) you have purchased?
2x ov9281
3.Which Platform are you using the product(s) on?
Raspberry Pi 4b 4GB - Raspibian Buster 32 bit - Kernel 5.10
4.Which instruction are you following?
https://www.arducam.com/docs/cameras-for-raspberry-pi/migrated/ov9281-1mp-global-shutter-raspberrypi-camera/#13-1-check-your-firmware-support
5.Has your product ever worked properly?
Im trying to get it to work with V4l2 but so far that has never worked.
6.What problems are you experiencing?
Hello!

I have just tried my two ov9281’s but I don’t seem to be able to get any images of them. I’m trying to use them with V4L2 as I have previous camera code that uses that (which works for Picam2) and now I want to run it with my Arducam.

I’m expecting to get some output from this command:

v4l2-ctl --stream-mmap --stream-count=-1 -d /dev/video0 --stream-to=/dev/null

but I get nothing at all. It just sits, does not return to the prompt, but there’s no output in the terminal.

I have two of the same camera and they both do the same thing.

 

Here’s some additional hints,

> uname -a
Linux sensitpi 5.10.17-v7l+ #1403 SMP Mon Feb 22 11:33:35 GMT 2021 armv7l GNU/Linux

 

> ls /boot/overlays/ov9281.dtbo

/boot/overlays/ov9281.dtbo

 

> v4l2-ctl -d /dev/video0 --list-formats

ioctl: VIDIOC_ENUM_FMT
Type: Video Capture

[0]: ‘Y10P’ (10-bit Greyscale (MIPI Packed))
[1]: 'Y10 ’ (10-bit Greyscale)
[2]: ‘GREY’ (8-bit Greyscale)

 

> vcgencmd get_camera

supported=1 detected=0

 

> modinfo ov9281

filename: /lib/modules/5.10.17-v7l+/kernel/drivers/media/i2c/ov9281.ko
license: GPL v2
description: OmniVision ov9281 sensor driver
srcversion: D2FE2B5C96C7451BC7EFDC9
alias: of:NTCovti,ov9281C*
alias: of:NTCovti,ov9281
depends: videodev,v4l2-fwnode,mc
intree: Y
name: ov9281
vermagic: 5.10.17-v7l+ SMP mod_unload modversions ARMv7 p2v8

 

> sudo tee /sys/class/video4linux/video0/dev_debug <<< 0x1f >/dev/null
> sudo dmesg
[ 81.300990] unicam fe801000.csi: ================= START STATUS =================
[ 81.301010] unicam fe801000.csi: -----Receiver status-----
[ 81.301028] unicam fe801000.csi: V4L2 width/height: 1280x800
[ 81.301045] unicam fe801000.csi: Mediabus format: 0000200a
[ 81.301061] unicam fe801000.csi: V4L2 format: 50303159
[ 81.301076] unicam fe801000.csi: Unpacking/packing: 0 / 0
[ 81.301091] unicam fe801000.csi: ----Live data----
[ 81.301106] unicam fe801000.csi: Programmed stride: 0
[ 81.301122] unicam fe801000.csi: Detected resolution: 0x0
[ 81.301137] unicam fe801000.csi: Write pointer: 00000000
[ 81.301152] unicam fe801000.csi: ================== END STATUS ==================

 

Are you able to tell what’s wrong here?

Or do you have any suggestions for what to check next?

 

Regards

Fred

 

 
7.What attempts at troubleshooting have you already made?

8.How would you like us to help you?

I also just tested the program ‘yavta’ it didn’t create a good .h264 file and this was the terminal output:

 

./yavta --capture=1000 -n 3 --encode-to=file.h264 -f UYVY -m -T /dev/video0
We’re encoding to file.h264
Device /dev/video0 opened.
Device unicam’ onplatform:fe801000.csi’ (driver ‘unicam’) is a video capture (without mplanes) device.
stride is 0
stride is now 1280
Video format set: Y10P (50303159) 640x400 (stride 1280) field none buffer size 512000
Video format: Y10P (50303159) 640x400 (stride 1280) field none buffer size 512000
Unable to get frame rate: Inappropriate ioctl for device (25).
vc.ril.isp:in:0(Y10P)(0x166a120)type: video, fourcc: Y10P bitrate: 0, framed: 0 extra data: 0, (nil) width: 640, height: 400, (0,0,640,400) pixel aspect ratio: 0/0, frame rate: 0/0
buffers num: 3(opt 1, min 1), size: 320000(opt 320000, min: 320000), align: 0
stride is 800
stride is now 800
Video format set: Y10P (50303159) 640x400 (stride 800) field none buffer size 320000
Video format: Y10P (50303159) 640x400 (stride 800) field none buffer size 320000
Created pool of length 3, size 0
Enable encoder…
Create pool of 3 buffers of size 0 for render
Create pool of 3 buffers of size 0 for encode ip
Create pool of 3 buffers of size 384000 for encode/render
Writing data to file.h264
Create pool of 8 buffers of size 262144
Sent buffer 0x1674a28
Sent buffer 0x1674c00
Sent buffer 0x1674dd8
Sent buffer 0x1674fb0
Sent buffer 0x1675188
Sent buffer 0x1675360
Sent buffer 0x1675538
Sent buffer 0x1675710
3 buffers requested, V4L2 returned 3 bufs.
length: 320000 offset: 0 timestamp type/source: mono/EoF
Buffer 0/0 mapped at address 0xb255c000.
Importing DMABUF 25 into VCSM…
…done. vcsm_handle 27
Exported buffer 0 to dmabuf 25, vcsm handle 27
Linking V4L2 buffer index 0 ptr 0x1676430 to MMAL header 0x1671190. mmal->data 0xC0000014
length: 320000 offset: 323584 timestamp type/source: mono/EoF
Buffer 1/0 mapped at address 0xb23b1000.
Importing DMABUF 27 into VCSM…
…done. vcsm_handle 29
Exported buffer 1 to dmabuf 27, vcsm handle 29
Linking V4L2 buffer index 1 ptr 0x16764a0 to MMAL header 0x1671368. mmal->data 0xC0000015
length: 320000 offset: 647168 timestamp type/source: mono/EoF
Buffer 2/0 mapped at address 0xb2313000.
Importing DMABUF 29 into VCSM…
…done. vcsm_handle 31
Exported buffer 2 to dmabuf 29, vcsm handle 31
Linking V4L2 buffer index 2 ptr 0x1676510 to MMAL header 0x1671540. mmal->data 0xC0000016
select timeout

Dear sir,

Thanks for your business.Don’t worry and I will try my best to help you.

It seems the hardware setup is abnormal. Have you tested your camera using our MIPI_Camera library?

About a year ago when I was testing the same cameras (or the one I had at the time) then it was working with your old mipi library. But I haven’t tested that this time around since I’d like it to work with the v4l2 kernel drivers.

I can try it again though if you think that could solve the v4l2 problem.

In what sense do you mean that the hardware setup is abnormal?

Dear Sir,

Don’t worry. We have found that some versions of the kernel cannot run arducam 9281. We have reported to PI that the latest kernel version should be supported. Please download the latest firmare image file to test.

Feel free to let me know if you need more help.

 

Thanks for your reply!

Just to clarify, when you say the ‘latest firmware’ are you talking about the Raspberry kernel drivers? Or are you referring to some Arducam driver?

 

 

The Raspberry engineer who’s doing the kernel driver is saying that they aren’t able to make the single CSI2 data lane version of the camera module work, only the module version that has two of those lanes connected is working.

I got sent by RobotShop two of the UC-580 with the one lane and they don’t work with the kernel driver.

I would suggest you update the Arducam driver installation page with this information so that people know why it might not be working.

Also I’d recommend making it clear to buyers that there’s are these two versions of the model and that one of them doesn’t work with the Linux driver.

I don’t think RobotShop is even showing that there’s two different ones you only buy Arducam ov9281 and then its a lucky(or unlucky) dip.