Problems using previewOpencv.py using the 4 Channel Multi Camera Adapter Board with the 12 MP RaspberryPi HQ Camera (IMX477)

  1. Where did you get the camera module(s)?

Amazon

  1. Model number of the product(s)?

Arducam Multi Camera Adapter V 2.2 (UC-475 Rev. C) and Raspberry Pi High Quality Camera (IMX477 Sensor)

  1. What hardware/platform were you working on?

Raspberry Pi 4 Model B

  1. Instructions you have followed. (link/manual/etc.)
  1. Problems you were having?

When running previewOpencv.py no preview image is displayed. Instead the message “Error: write failed” is displayed. Displaying the camera image using the C++ version (multiCamOpenCV.cpp) works. The Multi Camera Board is connected properly to the Raspberry Pi and I have one camera connected to port A.

  1. The dmesg log from your hardware?

  2. Troubleshooting attempts you’ve made?

I have determined that line 39 in AdapterBoard.py (https://github.com/ArduCAM/RaspberryPi/blob/master/Multi_Camera_Adapter/Multi_Adapter_Board_4Channel/Multi_Camera_Adapter_V2.2_python/AdapterBoard.py) produces the error.

  1. What help do you need?
    Any hints on how to read images from the camera using Python would be highly appreciated.

Here is the dmesg output when trying to run previewOpencv.py. I have only one camera module connected to the Multi Camera Adapter Board ( Camera A)

[Mi Okt 6 10:14:19 2021] bcm2835-v4l2-0: Failed enabling camera, ret -2
[Mi Okt 6 10:14:19 2021] bcm2835-v4l2-0: Failed to enable camera
[Mi Okt 6 10:14:19 2021] ------------[ cut here ]------------
[Mi Okt 6 10:14:19 2021] WARNING: CPU: 1 PID: 989 at drivers/media/common/videobuf2/videobuf2-core.c:1548 vb2_start_streaming+0x108/0x178 [videobuf2_common]
[Mi Okt 6 10:14:19 2021] Modules linked in: cmac rfcomm bnep hci_uart btbcm bluetooth ecdh_generic ecc fuse squashfs 8021q garp stp llc brcmfmac brcmutil sha256_generic cfg80211 rfkill v3d gpu_sched vc4 raspberrypi_hwmon bcm2835_codec(C) i2c_mux_pinctrl i2c_mux v4l2_mem2mem bcm2835_isp(C) videobuf2_dma_contig bcm2835_v4l2(C) cec bcm2835_mmal_vchiq(C) videobuf2_vmalloc videobuf2_memops videobuf2_v4l2 videobuf2_common drm_kms_helper videodev mc vc_sm_cma(C) snd_bcm2835(C) i2c_bcm2835 drm drm_panel_orientation_quirks snd_soc_core rpivid_mem snd_compress snd_pcm_dmaengine snd_pcm snd_timer snd syscopyarea sysfillrect sysimgblt nvmem_rmem fb_sys_fops backlight uio_pdrv_genirq uio i2c_dev ip_tables x_tables ipv6
[Mi Okt 6 10:14:19 2021] CPU: 1 PID: 989 Comm: python Tainted: G C 5.10.63-v7l+ #1457
[Mi Okt 6 10:14:19 2021] Hardware name: BCM2711
[Mi Okt 6 10:14:19 2021] Backtrace:
[Mi Okt 6 10:14:19 2021] [] (dump_backtrace) from [] (show_stack+0x20/0x24)
[Mi Okt 6 10:14:19 2021] r7:ffffffff r6:00000000 r5:60000013 r4:c12e6b3c
[Mi Okt 6 10:14:19 2021] [] (show_stack) from [] (dump_stack+0xcc/0xf8)
[Mi Okt 6 10:14:19 2021] [] (dump_stack) from [] (__warn+0xfc/0x114)
[Mi Okt 6 10:14:19 2021] r10:bf2ff218 r9:00000009 r8:bf22a1ec r7:0000060c r6:00000009 r5:bf22a1ec
[Mi Okt 6 10:14:19 2021] r4:bf22ef90 r3:c1205094
[Mi Okt 6 10:14:19 2021] [] (__warn) from [] (warn_slowpath_fmt+0x70/0xd8)
[Mi Okt 6 10:14:19 2021] r7:0000060c r6:bf22ef90 r5:c1205048 r4:00000000
[Mi Okt 6 10:14:19 2021] [] (warn_slowpath_fmt) from [] (vb2_start_streaming+0x108/0x178 [videobuf2_common])
[Mi Okt 6 10:14:19 2021] r9:bf250068 r8:c32d2b98 r7:00000001 r6:c32d2d40 r5:c32d2e40 r4:ffffffea
[Mi Okt 6 10:14:19 2021] [] (vb2_start_streaming [videobuf2_common]) from [] (vb2_core_streamon+0x90/0x180 [videobuf2_common])
[Mi Okt 6 10:14:19 2021] r7:00000001 r6:c1205048 r5:c2e08180 r4:c32d2d40
[Mi Okt 6 10:14:19 2021] [] (vb2_core_streamon [videobuf2_common]) from [] (vb2_streamon+0x24/0x64 [videobuf2_v4l2])
[Mi Okt 6 10:14:19 2021] r5:c2e08180 r4:00000001
[Mi Okt 6 10:14:19 2021] [] (vb2_streamon [videobuf2_v4l2]) from [] (vb2_ioctl_streamon+0x4c/0x50 [videobuf2_v4l2])
[Mi Okt 6 10:14:19 2021] [] (vb2_ioctl_streamon [videobuf2_v4l2]) from [] (v4l_streamon+0x2c/0x30 [videodev])
[Mi Okt 6 10:14:19 2021] r5:40045612 r4:bf2e6084
[Mi Okt 6 10:14:19 2021] [] (v4l_streamon [videodev]) from [] (__video_do_ioctl+0x234/0x460 [videodev])
[Mi Okt 6 10:14:19 2021] r5:40045612 r4:c32d2858
[Mi Okt 6 10:14:19 2021] [] (__video_do_ioctl [videodev]) from [] (video_usercopy+0x138/0x5f0 [videodev])
[Mi Okt 6 10:14:19 2021] r10:00000000 r9:c546fe3c r8:00000000 r7:c1205048 r6:00000000 r5:40045612
[Mi Okt 6 10:14:19 2021] r4:40045612
[Mi Okt 6 10:14:19 2021] [] (video_usercopy [videodev]) from [] (video_ioctl2+0x20/0x24 [videodev])
[Mi Okt 6 10:14:19 2021] r10:00000003 r9:c546e000 r8:00000000 r7:c2e08180 r6:c2e08180 r5:c1205048
[Mi Okt 6 10:14:19 2021] r4:bf255ff0
[Mi Okt 6 10:14:19 2021] [] (video_ioctl2 [videodev]) from [] (v4l2_ioctl+0x4c/0x60 [videodev])
[Mi Okt 6 10:14:19 2021] [] (v4l2_ioctl [videodev]) from [] (sys_ioctl+0x1d4/0x8ec)
[Mi Okt 6 10:14:19 2021] r5:c1205048 r4:40045612
[Mi Okt 6 10:14:19 2021] [] (sys_ioctl) from [] (ret_fast_syscall+0x0/0x28)
[Mi Okt 6 10:14:19 2021] Exception stack(0xc546ffa8 to 0xc546fff0)
[Mi Okt 6 10:14:19 2021] ffa0: b6f1f010 01819ea8 00000003 40045612 0181a448 00000000
[Mi Okt 6 10:14:19 2021] ffc0: b6f1f010 01819ea8 00000000 00000036 0155b628 c044560f b6539000 beda7a78
[Mi Okt 6 10:14:19 2021] ffe0: b6539bf0 beda75a4 b5d41a98 b6cba50c
[Mi Okt 6 10:14:19 2021] r10:00000036 r9:c546e000 r8:c0200204 r7:00000036 r6:00000000 r5:01819ea8
[Mi Okt 6 10:14:19 2021] r4:b6f1f010
[Mi Okt 6 10:14:19 2021] —[ end trace 4cc37ef73f243be9 ]—
[Mi Okt 6 10:14:20 2021] i2c-bcm2835 fe205000.i2c: i2c transfer timed out
[Mi Okt 6 10:14:21 2021] bcm2835-v4l2-0: Failed enabling camera, ret -2
[Mi Okt 6 10:14:21 2021] bcm2835-v4l2-0: Failed to enable camera
[Mi Okt 6 10:14:21 2021] ------------[ cut here ]------------
[Mi Okt 6 10:14:21 2021] WARNING: CPU: 1 PID: 989 at drivers/media/common/videobuf2/videobuf2-core.c:1548 vb2_start_streaming+0x108/0x178 [videobuf2_common]
[Mi Okt 6 10:14:21 2021] Modules linked in: cmac rfcomm bnep hci_uart btbcm bluetooth ecdh_generic ecc fuse squashfs 8021q garp stp llc brcmfmac brcmutil sha256_generic cfg80211 rfkill v3d gpu_sched vc4 raspberrypi_hwmon bcm2835_codec(C) i2c_mux_pinctrl i2c_mux v4l2_mem2mem bcm2835_isp(C) videobuf2_dma_contig bcm2835_v4l2(C) cec bcm2835_mmal_vchiq(C) videobuf2_vmalloc videobuf2_memops videobuf2_v4l2 videobuf2_common drm_kms_helper videodev mc vc_sm_cma(C) snd_bcm2835(C) i2c_bcm2835 drm drm_panel_orientation_quirks snd_soc_core rpivid_mem snd_compress snd_pcm_dmaengine snd_pcm snd_timer snd syscopyarea sysfillrect sysimgblt nvmem_rmem fb_sys_fops backlight uio_pdrv_genirq uio i2c_dev ip_tables x_tables ipv6
[Mi Okt 6 10:14:21 2021] CPU: 1 PID: 989 Comm: python Tainted: G WC 5.10.63-v7l+ #1457
[Mi Okt 6 10:14:21 2021] Hardware name: BCM2711
[Mi Okt 6 10:14:21 2021] Backtrace:
[Mi Okt 6 10:14:21 2021] [] (dump_backtrace) from [] (show_stack+0x20/0x24)
[Mi Okt 6 10:14:21 2021] r7:ffffffff r6:00000000 r5:60000013 r4:c12e6b3c
[Mi Okt 6 10:14:21 2021] [] (show_stack) from [] (dump_stack+0xcc/0xf8)
[Mi Okt 6 10:14:21 2021] [] (dump_stack) from [] (__warn+0xfc/0x114)
[Mi Okt 6 10:14:21 2021] r10:bf2ff218 r9:00000009 r8:bf22a1ec r7:0000060c r6:00000009 r5:bf22a1ec
[Mi Okt 6 10:14:21 2021] r4:bf22ef90 r3:c1205094
[Mi Okt 6 10:14:21 2021] [] (__warn) from [] (warn_slowpath_fmt+0x70/0xd8)
[Mi Okt 6 10:14:21 2021] r7:0000060c r6:bf22ef90 r5:c1205048 r4:00000000
[Mi Okt 6 10:14:21 2021] [] (warn_slowpath_fmt) from [] (vb2_start_streaming+0x108/0x178 [videobuf2_common])
[Mi Okt 6 10:14:21 2021] r9:bf250068 r8:c32d2b98 r7:00000001 r6:c32d2d40 r5:c32d2e40 r4:ffffffea
[Mi Okt 6 10:14:21 2021] [] (vb2_start_streaming [videobuf2_common]) from [] (vb2_core_streamon+0x90/0x180 [videobuf2_common])
[Mi Okt 6 10:14:21 2021] r7:00000001 r6:c1205048 r5:c2e08180 r4:c32d2d40
[Mi Okt 6 10:14:21 2021] [] (vb2_core_streamon [videobuf2_common]) from [] (vb2_streamon+0x24/0x64 [videobuf2_v4l2])
[Mi Okt 6 10:14:21 2021] r5:c2e08180 r4:00000001
[Mi Okt 6 10:14:21 2021] [] (vb2_streamon [videobuf2_v4l2]) from [] (vb2_ioctl_streamon+0x4c/0x50 [videobuf2_v4l2])
[Mi Okt 6 10:14:21 2021] [] (vb2_ioctl_streamon [videobuf2_v4l2]) from [] (v4l_streamon+0x2c/0x30 [videodev])
[Mi Okt 6 10:14:21 2021] r5:40045612 r4:bf2e6084
[Mi Okt 6 10:14:21 2021] [] (v4l_streamon [videodev]) from [] (__video_do_ioctl+0x234/0x460 [videodev])
[Mi Okt 6 10:14:21 2021] r5:40045612 r4:c32d2858
[Mi Okt 6 10:14:21 2021] [] (__video_do_ioctl [videodev]) from [] (video_usercopy+0x138/0x5f0 [videodev])
[Mi Okt 6 10:14:21 2021] r10:00000000 r9:c546fe3c r8:00000000 r7:c1205048 r6:00000000 r5:40045612
[Mi Okt 6 10:14:21 2021] r4:40045612
[Mi Okt 6 10:14:21 2021] [] (video_usercopy [videodev]) from [] (video_ioctl2+0x20/0x24 [videodev])
[Mi Okt 6 10:14:21 2021] r10:00000003 r9:c546e000 r8:00000000 r7:c2e08180 r6:c2e08180 r5:c1205048
[Mi Okt 6 10:14:21 2021] r4:bf255ff0
[Mi Okt 6 10:14:21 2021] [] (video_ioctl2 [videodev]) from [] (v4l2_ioctl+0x4c/0x60 [videodev])
[Mi Okt 6 10:14:21 2021] [] (v4l2_ioctl [videodev]) from [] (sys_ioctl+0x1d4/0x8ec)
[Mi Okt 6 10:14:21 2021] r5:c1205048 r4:40045612
[Mi Okt 6 10:14:21 2021] [] (sys_ioctl) from [] (ret_fast_syscall+0x0/0x28)
[Mi Okt 6 10:14:21 2021] Exception stack(0xc546ffa8 to 0xc546fff0)
[Mi Okt 6 10:14:21 2021] ffa0: b6f1f010 01819ea8 00000003 40045612 0181a448 00000000
[Mi Okt 6 10:14:21 2021] ffc0: b6f1f010 01819ea8 00000000 00000036 0155b628 c044560f b6539000 beda7a78
[Mi Okt 6 10:14:21 2021] ffe0: b6539bf0 beda75a4 b5d41a98 b6cba50c
[Mi Okt 6 10:14:21 2021] r10:00000036 r9:c546e000 r8:c0200204 r7:00000036 r6:00000000 r5:01819ea8
[Mi Okt 6 10:14:21 2021] r4:b6f1f010
[Mi Okt 6 10:14:21 2021] —[ end trace 4cc37ef73f243bea ]—
[Mi Okt 6 10:14:22 2021] i2c-bcm2835 fe205000.i2c: i2c transfer timed out
[Mi Okt 6 10:14:23 2021] bcm2835-v4l2-0: Failed enabling camera, ret -2
[Mi Okt 6 10:14:23 2021] bcm2835-v4l2-0: Failed to enable camera
[Mi Okt 6 10:14:23 2021] ------------[ cut here ]------------
[Mi Okt 6 10:14:23 2021] WARNING: CPU: 1 PID: 989 at drivers/media/common/videobuf2/videobuf2-core.c:1548 vb2_start_streaming+0x108/0x178 [videobuf2_common]
[Mi Okt 6 10:14:23 2021] Modules linked in: cmac rfcomm bnep hci_uart btbcm bluetooth ecdh_generic ecc fuse squashfs 8021q garp stp llc brcmfmac brcmutil sha256_generic cfg80211 rfkill v3d gpu_sched vc4 raspberrypi_hwmon bcm2835_codec(C) i2c_mux_pinctrl i2c_mux v4l2_mem2mem bcm2835_isp(C) videobuf2_dma_contig bcm2835_v4l2(C) cec bcm2835_mmal_vchiq(C) videobuf2_vmalloc videobuf2_memops videobuf2_v4l2 videobuf2_common drm_kms_helper videodev mc vc_sm_cma(C) snd_bcm2835(C) i2c_bcm2835 drm drm_panel_orientation_quirks snd_soc_core rpivid_mem snd_compress snd_pcm_dmaengine snd_pcm snd_timer snd syscopyarea sysfillrect sysimgblt nvmem_rmem fb_sys_fops backlight uio_pdrv_genirq uio i2c_dev ip_tables x_tables ipv6
[Mi Okt 6 10:14:23 2021] CPU: 1 PID: 989 Comm: python Tainted: G WC 5.10.63-v7l+ #1457
[Mi Okt 6 10:14:23 2021] Hardware name: BCM2711
[Mi Okt 6 10:14:23 2021] Backtrace:
[Mi Okt 6 10:14:23 2021] [] (dump_backtrace) from [] (show_stack+0x20/0x24)
[Mi Okt 6 10:14:23 2021] r7:ffffffff r6:00000000 r5:60000013 r4:c12e6b3c
[Mi Okt 6 10:14:23 2021] [] (show_stack) from [] (dump_stack+0xcc/0xf8)
[Mi Okt 6 10:14:23 2021] [] (dump_stack) from [] (__warn+0xfc/0x114)
[Mi Okt 6 10:14:23 2021] r10:bf2ff218 r9:00000009 r8:bf22a1ec r7:0000060c r6:00000009 r5:bf22a1ec
[Mi Okt 6 10:14:23 2021] r4:bf22ef90 r3:c1205094
[Mi Okt 6 10:14:23 2021] [] (__warn) from [] (warn_slowpath_fmt+0x70/0xd8)
[Mi Okt 6 10:14:23 2021] r7:0000060c r6:bf22ef90 r5:c1205048 r4:00000000
[Mi Okt 6 10:14:23 2021] [] (warn_slowpath_fmt) from [] (vb2_start_streaming+0x108/0x178 [videobuf2_common])
[Mi Okt 6 10:14:23 2021] r9:bf250068 r8:c32d2b98 r7:00000001 r6:c32d2d40 r5:c32d2e40 r4:ffffffea
[Mi Okt 6 10:14:23 2021] [] (vb2_start_streaming [videobuf2_common]) from [] (vb2_core_streamon+0x90/0x180 [videobuf2_common])
[Mi Okt 6 10:14:23 2021] r7:00000001 r6:c1205048 r5:c2e08180 r4:c32d2d40
[Mi Okt 6 10:14:23 2021] [] (vb2_core_streamon [videobuf2_common]) from [] (vb2_streamon+0x24/0x64 [videobuf2_v4l2])
[Mi Okt 6 10:14:23 2021] r5:c2e08180 r4:00000001
[Mi Okt 6 10:14:23 2021] [] (vb2_streamon [videobuf2_v4l2]) from [] (vb2_ioctl_streamon+0x4c/0x50 [videobuf2_v4l2])
[Mi Okt 6 10:14:23 2021] [] (vb2_ioctl_streamon [videobuf2_v4l2]) from [] (v4l_streamon+0x2c/0x30 [videodev])
[Mi Okt 6 10:14:23 2021] r5:40045612 r4:bf2e6084
[Mi Okt 6 10:14:23 2021] [] (v4l_streamon [videodev]) from [] (__video_do_ioctl+0x234/0x460 [videodev])
[Mi Okt 6 10:14:23 2021] r5:40045612 r4:c32d2858
[Mi Okt 6 10:14:23 2021] [] (__video_do_ioctl [videodev]) from [] (video_usercopy+0x138/0x5f0 [videodev])
[Mi Okt 6 10:14:23 2021] r10:00000000 r9:c546fe3c r8:00000000 r7:c1205048 r6:00000000 r5:40045612
[Mi Okt 6 10:14:23 2021] r4:40045612
[Mi Okt 6 10:14:23 2021] [] (video_usercopy [videodev]) from [] (video_ioctl2+0x20/0x24 [videodev])
[Mi Okt 6 10:14:23 2021] r10:00000003 r9:c546e000 r8:00000000 r7:c2e08180 r6:c2e08180 r5:c1205048
[Mi Okt 6 10:14:23 2021] r4:bf255ff0
[Mi Okt 6 10:14:23 2021] [] (video_ioctl2 [videodev]) from [] (v4l2_ioctl+0x4c/0x60 [videodev])
[Mi Okt 6 10:14:23 2021] [] (v4l2_ioctl [videodev]) from [] (sys_ioctl+0x1d4/0x8ec)
[Mi Okt 6 10:14:23 2021] r5:c1205048 r4:40045612
[Mi Okt 6 10:14:23 2021] [] (sys_ioctl) from [] (ret_fast_syscall+0x0/0x28)
[Mi Okt 6 10:14:23 2021] Exception stack(0xc546ffa8 to 0xc546fff0)
[Mi Okt 6 10:14:23 2021] ffa0: b6f1f010 01819ea8 00000003 40045612 0181a448 00000000
[Mi Okt 6 10:14:23 2021] ffc0: b6f1f010 01819ea8 00000000 00000036 0155b628 c044560f b6539000 beda7a78
[Mi Okt 6 10:14:23 2021] ffe0: b6539bf0 beda75a4 b5d41a98 b6cba50c
[Mi Okt 6 10:14:23 2021] r10:00000036 r9:c546e000 r8:c0200204 r7:00000036 r6:00000000 r5:01819ea8
[Mi Okt 6 10:14:23 2021] r4:b6f1f010
[Mi Okt 6 10:14:23 2021] —[ end trace 4cc37ef73f243beb ]—

Hello, have you enabled I2C communication? Can you send me the connection diagram of the camera?

Yes I have enabled I2C communication. I have a Arducam Multi Camera Adapter Board V 2.2 connected to the Pi and two Raspberry Pi HQ cameras conncted to ports A and C of the adapter board (see attached image). The sample program written in C++ works fine with the setup. I am able to see live images of the two connected cams. However, when I try to use the same program written in Python, it fails at the I2C commands. I was able to capture still images by changing the y-flag of the command “i2cset” to 1:

i2c_cmd":"i2cset -y 1 0x70 0x00 0x04

for camera channel A. Nonetheless, I am switching to implementing my project in C++ since the switching of channels seems to be very slow using Python.

1 Like