Hi @fhunleth, thanks for the reply! Here’s the output of dmesg and lsmod from Raspberry Pi OS:
(Going to post dmesg in a follow up post since I’ve exceeded the character count.)
lsmod:
alex@camera-test:~ $ lsmod
Module Size Used by
snd_seq_dummy 12288 0
snd_hrtimer 12288 1
snd_seq 86016 7 snd_seq_dummy
snd_seq_device 16384 1 snd_seq
rfcomm 61440 6
cmac 12288 2
algif_hash 12288 1
aes_arm64 12288 2
aes_generic 32768 1 aes_arm64
algif_skcipher 12288 1
af_alg 28672 6 algif_hash,algif_skcipher
bnep 24576 2
binfmt_misc 16384 1
brcmfmac_wcc 12288 0
brcmfmac 372736 1 brcmfmac_wcc
imx219 20480 0
v4l2_cci 12288 1 imx219
brcmutil 24576 1 brcmfmac
cfg80211 1048576 1 brcmfmac
regmap_i2c 12288 1 v4l2_cci
bcm2835_unicam_legacy 53248 6
bcm2835_codec 49152 0
bcm2835_v4l2 49152 0
bcm2835_isp 28672 10
hci_uart 53248 0
raspberrypi_hwmon 12288 0
bcm2835_mmal_vchiq 36864 3 bcm2835_codec,bcm2835_v4l2,bcm2835_isp
v4l2_dv_timings 32768 1 bcm2835_unicam_legacy
btbcm 24576 1 hci_uart
vc_sm_cma 32768 2 bcm2835_mmal_vchiq,bcm2835_isp
v4l2_mem2mem 45056 1 bcm2835_codec
v4l2_fwnode 20480 5 bcm2835_unicam_legacy,imx219
bluetooth 651264 31 hci_uart,btbcm,bnep,rfcomm
v4l2_async 20480 3 v4l2_fwnode,bcm2835_unicam_legacy,imx219
videobuf2_vmalloc 12288 1 bcm2835_v4l2
videobuf2_dma_contig 20480 3 bcm2835_codec,bcm2835_unicam_legacy,bcm2835_isp
videobuf2_memops 12288 2 videobuf2_vmalloc,videobuf2_dma_contig
videobuf2_v4l2 32768 5 bcm2835_codec,bcm2835_unicam_legacy,bcm2835_v4l2,v4l2_mem2mem,bcm2835_isp
videodev 323584 21 v4l2_async,bcm2835_codec,v4l2_fwnode,bcm2835_unicam_legacy,imx219,videobuf2_v4l2,bcm2835_v4l2,v4l2_mem2mem,bcm2835_isp
ecdh_generic 16384 1 bluetooth
ecc 40960 1 ecdh_generic
rfkill 36864 6 bluetooth,cfg80211
libaes 16384 3 aes_arm64,bluetooth,aes_generic
videobuf2_common 77824 9 bcm2835_codec,bcm2835_unicam_legacy,videobuf2_vmalloc,videobuf2_dma_contig,videobuf2_v4l2,bcm2835_v4l2,v4l2_mem2mem,videobuf2_memops,bcm2835_isp
mc 69632 13 v4l2_async,videodev,bcm2835_codec,bcm2835_unicam_legacy,imx219,videobuf2_v4l2,videobuf2_common,v4l2_mem2mem,bcm2835_isp
snd_bcm2835 24576 0
raspberrypi_gpiomem 12288 0
uio_pdrv_genirq 12288 0
uio 20480 1 uio_pdrv_genirq
sch_fq_codel 24576 2
i2c_dev 16384 0
zram 40960 1
lz4_compress 24576 1 zram
fuse 172032 5
nfnetlink 20480 1
ip_tables 32768 0
x_tables 53248 1 ip_tables
ipv6 598016 54
vc4 405504 8
snd_soc_hdmi_codec 20480 1
drm_display_helper 24576 1 vc4
cec 53248 1 vc4
drm_dma_helper 24576 1 vc4
drm_kms_helper 233472 2 drm_dma_helper,vc4
drm 675840 9 drm_kms_helper,drm_dma_helper,vc4,drm_display_helper
drm_panel_orientation_quirks 28672 1 drm
snd_soc_core 307200 2 vc4,snd_soc_hdmi_codec
snd_compress 20480 1 snd_soc_core
snd_pcm_dmaengine 16384 1 snd_soc_core
snd_pcm 151552 5 snd_bcm2835,snd_soc_hdmi_codec,snd_compress,snd_soc_core,snd_pcm_dmaengine
snd_timer 36864 3 snd_seq,snd_hrtimer,snd_pcm
snd 118784 10 snd_seq,snd_seq_device,snd_bcm2835,snd_soc_hdmi_codec,snd_timer,snd_compress,snd_soc_core,snd_pcm
i2c_mux_pinctrl 12288 0
backlight 24576 2 drm_kms_helper,drm
i2c_mux 16384 1 i2c_mux_pinctrl
i2c_bcm2835 16384 1
alex@camera-test:~ $ lsmod | grep bcm2835
bcm2835_unicam_legacy 53248 6
bcm2835_codec 49152 0
bcm2835_v4l2 49152 0
bcm2835_isp 28672 10
bcm2835_mmal_vchiq 36864 3 bcm2835_codec,bcm2835_v4l2,bcm2835_isp
v4l2_dv_timings 32768 1 bcm2835_unicam_legacy
vc_sm_cma 32768 2 bcm2835_mmal_vchiq,bcm2835_isp
v4l2_mem2mem 45056 1 bcm2835_codec
v4l2_fwnode 20480 5 bcm2835_unicam_legacy,imx219
v4l2_async 20480 3 v4l2_fwnode,bcm2835_unicam_legacy,imx219
videobuf2_vmalloc 12288 1 bcm2835_v4l2
videobuf2_dma_contig 20480 3 bcm2835_codec,bcm2835_unicam_legacy,bcm2835_isp
videobuf2_v4l2 32768 5 bcm2835_codec,bcm2835_unicam_legacy,bcm2835_v4l2,v4l2_mem2mem,bcm2835_isp
videodev 323584 21 v4l2_async,bcm2835_codec,v4l2_fwnode,bcm2835_unicam_legacy,imx219,videobuf2_v4l2,bcm2835_v4l2,v4l2_mem2mem,bcm2835_isp
videobuf2_common 77824 9 bcm2835_codec,bcm2835_unicam_legacy,videobuf2_vmalloc,videobuf2_dma_contig,videobuf2_v4l2,bcm2835_v4l2,v4l2_mem2mem,videobuf2_memops,bcm2835_isp
mc 69632 13 v4l2_async,videodev,bcm2835_codec,bcm2835_unicam_legacy,imx219,videobuf2_v4l2,videobuf2_common,v4l2_mem2mem,bcm2835_isp
snd_bcm2835 24576 0
snd_pcm 151552 5 snd_bcm2835,snd_soc_hdmi_codec,snd_compress,snd_soc_core,snd_pcm_dmaengine
snd 118784 10 snd_seq,snd_seq_device,snd_bcm2835,snd_soc_hdmi_codec,snd_timer,snd_compress,snd_soc_core,snd_pcm
i2c_bcm2835 16384 1
alex@camera-test:~ $ lsmod | grep bcm2835
bcm2835_unicam_legacy 53248 6
bcm2835_codec 49152 0
bcm2835_v4l2 49152 0
bcm2835_isp 28672 10
bcm2835_mmal_vchiq 36864 3 bcm2835_codec,bcm2835_v4l2,bcm2835_isp
v4l2_dv_timings 32768 1 bcm2835_unicam_legacy
vc_sm_cma 32768 2 bcm2835_mmal_vchiq,bcm2835_isp
v4l2_mem2mem 45056 1 bcm2835_codec
v4l2_fwnode 20480 5 bcm2835_unicam_legacy,imx219
v4l2_async 20480 3 v4l2_fwnode,bcm2835_unicam_legacy,imx219
videobuf2_vmalloc 12288 1 bcm2835_v4l2
videobuf2_dma_contig 20480 3 bcm2835_codec,bcm2835_unicam_legacy,bcm2835_isp
videobuf2_v4l2 32768 5 bcm2835_codec,bcm2835_unicam_legacy,bcm2835_v4l2,v4l2_mem2mem,bcm2835_isp
videodev 323584 21 v4l2_async,bcm2835_codec,v4l2_fwnode,bcm2835_unicam_legacy,imx219,videobuf2_v4l2,bcm2835_v4l2,v4l2_mem2mem,bcm2835_isp
videobuf2_common 77824 9 bcm2835_codec,bcm2835_unicam_legacy,videobuf2_vmalloc,videobuf2_dma_contig,videobuf2_v4l2,bcm2835_v4l2,v4l2_mem2mem,videobuf2_memops,bcm2835_isp
mc 69632 13 v4l2_async,videodev,bcm2835_codec,bcm2835_unicam_legacy,imx219,videobuf2_v4l2,videobuf2_common,v4l2_mem2mem,bcm2835_isp
snd_bcm2835 24576 0
snd_pcm 151552 5 snd_bcm2835,snd_soc_hdmi_codec,snd_compress,snd_soc_core,snd_pcm_dmaengine
snd 118784 10 snd_seq,snd_seq_device,snd_bcm2835,snd_soc_hdmi_codec,snd_timer,snd_compress,snd_soc_core,snd_pcm
i2c_bcm2835 16384 1
alex@camera-test:~ $ lsmod
Module Size Used by
snd_seq_dummy 12288 0
snd_hrtimer 12288 1
snd_seq 86016 7 snd_seq_dummy
snd_seq_device 16384 1 snd_seq
rfcomm 61440 6
cmac 12288 2
algif_hash 12288 1
aes_arm64 12288 2
aes_generic 32768 1 aes_arm64
algif_skcipher 12288 1
af_alg 28672 6 algif_hash,algif_skcipher
bnep 24576 2
binfmt_misc 16384 1
brcmfmac_wcc 12288 0
brcmfmac 372736 1 brcmfmac_wcc
imx219 20480 0
v4l2_cci 12288 1 imx219
brcmutil 24576 1 brcmfmac
cfg80211 1048576 1 brcmfmac
regmap_i2c 12288 1 v4l2_cci
bcm2835_unicam_legacy 53248 6
bcm2835_codec 49152 0
bcm2835_v4l2 49152 0
bcm2835_isp 28672 10
hci_uart 53248 0
raspberrypi_hwmon 12288 0
bcm2835_mmal_vchiq 36864 3 bcm2835_codec,bcm2835_v4l2,bcm2835_isp
v4l2_dv_timings 32768 1 bcm2835_unicam_legacy
btbcm 24576 1 hci_uart
vc_sm_cma 32768 2 bcm2835_mmal_vchiq,bcm2835_isp
v4l2_mem2mem 45056 1 bcm2835_codec
v4l2_fwnode 20480 5 bcm2835_unicam_legacy,imx219
bluetooth 651264 31 hci_uart,btbcm,bnep,rfcomm
v4l2_async 20480 3 v4l2_fwnode,bcm2835_unicam_legacy,imx219
videobuf2_vmalloc 12288 1 bcm2835_v4l2
videobuf2_dma_contig 20480 3 bcm2835_codec,bcm2835_unicam_legacy,bcm2835_isp
videobuf2_memops 12288 2 videobuf2_vmalloc,videobuf2_dma_contig
videobuf2_v4l2 32768 5 bcm2835_codec,bcm2835_unicam_legacy,bcm2835_v4l2,v4l2_mem2mem,bcm2835_isp
videodev 323584 21 v4l2_async,bcm2835_codec,v4l2_fwnode,bcm2835_unicam_legacy,imx219,videobuf2_v4l2,bcm2835_v4l2,v4l2_mem2mem,bcm2835_isp
ecdh_generic 16384 1 bluetooth
ecc 40960 1 ecdh_generic
rfkill 36864 6 bluetooth,cfg80211
libaes 16384 3 aes_arm64,bluetooth,aes_generic
videobuf2_common 77824 9 bcm2835_codec,bcm2835_unicam_legacy,videobuf2_vmalloc,videobuf2_dma_contig,videobuf2_v4l2,bcm2835_v4l2,v4l2_mem2mem,videobuf2_memops,bcm2835_isp
mc 69632 13 v4l2_async,videodev,bcm2835_codec,bcm2835_unicam_legacy,imx219,videobuf2_v4l2,videobuf2_common,v4l2_mem2mem,bcm2835_isp
snd_bcm2835 24576 0
raspberrypi_gpiomem 12288 0
uio_pdrv_genirq 12288 0
uio 20480 1 uio_pdrv_genirq
sch_fq_codel 24576 2
i2c_dev 16384 0
zram 40960 1
lz4_compress 24576 1 zram
fuse 172032 5
nfnetlink 20480 1
ip_tables 32768 0
x_tables 53248 1 ip_tables
ipv6 598016 54
vc4 405504 8
snd_soc_hdmi_codec 20480 1
drm_display_helper 24576 1 vc4
cec 53248 1 vc4
drm_dma_helper 24576 1 vc4
drm_kms_helper 233472 2 drm_dma_helper,vc4
drm 675840 9 drm_kms_helper,drm_dma_helper,vc4,drm_display_helper
drm_panel_orientation_quirks 28672 1 drm
snd_soc_core 307200 2 vc4,snd_soc_hdmi_codec
snd_compress 20480 1 snd_soc_core
snd_pcm_dmaengine 16384 1 snd_soc_core
snd_pcm 151552 5 snd_bcm2835,snd_soc_hdmi_codec,snd_compress,snd_soc_core,snd_pcm_dmaengine
snd_timer 36864 3 snd_seq,snd_hrtimer,snd_pcm
snd 118784 10 snd_seq,snd_seq_device,snd_bcm2835,snd_soc_hdmi_codec,snd_timer,snd_compress,snd_soc_core,snd_pcm
i2c_mux_pinctrl 12288 0
backlight 24576 2 drm_kms_helper,drm
i2c_mux 16384 1 i2c_mux_pinctrl
i2c_bcm2835 16384 1
Weirdly, I did not get any extra info with the more verbose logging:
iex(1)> cmd("modprobe imx219")
0
iex(2)> cmd("LIBCAMERA_LOG_LEVELS=*:DEBUG libcamera-jpeg --list-cameras")
No cameras available!
0
Also, I was able to “fix” this issue (I don’t know if this fix is the right way to do it, but I figured I would include the details here in case it proves to be helpful). I cloned the nerves_system_rpi0_2 repo and made the following change to linux-6.12.defconfig.
-CONFIG_VIDEO_BCM2835_UNICAM=m
+CONFIG_VIDEO_BCM2835_UNICAM_LEGACY=m
I made a new nerves app just with mix nerves.new hello_nerves, and then I pointed to my local copy of nerves_system_rpi0_2 and compiled the firmware from there.
After this I still had to load the unicam driver manually (cmd("modprobe bcm2835_unicam"), but after that I was able to see the camera show up and take pictures. Again, totally unsure of how helpful this is, just thought I’d mention it in case it is useful.