Using imx519 as a WebCam

  1. Where did you get the camera module(s)?
    16MP High-Res camera from Kickstarter campaign

  2. Model number of the product(s)?
    B0386

  3. What hardware/platform were you working on?
    Raspberry Pi Zero 2 W

  4. Instructions you have followed.
    Followed the instructions from Plug-and-play Raspberry Pi USB webcam - Raspberry Pi
    The only difference is using the 64-bit version of “Raspberry Pi OS Lite” (Bullseye) instead of the 32-bit version.

Otherwise to support the imx519, I followed the instructions from Quick Start - Arducam Wiki

  1. Problems you were having?
    The host computer (Intel iMac running macOS 10.15.7) does not detect the Pi-based WebCam though it is seen as a “UVC Gadget” from Apple System Information (USB section). The Camera section of Apple System Information does not report the WebCam.

  2. The dmesg log from your hardware?
    [ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
    [ 0.000000] Linux version 6.1.21-v8+ (dom@buildbot) (aarch64-linux-gnu-gcc-8 (Ubuntu/Linaro 8.4.0-3ubuntu1) 8.4.0, GNU ld (GNU Binutils for Ubuntu) 2.34) #1642 SMP PREEMPT Mon Apr 3 17:24:16 BST 2023
    [ 0.000000] random: crng init done
    [ 0.000000] Machine model: Raspberry Pi Zero 2 W Rev 1.0
    [ 0.000000] efi: UEFI not found.
    [ 0.000000] Reserved memory: created CMA memory pool at 0x000000000bc00000, size 256 MiB
    [ 0.000000] OF: reserved mem: initialized node linux,cma, compatible id shared-dma-pool
    [ 0.000000] Zone ranges:
    [ 0.000000] DMA [mem 0x0000000000000000-0x000000001bffffff]
    [ 0.000000] DMA32 empty
    [ 0.000000] Normal empty
    [ 0.000000] Movable zone start for each node
    [ 0.000000] Early memory node ranges
    [ 0.000000] node 0: [mem 0x0000000000000000-0x000000001bffffff]
    [ 0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x000000001bffffff]
    [ 0.000000] On node 0, zone DMA: 16384 pages in unavailable ranges
    [ 0.000000] percpu: Embedded 29 pages/cpu s78504 r8192 d32088 u118784
    [ 0.000000] pcpu-alloc: s78504 r8192 d32088 u118784 alloc=29*4096
    [ 0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3
    [ 0.000000] Detected VIPT I-cache on CPU0
    [ 0.000000] CPU features: kernel page table isolation forced ON by KASLR
    [ 0.000000] CPU features: detected: Kernel page table isolation (KPTI)
    [ 0.000000] CPU features: detected: ARM erratum 843419
    [ 0.000000] CPU features: detected: ARM erratum 845719
    [ 0.000000] alternatives: applying boot alternatives
    [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 112896
    [ 0.000000] Kernel command line: coherent_pool=1M 8250.nr_uarts=0 snd_bcm2835.enable_headphones=0 snd_bcm2835.enable_hdmi=1 snd_bcm2835.enable_hdmi=0 video=Composite-1:720x480@60i smsc95xx.macaddr=B8:27:EB:2C:78:95 vc_mem.mem_base=0x1ec00000 vc_mem.mem_size=0x20000000 console=ttyS0,115200 console=tty1 root=PARTUUID=333e6cd1-02 rootfstype=ext4 fsck.repair=yes rootwait
    [ 0.000000] Dentry cache hash table entries: 65536 (order: 7, 524288 bytes, linear)
    [ 0.000000] Inode-cache hash table entries: 32768 (order: 6, 262144 bytes, linear)
    [ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
    [ 0.000000] Memory: 163088K/458752K available (11776K kernel code, 2106K rwdata, 3688K rodata, 4160K init, 1077K bss, 33520K reserved, 262144K cma-reserved)
    [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
    [ 0.000000] ftrace: allocating 39744 entries in 156 pages
    [ 0.000000] ftrace: allocated 156 pages with 4 groups
    [ 0.000000] trace event string verifier disabled
    [ 0.000000] rcu: Preemptible hierarchical RCU implementation.
    [ 0.000000] rcu: RCU event tracing is enabled.
    [ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=4.
    [ 0.000000] Trampoline variant of Tasks RCU enabled.
    [ 0.000000] Rude variant of Tasks RCU enabled.
    [ 0.000000] Tracing variant of Tasks RCU enabled.
    [ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
    [ 0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
    [ 0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
    [ 0.000000] Root IRQ handler: bcm2836_arm_irqchip_handle_irq
    [ 0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
    [ 0.000000] arch_timer: cp15 timer(s) running at 19.20MHz (phys).
    [ 0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x46d987e47, max_idle_ns: 440795202767 ns
    [ 0.000001] sched_clock: 56 bits at 19MHz, resolution 52ns, wraps every 4398046511078ns
    [ 0.000390] Console: colour dummy device 80x25
    [ 0.001393] printk: console [tty1] enabled
    [ 0.001482] Calibrating delay loop (skipped), value calculated using timer frequency… 38.40 BogoMIPS (lpj=76800)
    [ 0.001550] pid_max: default: 32768 minimum: 301
    [ 0.001743] LSM: Security Framework initializing
    [ 0.002032] Mount-cache hash table entries: 1024 (order: 1, 8192 bytes, linear)
    [ 0.002095] Mountpoint-cache hash table entries: 1024 (order: 1, 8192 bytes, linear)
    [ 0.004059] cgroup: Disabling memory control group subsystem
    [ 0.007364] cblist_init_generic: Setting adjustable number of callback queues.
    [ 0.007415] cblist_init_generic: Setting shift to 2 and lim to 1.
    [ 0.007711] cblist_init_generic: Setting shift to 2 and lim to 1.
    [ 0.008067] cblist_init_generic: Setting shift to 2 and lim to 1.
    [ 0.008741] rcu: Hierarchical SRCU implementation.
    [ 0.008779] rcu: Max phase no-delay instances is 1000.
    [ 0.010638] EFI services will not be available.
    [ 0.011446] smp: Bringing up secondary CPUs …
    [ 0.013174] Detected VIPT I-cache on CPU1
    [ 0.013355] CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
    [ 0.015156] Detected VIPT I-cache on CPU2
    [ 0.015294] CPU2: Booted secondary processor 0x0000000002 [0x410fd034]
    [ 0.017087] Detected VIPT I-cache on CPU3
    [ 0.017232] CPU3: Booted secondary processor 0x0000000003 [0x410fd034]
    [ 0.017468] smp: Brought up 1 node, 4 CPUs
    [ 0.017632] SMP: Total of 4 processors activated.
    [ 0.017668] CPU features: detected: 32-bit EL0 Support
    [ 0.017702] CPU features: detected: 32-bit EL1 Support
    [ 0.017739] CPU features: detected: CRC32 instructions
    [ 0.017936] CPU: All CPU(s) started at EL2
    [ 0.017992] alternatives: applying system-wide alternatives
    [ 0.020629] devtmpfs: initialized
    [ 0.045723] Enabled cp15_barrier support
    [ 0.045814] Enabled setend support
    [ 0.046176] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
    [ 0.046254] futex hash table entries: 1024 (order: 4, 65536 bytes, linear)
    [ 0.059865] pinctrl core: initialized pinctrl subsystem
    [ 0.061325] DMI not present or invalid.
    [ 0.062379] NET: Registered PF_NETLINK/PF_ROUTE protocol family
    [ 0.074442] DMA: preallocated 1024 KiB GFP_KERNEL pool for atomic allocations
    [ 0.074895] DMA: preallocated 1024 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
    [ 0.076485] DMA: preallocated 1024 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
    [ 0.076684] audit: initializing netlink subsys (disabled)
    [ 0.077143] audit: type=2000 audit(0.076:1): state=initialized audit_enabled=0 res=1
    [ 0.078197] thermal_sys: Registered thermal governor ‘step_wise’
    [ 0.078333] cpuidle: using governor menu
    [ 0.079060] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
    [ 0.079388] ASID allocator initialised with 32768 entries
    [ 0.079679] Serial: AMBA PL011 UART driver
    [ 0.097805] bcm2835-mbox 3f00b880.mailbox: mailbox enabled
    [ 0.113731] platform 3f801000.csi: Fixed dependency cycle(s) with /soc/i2c0mux/i2c@1/imx519@1a
    [ 0.120769] raspberrypi-firmware soc:firmware: Attached to firmware from 2023-03-17T10:52:42, variant start
    [ 0.124790] raspberrypi-firmware soc:firmware: Firmware hash is 82f3750a65fadae9a38077e3c2e217ad158c8d54
    [ 0.137679] KASLR enabled
    [ 0.193719] bcm2835-dma 3f007000.dma: DMA legacy API manager, dmachans=0x1
    [ 0.200456] SCSI subsystem initialized
    [ 0.200865] usbcore: registered new interface driver usbfs
    [ 0.200984] usbcore: registered new interface driver hub
    [ 0.201115] usbcore: registered new device driver usb
    [ 0.201761] usb_phy_generic phy: supply vcc not found, using dummy regulator
    [ 0.202180] usb_phy_generic phy: dummy supplies not allowed for exclusive requests
    [ 0.202676] pps_core: LinuxPPS API ver. 1 registered
    [ 0.202716] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti
    [ 0.202788] PTP clock support registered
    [ 0.204553] vgaarb: loaded
    [ 0.205798] clocksource: Switched to clocksource arch_sys_counter
    [ 0.206927] VFS: Disk quotas dquot_6.6.0
    [ 0.207070] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
    [ 0.207400] FS-Cache: Loaded
    [ 0.207699] CacheFiles: Loaded
    [ 0.222227] NET: Registered PF_INET protocol family
    [ 0.222621] IP idents hash table entries: 8192 (order: 4, 65536 bytes, linear)
    [ 0.224339] tcp_listen_portaddr_hash hash table entries: 256 (order: 0, 4096 bytes, linear)
    [ 0.224418] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
    [ 0.224619] TCP established hash table entries: 4096 (order: 3, 32768 bytes, linear)
    [ 0.224732] TCP bind hash table entries: 4096 (order: 5, 131072 bytes, linear)
    [ 0.224959] TCP: Hash tables configured (established 4096 bind 4096)
    [ 0.225187] UDP hash table entries: 256 (order: 1, 8192 bytes, linear)
    [ 0.225261] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes, linear)
    [ 0.225614] NET: Registered PF_UNIX/PF_LOCAL protocol family
    [ 0.226736] RPC: Registered named UNIX socket transport module.
    [ 0.226783] RPC: Registered udp transport module.
    [ 0.226819] RPC: Registered tcp transport module.
    [ 0.226853] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [ 0.226910] PCI: CLS 0 bytes, default 64
    [ 0.229631] hw perfevents: enabled with armv8_cortex_a53 PMU driver, 7 counters available
    [ 0.230145] kvm [1]: IPA Size Limit: 40 bits
    [ 0.231960] kvm [1]: Hyp mode initialized successfully
    [ 2.018776] Initialise system trusted keyrings
    [ 2.019475] workingset: timestamp_bits=46 max_order=17 bucket_order=0
    [ 2.032767] zbud: loaded
    [ 2.037560] NFS: Registering the id_resolver key type
    [ 2.037650] Key type id_resolver registered
    [ 2.037687] Key type id_legacy registered
    [ 2.037940] nfs4filelayout_init: NFSv4 File Layout Driver Registering…
    [ 2.037990] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering…
    [ 2.040179] Key type asymmetric registered
    [ 2.040227] Asymmetric key parser ‘x509’ registered
    [ 2.040378] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 247)
    [ 2.040837] io scheduler mq-deadline registered
    [ 2.040883] io scheduler kyber registered
    [ 2.050185] simple-framebuffer 1eaa9000.framebuffer: framebuffer at 0x1eaa9000, 0x151800 bytes
    [ 2.050266] simple-framebuffer 1eaa9000.framebuffer: format=a8r8g8b8, mode=720x480x32, linelength=2880
    [ 2.054073] Console: switching to colour frame buffer device 90x30
    [ 2.059096] simple-framebuffer 1eaa9000.framebuffer: fb0: simplefb registered!
    [ 2.072252] bcm2835-rng 3f104000.rng: hwrng registered
    [ 2.075355] vc-mem: phys_addr:0x00000000 mem_base=0x1ec00000 mem_size:0x20000000(512 MiB)
    [ 2.081523] gpiomem-bcm2835 3f200000.gpiomem: Initialised: Registers at 0x3f200000
    [ 2.104759] brd: module loaded
    [ 2.121275] loop: module loaded
    [ 2.124409] Loading iSCSI transport class v2.0-870.
    [ 2.134127] usbcore: registered new interface driver r8152
    [ 2.136231] usbcore: registered new interface driver lan78xx
    [ 2.138274] usbcore: registered new interface driver smsc95xx
    [ 2.140915] dwc_otg: version 3.00a 10-AUG-2012 (platform bus)
    [ 2.143215] dwc_otg: FIQ enabled
    [ 2.143233] dwc_otg: NAK holdoff enabled
    [ 2.143249] dwc_otg: FIQ split-transaction FSM enabled
    [ 2.143275] Module dwc_common_port init
    [ 2.144071] usbcore: registered new interface driver uas
    [ 2.146027] usbcore: registered new interface driver usb-storage
    [ 2.148210] mousedev: PS/2 mouse device common for all mice
    [ 2.156486] sdhci: Secure Digital Host Controller Interface driver
    [ 2.158363] sdhci: Copyright(c) Pierre Ossman
    [ 2.161037] sdhci-pltfm: SDHCI platform and OF driver helper
    [ 2.165424] ledtrig-cpu: registered to indicate activity on CPUs
    [ 2.167767] hid: raw HID events driver (C) Jiri Kosina
    [ 2.169838] usbcore: registered new interface driver usbhid
    [ 2.171600] usbhid: USB HID core driver
    [ 2.173721] bcm2835_vchiq 3f00b840.mailbox: there is not valid maps for state default
    [ 2.187767] NET: Registered PF_PACKET protocol family
    [ 2.189765] Key type dns_resolver registered
    [ 2.193677] registered taskstats version 1
    [ 2.195495] Loading compiled-in X.509 certificates
    [ 2.198537] Key type .fscrypt registered
    [ 2.200116] Key type fscrypt-provisioning registered
    [ 2.229367] uart-pl011 3f201000.serial: cts_event_workaround enabled
    [ 2.231221] 3f201000.serial: ttyAMA0 at MMIO 0x3f201000 (irq = 99, base_baud = 0) is a PL011 rev2
    [ 2.240019] bcm2835-wdt bcm2835-wdt: Broadcom BCM2835 watchdog timer
    [ 2.242505] bcm2835-power bcm2835-power: Broadcom BCM2835 power domains driver
    [ 2.247670] mmc-bcm2835 3f300000.mmcnr: mmc_debug:0 mmc_debug2:0
    [ 2.249477] mmc-bcm2835 3f300000.mmcnr: DMA channel allocated
    [ 2.276228] sdhost: log_buf @ 00000000a8c25bee (c2f8b000)
    [ 2.325913] mmc0: sdhost-bcm2835 loaded - DMA enabled (>1)
    [ 2.334986] of_cfs_init
    [ 2.336962] of_cfs_init: OK
    [ 2.340358] Waiting for root device PARTUUID=333e6cd1-02…
    [ 2.363758] mmc0: host does not support reading read-only switch, assuming write-enable
    [ 2.368861] mmc0: new high speed SDHC card at address b368
    [ 2.372720] mmcblk0: mmc0:b368 NCard 29.1 GiB
    [ 2.380054] mmcblk0: p1 p2
    [ 2.382845] mmcblk0: mmc0:b368 NCard 29.1 GiB
    [ 2.404529] EXT4-fs (mmcblk0p2): INFO: recovery required on readonly filesystem
    [ 2.406434] EXT4-fs (mmcblk0p2): write access will be enabled during recovery
    [ 2.424795] mmc1: new high speed SDIO card at address 0001
    [ 3.294423] EXT4-fs (mmcblk0p2): recovery complete
    [ 3.384103] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Quota mode: none.
    [ 3.387830] VFS: Mounted root (ext4 filesystem) readonly on device 179:2.
    [ 3.400008] devtmpfs: mounted
    [ 3.414570] Freeing unused kernel memory: 4160K
    [ 3.416639] Run /sbin/init as init process
    [ 3.418469] with arguments:
    [ 3.418485] /sbin/init
    [ 3.418501] with environment:
    [ 3.418516] HOME=/
    [ 3.418531] TERM=linux
    [ 4.247989] systemd[1]: System time before build time, advancing clock.
    [ 4.568178] NET: Registered PF_INET6 protocol family
    [ 4.572623] Segment Routing with IPv6
    [ 4.574495] In-situ OAM (IOAM) with IPv6
    [ 4.752386] systemd[1]: systemd 247.3-7+deb11u2 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +ZSTD +SECCOMP +BLKID +ELFUTILS +KMOD +IDN2 -IDN +PCRE2 default-hierarchy=unified)
    [ 4.759522] systemd[1]: Detected architecture arm64.
    [ 4.813704] systemd[1]: Set hostname to .
    [ 6.236573] systemd[1]: Queued start job for default target Multi-User System.
    [ 6.264369] systemd[1]: Created slice system-getty.slice.
    [ 6.271170] systemd[1]: Created slice system-modprobe.slice.
    [ 6.277391] systemd[1]: Created slice system-systemd\x2dfsck.slice.
    [ 6.283312] systemd[1]: Created slice User and Session Slice.
    [ 6.288500] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
    [ 6.293646] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
    [ 6.299919] systemd[1]: Set up automount Arbitrary Executable File Formats File System Automount Point.
    [ 6.307248] systemd[1]: Reached target Local Encrypted Volumes.
    [ 6.312304] systemd[1]: Reached target Paths.
    [ 6.317043] systemd[1]: Reached target Slices.
    [ 6.321724] systemd[1]: Reached target Swap.
    [ 6.338114] systemd[1]: Listening on Syslog Socket.
    [ 6.344121] systemd[1]: Listening on fsck to fsckd communication Socket.
    [ 6.349489] systemd[1]: Listening on initctl Compatibility Named Pipe.
    [ 6.356219] systemd[1]: Listening on Journal Audit Socket.
    [ 6.362274] systemd[1]: Listening on Journal Socket (/dev/log).
    [ 6.368484] systemd[1]: Listening on Journal Socket.
    [ 6.381609] systemd[1]: Listening on udev Control Socket.
    [ 6.387612] systemd[1]: Listening on udev Kernel Socket.
    [ 6.393359] systemd[1]: Condition check resulted in Huge Pages File System being skipped.
    [ 6.418557] systemd[1]: Mounting POSIX Message Queue File System…
    [ 6.430504] systemd[1]: Mounting RPC Pipe File System…
    [ 6.443363] systemd[1]: Mounting Kernel Debug File System…
    [ 6.456478] systemd[1]: Mounting Kernel Trace File System…
    [ 6.462067] systemd[1]: Condition check resulted in Kernel Module supporting RPCSEC_GSS being skipped.
    [ 6.486229] systemd[1]: Starting Restore / save the current clock…
    [ 6.527085] systemd[1]: Starting Set the console keyboard layout…
    [ 6.540436] systemd[1]: Starting Create list of static device nodes for the current kernel…
    [ 6.556986] systemd[1]: Starting Load Kernel Module configfs…
    [ 6.572482] systemd[1]: Starting Load Kernel Module drm…
    [ 6.586347] systemd[1]: Starting Load Kernel Module fuse…
    [ 6.602450] systemd[1]: Condition check resulted in Set Up Additional Binary Formats being skipped.
    [ 6.614038] systemd[1]: Starting File System Check on Root Device…
    [ 6.632993] systemd[1]: Starting Journal Service…
    [ 6.699332] fuse: init (API version 7.37)
    [ 6.723333] systemd[1]: Starting Load Kernel Modules…
    [ 6.758735] systemd[1]: Starting Coldplug All udev Devices…
    [ 6.789194] systemd[1]: Mounted POSIX Message Queue File System.
    [ 6.795807] systemd[1]: Mounted RPC Pipe File System.
    [ 6.802585] systemd[1]: Mounted Kernel Debug File System.
    [ 6.808698] systemd[1]: Mounted Kernel Trace File System.
    [ 6.816965] systemd[1]: Finished Restore / save the current clock.
    [ 6.826156] systemd[1]: Finished Create list of static device nodes for the current kernel.
    [ 6.836533] systemd[1]: [email protected]: Succeeded.
    [ 6.841005] systemd[1]: Finished Load Kernel Module configfs.
    [ 6.850742] systemd[1]: [email protected]: Succeeded.
    [ 6.855627] systemd[1]: Finished Load Kernel Module fuse.
    [ 6.864130] systemd[1]: Finished Load Kernel Modules.
    [ 6.907990] systemd[1]: Mounting FUSE Control File System…
    [ 6.920930] systemd[1]: Mounting Kernel Configuration File System…
    [ 6.934299] systemd[1]: Started File System Check Daemon to report status.
    [ 6.947754] systemd[1]: Starting Apply Kernel Variables…
    [ 6.964020] systemd[1]: [email protected]: Succeeded.
    [ 6.968509] systemd[1]: Finished Load Kernel Module drm.
    [ 6.974833] systemd[1]: Mounted FUSE Control File System.
    [ 6.980474] systemd[1]: Mounted Kernel Configuration File System.
    [ 7.099558] systemd[1]: Started Journal Service.
    [ 7.587917] EXT4-fs (mmcblk0p2): re-mounted. Quota mode: none.
    [ 7.708874] systemd-journald[136]: Received client request to flush runtime journal.
    [ 7.806557] systemd-journald[136]: File /var/log/journal/979c9fb4c064460695debc311597e9cc/system.journal corrupted or uncleanly shut down, renaming and replacing.
    [ 10.640579] vc_sm_cma: module is from the staging directory, the quality is unknown, you have been warned.
    [ 10.646542] bcm2835_vc_sm_cma_probe: Videocore shared memory driver
    [ 10.646600] [vc_sm_connected_init]: start
    [ 10.648112] [vc_sm_connected_init]: installed successfully
    [ 10.727259] mc: Linux media interface: v0.10
    [ 10.815746] snd_bcm2835: module is from the staging directory, the quality is unknown, you have been warned.
    [ 10.844635] videodev: Linux video capture interface: v2.00
    [ 10.998027] bcm2835_mmal_vchiq: module is from the staging directory, the quality is unknown, you have been warned.
    [ 10.998091] bcm2835_mmal_vchiq: module is from the staging directory, the quality is unknown, you have been warned.
    [ 11.082436] bcm2835_codec: module is from the staging directory, the quality is unknown, you have been warned.
    [ 11.086457] bcm2835_isp: module is from the staging directory, the quality is unknown, you have been warned.
    [ 11.088526] bcm2835_v4l2: module is from the staging directory, the quality is unknown, you have been warned.
    [ 11.155481] i2c i2c-11: Added multiplexed i2c bus 0
    [ 11.157273] i2c i2c-11: Added multiplexed i2c bus 10
    [ 11.446592] cfg80211: Loading compiled-in X.509 certificates for regulatory database
    [ 11.542671] cfg80211: Loaded X.509 cert ‘sforshee: 00b28ddf47aef9cea7’
    [ 11.604783] dwc2 3f980000.usb: supply vusb_d not found, using dummy regulator
    [ 11.605271] dwc2 3f980000.usb: supply vusb_a not found, using dummy regulator
    [ 11.615452] bcm2835-isp bcm2835-isp: Device node output[0] registered as /dev/video13
    [ 11.615613] bcm2835-codec bcm2835-codec: Device registered as /dev/video10
    [ 11.615714] bcm2835-codec bcm2835-codec: Loaded V4L2 decode
    [ 11.616564] bcm2835-isp bcm2835-isp: Device node capture[0] registered as /dev/video14
    [ 11.621333] bcm2835-isp bcm2835-isp: Device node capture[1] registered as /dev/video15
    [ 11.622752] bcm2835-isp bcm2835-isp: Device node stats[2] registered as /dev/video16
    [ 11.622810] bcm2835-isp bcm2835-isp: Register output node 0 with media controller
    [ 11.622873] bcm2835-isp bcm2835-isp: Register capture node 1 with media controller
    [ 11.622904] bcm2835-isp bcm2835-isp: Register capture node 2 with media controller
    [ 11.622934] bcm2835-isp bcm2835-isp: Register capture node 3 with media controller
    [ 11.625195] bcm2835-codec bcm2835-codec: Device registered as /dev/video11
    [ 11.625269] bcm2835-codec bcm2835-codec: Loaded V4L2 encode
    [ 11.630590] bcm2835-isp bcm2835-isp: Device node output[0] registered as /dev/video20
    [ 11.631241] bcm2835-codec bcm2835-codec: Device registered as /dev/video12
    [ 11.631324] bcm2835-codec bcm2835-codec: Loaded V4L2 isp
    [ 11.631596] bcm2835-isp bcm2835-isp: Device node capture[0] registered as /dev/video21
    [ 11.632232] bcm2835-isp bcm2835-isp: Device node capture[1] registered as /dev/video22
    [ 11.633598] bcm2835-isp bcm2835-isp: Device node stats[2] registered as /dev/video23
    [ 11.633651] bcm2835-isp bcm2835-isp: Register output node 0 with media controller
    [ 11.633706] bcm2835-isp bcm2835-isp: Register capture node 1 with media controller
    [ 11.633755] bcm2835-isp bcm2835-isp: Register capture node 2 with media controller
    [ 11.633878] bcm2835-isp bcm2835-isp: Register capture node 3 with media controller
    [ 11.634669] bcm2835-isp bcm2835-isp: Loaded V4L2 bcm2835-isp
    [ 11.641161] bcm2835-codec bcm2835-codec: Device registered as /dev/video18
    [ 11.641243] bcm2835-codec bcm2835-codec: Loaded V4L2 image_fx
    [ 11.648784] bcm2835-codec bcm2835-codec: Device registered as /dev/video31
    [ 11.648884] bcm2835-codec bcm2835-codec: Loaded V4L2 encode_image
    [ 11.661471] cfg80211: loaded regulatory.db is malformed or signature is missing/invalid
    [ 11.818129] dwc2 3f980000.usb: EPs: 8, dedicated fifos, 4080 entries in SPRAM
    [ 11.818703] dwc2 3f980000.usb: DWC OTG Controller
    [ 11.818774] dwc2 3f980000.usb: new USB bus registered, assigned bus number 1
    [ 11.818869] dwc2 3f980000.usb: irq 51, io mem 0x3f980000
    [ 11.819512] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.01
    [ 11.819545] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
    [ 11.819570] usb usb1: Product: DWC OTG Controller
    [ 11.819591] usb usb1: Manufacturer: Linux 6.1.21-v8+ dwc2_hsotg
    [ 11.819612] usb usb1: SerialNumber: 3f980000.usb
    [ 11.820920] hub 1-0:1.0: USB hub found
    [ 11.821046] hub 1-0:1.0: 1 port detected
    [ 11.833460] brcmfmac: F1 signature read @0x18000000=0x1541a9a6
    [ 11.851472] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43436s-sdio for chip BCM43430/1
    [ 11.852405] usbcore: registered new interface driver brcmfmac
    [ 11.961634] Console: switching to colour dummy device 80x25
    [ 11.973360] brcmfmac mmc1:0001:1: Direct firmware load for brcm/brcmfmac43436s-sdio.clm_blob failed with error -2
    [ 11.975946] vc4-drm soc:gpu: bound 3f400000.hvs (ops vc4_hvs_ops [vc4])
    [ 11.985495] Registered IR keymap rc-cec
    [ 12.010949] rc rc0: vc4-hdmi as /devices/platform/soc/3f902000.hdmi/rc/rc0
    [ 12.018049] input: vc4-hdmi as /devices/platform/soc/3f902000.hdmi/rc/rc0/input0
    [ 12.035384] vc4-drm soc:gpu: bound 3f902000.hdmi (ops vc4_hdmi_ops [vc4])
    [ 12.036049] vc4-drm soc:gpu: bound 3f004000.txp (ops vc4_txp_ops [vc4])
    [ 12.036669] vc4-drm soc:gpu: bound 3f206000.pixelvalve (ops vc4_crtc_ops [vc4])
    [ 12.037230] vc4-drm soc:gpu: bound 3f207000.pixelvalve (ops vc4_crtc_ops [vc4])
    [ 12.037760] vc4-drm soc:gpu: bound 3f807000.pixelvalve (ops vc4_crtc_ops [vc4])
    [ 12.063158] vc4-drm soc:gpu: bound 3fc00000.v3d (ops vc4_v3d_ops [vc4])
    [ 12.092065] [drm] Initialized vc4 0.0.0 20140616 for soc:gpu on minor 0
    [ 12.100975] vc4-drm soc:gpu: [drm] Cannot find any crtc or sizes
    [ 12.144051] brcmfmac: brcmf_c_process_clm_blob: no clm_blob available (err=-2), device may have limited channels available
    [ 12.144973] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM43430/1 wl0: Jul 5 2022 21:29:56 version 7.45.96.141 (g53ba0094) FWID 01-eef9b3bf es7
    [ 13.165747] ak7375 10-000c: supply vio not found, using dummy regulator
    [ 13.195175] imx519 10-001a: Device found is imx519
    [ 13.195631] imx519 10-001a: Consider updating driver imx519 to match on endpoints
    [ 14.086089] uart-pl011 3f201000.serial: no DMA platform data
    [ 14.244243] 8021q: 802.1Q VLAN Support v1.8
    [ 14.571891] Adding 102396k swap on /var/swap. Priority:-2 extents:1 across:102396k SSFS
    [ 14.932027] brcmfmac: brcmf_cfg80211_set_power_mgmt: power save enabled
    [ 16.354737] configfs-gadget.g1 gadget.0: uvc: uvc_function_bind()
    [ 16.355105] dwc2 3f980000.usb: bound driver configfs-gadget.g1
    [ 16.747234] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
    [ 17.608573] dwc2 3f980000.usb: new device is high-speed
    [ 17.662307] dwc2 3f980000.usb: new address 23
    [ 17.704444] configfs-gadget.g1 gadget.0: uvc: uvc_function_set_alt(0, 0)
    [ 17.704468] configfs-gadget.g1 gadget.0: uvc: reset UVC Control
    [ 17.704486] configfs-gadget.g1 gadget.0: uvc: uvc_function_set_alt(1, 0)
    [ 18.209609] ICMPv6: process `dhcpcd’ is using deprecated sysctl (syscall) net.ipv6.neigh.wlan0.retrans_time - use net.ipv6.neigh.wlan0.retrans_time_ms instead
    [ 20.528373] Bluetooth: Core ver 2.22
    [ 20.528540] NET: Registered PF_BLUETOOTH protocol family
    [ 20.528553] Bluetooth: HCI device and connection manager initialized
    [ 20.528587] Bluetooth: HCI socket layer initialized
    [ 20.528607] Bluetooth: L2CAP socket layer initialized
    [ 20.528640] Bluetooth: SCO socket layer initialized
    [ 20.545359] Bluetooth: HCI UART driver ver 2.3
    [ 20.545395] Bluetooth: HCI UART protocol H4 registered
    [ 20.545557] Bluetooth: HCI UART protocol Three-wire (H5) registered
    [ 20.546047] Bluetooth: HCI UART protocol Broadcom registered
    [ 21.001244] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
    [ 21.001275] Bluetooth: BNEP filters: protocol multicast
    [ 21.001304] Bluetooth: BNEP socket layer initialized
    [ 21.010534] Bluetooth: MGMT ver 1.22
    [ 21.029645] NET: Registered PF_ALG protocol family

  3. Troubleshooting attempts you’ve made?

dmesg | grep imx519
[ 0.113731] platform 3f801000.csi: Fixed dependency cycle(s) with /soc/i2c0mux/i2c@1/imx519@1a
[ 13.195175] imx519 10-001a: Device found is imx519
[ 13.195631] imx519 10-001a: Consider updating driver imx519 to match on endpoints

Seems to indicate that the camera is detected, but don’t know what next to do…

  1. What help do you need?
    To get it work as a “Plug-and-play Raspberry Pi USB webcam”.

Thank you for any help!

@Will

Sorry, I can’t confirm if you can use this fun example with this camera.

Based on the information from your dmesg, it appears that there are no issues with the camera.

Before proceeding, it’s crucial to ensure that the camera can correctly display images as per the documentation.

Hello Edward,

Yes the camera can correctly display images as per the documentation when the uvc-gadget program is not running (called from rpi-uvc-gadget.sh at the end of the boot process).

If I try to use the camera when uvc-gadget is running, for example with: libcamera-still -t 5000 -n -o ~/Desktop/test.jpg, I get the following error:

[0:03:52.449565425] [1349] INFO Camera camera_manager.cpp:299 libcamera v0.0.0+4225-74d023d8
[0:03:52.647452127] [1352] INFO RPI raspberrypi.cpp:1476 Registered camera /base/soc/i2c0mux/i2c@1/imx519@1a to Unicam device /dev/media0 and ISP device /dev/media1
[0:03:52.647938012] [1349] INFO Camera camera.cpp:841 Pipeline handler in use by another process
**ERROR: *** failed to acquire camera /base/soc/i2c0mux/i2c@1/imx519@1a *****

This seems to indicate that uvc-gadget is indeed using the camera. I guess the issue is with the camera setup in rpi-uvc-gadget.sh where correct values should be provided for the “width and height, plus the maximum buffer size required to store a single frame, and finally with the supported frame intervals for that format and framesize” according to Linux UVC Gadget Driver — The Linux Kernel documentation

At that point, this is a bit too technical for me. Hope someone could investigate and help getting it work with the ArduCam RPi cameras. Being able to use them as a WebCam or even as a RTSP Camera Stream (using something like GitHub - mpromonet/v4l2rtspserver: RTSP Server for V4L2 device capture supporting HEVC/H264/JPEG/VP8/VP9) would be super useful. Having those capabilities would definitely make me consider the ArduCam Camera solutions over the official RaspberryPi Cameras in my future projects!

@Will

After giving it some thought, I find this project to be interesting, and I plan to try out the entire process in a few days. I will do my best to assist you in any way possible.

Thanks @Edward, very much appreciated!

@Will

I have also tested it myself, but I am unable to use the device through the entire process, even with the official Raspberry Pi camera (imx708). Although the device is detected by my computer, I am unable to open it with any software.

I tried to find some GitHub repositories, but it appears that the available resources are limited to a blog, which makes it difficult to get support. I suggest reaching out to Raspberry Pi regarding this issue, as I do not think the problem lies with the camera itself.

I’m really interested in a solution, since I try the same on a pi zero. I want to use it for my 3d printer.

@tina

I use official equipment and camera, and I can’t use it after following his tutorial. It seems that many people can’t use it like me. You may need to communicate with the Raspberry Pi about this problem.

Hello, I finally got some success with the following configurations:

Note that this solution fails on any Macs (with Intel or Apple Silicon processor) running either macOS BigSur (11.7), Catalina (10.15) or below. I was initially using those older macOS versions and could not get the RPi with the IMX519 working as a WebCam, though they could work with a OV5647 module and an older version of raspios-buster 32-bit.

First, follow the instructions from “Plug-and-play Raspberry Pi USB webcam” website (Plug-and-play Raspberry Pi USB webcam - Raspberry Pi):

sudo apt update
echo "dtoverlay=dwc2,dr_mode=otg" | sudo tee -a /boot/config.txt
sudo apt install git meson libcamera-dev libjpeg-dev
git clone https://gitlab.freedesktop.org/camera/uvc-gadget.git
cd uvc-gadget
make uvc-gadget
cd build
sudo meson install
sudo ldconfig
cd

sudo nano rpi-uvc-gadget.sh
=> Copy/paste the rpi-uvc-gadget.sh script from the website. However, replace the lines
         between the 2 lines showing “mkdir functions/$FUNCTION” with the following 2 lines:

	create_frame $FUNCTION 1280 720 uncompressed u "166666"
	create_frame $FUNCTION 1280 720 mjpeg m "166666"

sudo chmod 777 rpi-uvc-gadget.sh
sudo nano /etc/rc.local
=> copy/paste the  /etc/rc.local script from the website.

sudo reboot

You should be able to connect the RPi to a host computer and use its attached camera as a WebCam if using a OV5647 camera module.

To add support for the 16MP Arducam IMX519 camera module:

wget -O install_pivariety_pkgs.sh https://github.com/ArduCAM/Arducam-Pivariety-V4L2-Driver/releases/download/install_script/install_pivariety_pkgs.sh
chmod +x install_pivariety_pkgs.sh
./install_pivariety_pkgs.sh -p libcamera
./install_pivariety_pkgs.sh -p libcamera_apps

sudo nano /boot/config.txt
=> add after the last [all]:

	dtoverlay=imx519

sudo reboot

You should be able to connect the RPi to a host computer and use its attached camera as a WebCam if using Arducam IMX519 camera module.

To switch support between the OV5647 and the IMX519:

- IMX519 (Autofocus focus), add in /boot/config.txt:

	dtoverlay=imx519

- IMX519 NOIR (fixed focus), add in /boot/config.txt:

	dtoverlay=imx519,vcm=off

- OV5647: comment the imx519 line in /boot/config.txt

	#dtoverlay=imx519 

Hope this helps!

1 Like

@Will

Awesome, this can be a good suggestion for other people in this society who want to use it, I can put this on my navigation page for future users to find easily.

Hello @Edward , yes feel free to share my solution if you can replicate it!

@Will

I posted the link of your thread on imx519 sticky post, thank you very much for your tireless efforts.

1 Like