Luckfox Lyra Zero W 无法使用 USB UVC 摄像头

  • 您好,使用SDK 执行 ./build.sh kernel-config, 搜索并打开 CONFIG_MEDIA_USB_SUPPORT 和 CONFIG_USB_VIDEO_CLASS,如果可以直接按y选中编译烧录 boot.img即可,如果因为依赖问题只能按 m 选中需要重新编译 rootfs.img (.ko位于系统 /lib/modules)并烧录
  • 我不是专业开发人员,所以不太明白你说的,我使用的ubuntu22.04的镜像烧录到sd卡。
    然后在板子上使用
    git clone https://github.com/0xd61/luckfox-linux-6.1-rk3506
    克隆这个内核,然后根据ai提示输入了以下的命令:

    cd ~/linux
    make ARCH=arm clean
    sudo rm -f /lib/modules/6.1.99/uvcvideo.ko

    # 基础配置
    make ARCH=arm multi_v7_defconfig

    # 打开所有必须依赖(解决 Unknown symbol)
    scripts/config --enable CONFIG_THUMB2_KERNEL
    scripts/config --enable CONFIG_PREEMPT
    scripts/config --enable CONFIG_MEDIA_SUPPORT
    scripts/config --enable CONFIG_MEDIA_CAMERA_SUPPORT
    scripts/config --enable CONFIG_VIDEO_DEV
    scripts/config --enable CONFIG_VIDEO_V4L2
    scripts/config --enable CONFIG_VIDEO_V4L2_COMMON
    scripts/config --enable CONFIG_VIDEOBUF2_CORE
    scripts/config --enable CONFIG_VIDEOBUF2_VMALLOC
    scripts/config --enable CONFIG_VIDEOBUF2_DMA_CONTIG
    scripts/config --enable CONFIG_MEDIA_USB_SUPPORT
    scripts/config --enable CONFIG_USB_VIDEO_CLASS

    # 自动跳过配置弹窗(关键)
    yes "" | make ARCH=arm olddefconfig

    # 编译
    yes "" | make ARCH=arm modules_prepare
    yes "" | make ARCH=arm modules SUBDIRS=drivers/media/usb/uvc

    # 安装
    sudo cp drivers/media/usb/uvc/uvcvideo.ko /lib/modules/6.1.99/
    sudo depmod -a

    # 先加载依赖
    sudo modprobe videobuf2_vmalloc
    sudo modprobe videobuf2_dma_contig
    sudo modprobe videobuf2_core
    sudo modprobe v4l2_common

    # 最后加载 UVC
    sudo insmod /lib/modules/6.1.99/uvcvideo.ko

    # 验证
    lsmod | grep uvcvideo
    ls /dev/video*


    最终总是提示这样的内容:
    insmod: ERROR: could not insert module /lib/modules/6.1.99/uvcvideo.ko: Unknown symbol in module
    ls: cannot access '/dev/video*': No such file or directory


    因为ubuntu有git apt等工具,所以选择在ubuntu上尝试解决uvc的问题。

    我不知道这个sdk应该从哪里下载。希望能够告诉我大致的方法来解决这个问题。十分感谢!
  • 建议您先查看一下 wiki 中的说明 https://wiki.luckfox.com/Luckfox-Lyra, SDK 在网盘中提供,要编译需要在PC环境的ubuntu22.04(windows可以在虚拟机或者WSL下操作),不是在板端上的ubuntu
    这里有个内核版本已经开启了UVC支持,但是把大多数的 =m 驱动改成了 =y, 不一定能适配您的rootfs, 可以尝试烧录看看
    Attachments
    Downloaded 170 times
  • 我再wsl ubuntu 下 将Luckfox_Lyra_Zero_W_MicroSD_250717之中的update.img uboot.img rootfs.img MiniLoaderAll.bin 还有您提供的boot.img
    一起放到了~/output/firmware/ 文件夹中,然后使用 ~/.build.sh updateimg命令生成了update.img

    并且显示成功了。
    Add CRC...
    Make firmware OK!
    ------ OK ------
    ********rkImageMaker ver 2.23********
    Generating new image, please wait...
    Writing head info...
    Writing boot file...
    Writing firmware...
    Generating MD5 data...
    MD5 data generated successfully!
    New image generated successfully!



    当我把生成后的~/output/update/Image/update.img文件使用SDDiskTool_v1.78中的SD_Firmware_Tool.exe工具写入到sd卡,也成功了。
    但是Luckfox_Lyra_Zero_W板子启动后,还是没有uvc驱动。
    root@luckfox:~# ls /dev/video*
    ls: /dev/video*: No such file or directory
    root@luckfox:~# v4l2-ctl --list-devices
    -bash: v4l2-ctl: command not found
    root@luckfox:~# lsusb
    Bus 001 Device 001: ID 1d6b:0002
    Bus 001 Device 005: ID a69c:88dc
    Bus 001 Device 002: ID 1a86:8091
    Bus 001 Device 003: ID 1bcf:2c46
    root@luckfox:~# lsmod | grep uvcvideo
    root@luckfox:~# sudo modprobe uvcvideo
    -bash: sudo: command not found
    root@luckfox:~# modprobe uvcvideo
    modprobe: module uvcvideo not found in modules.dep

    从Bus 001 Device中看到是有摄像头的,但是还是没有uvc驱动。



    另外:
    我也试着自己使用Luckfox_Lyra_SDK_250815.tar工具尝试.build.sh 进行设置并编译。
    ./build.sh lunch 设置完成
    ./build.sh kernel-config 设置完成
    ./build.sh buildroot-config 设置完成
    最后执行./build.sh 生成了update.img
    但是烧录到sd卡,还是没有uvc相关的驱动,摄像头也无法识别出来。

    我的uvc摄像头是没有品牌的,但是我的手机MIUI14 android12是可以正常使用的.
    最初使用ubuntu的镜像就是因为它本身驱动相对完善,但是因为无法使用uvc摄像头,所以尝试编译内核,但是都失败了。

    请问还有什么办法吗?官方的系统有没有驱动比较全面的版本呢?求指教。
    Last edited by shiluo0827 on 2026-04-02 14:36, edited 2 times in total.
  • 找到解决办法了!!!方法是单独编译驱动文件。
    在wsl中的ubuntu系统中,到sdk(自行下载对应版本)的内核文件夹,执行以下命令。(前提是已经通过repo安装了sdk,并且安装了全部的依赖,包括Python2)

    administrator@PV-X00199943:~/kernel-6.1$ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf- prepare
    SYNC include/config/auto.conf.cmd
    CC scripts/mod/empty.o
    MKELF scripts/mod/elfconfig.h
    HOSTCC scripts/mod/modpost.o
    CC scripts/mod/devicetable-offsets.s
    HOSTCC scripts/mod/file2alias.o
    HOSTCC scripts/mod/sumversion.o
    HOSTLD scripts/mod/modpost
    CC kernel/bounds.s
    CC arch/arm/kernel/asm-offsets.s
    CALL scripts/checksyscalls.sh
    administrator@PV-X00199943:~/kernel-6.1$ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf- modules_prepare
    CALL scripts/checksyscalls.sh
    LDS scripts/module.lds
    administrator@PV-X00199943:~/kernel-6.1$ sed -i 's/# CONFIG_USB_VIDEO_CLASS is not set/CONFIG_USB_VIDEO_CLASS=m/' .config
    administrator@PV-X00199943:~/kernel-6.1$ sed -i 's/CONFIG_USB_VIDEO_CLASS=y/CONFIG_USB_VIDEO_CLASS=m/' .config
    administrator@PV-X00199943:~/kernel-6.1$ sed -i 's/# CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV is not set/CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=m/' .config
    administrator@PV-X00199943:~/kernel-6.1$ sed -i 's/# CONFIG_MEDIA_USB_SUPPORT is not set/CONFIG_MEDIA_USB_SUPPORT=y/' .config

    administrator@PV-X00199943:~/kernel-6.1$ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf- olddefconfig
    #
    # No change to .config
    #
    administrator@PV-X00199943:~/kernel-6.1$ cat .config | grep USB_VIDEO_CLASS
    CONFIG_USB_VIDEO_CLASS=m
    CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
    administrator@PV-X00199943:~/kernel-6.1$ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf- M=drivers/media/usb/uvc uvcvideo.ko
    CC [M] drivers/media/usb/uvc/uvc_driver.o
    CC [M] drivers/media/usb/uvc/uvc_queue.o
    CC [M] drivers/media/usb/uvc/uvc_v4l2.o
    CC [M] drivers/media/usb/uvc/uvc_video.o
    CC [M] drivers/media/usb/uvc/uvc_ctrl.o
    CC [M] drivers/media/usb/uvc/uvc_status.o
    CC [M] drivers/media/usb/uvc/uvc_isight.o
    CC [M] drivers/media/usb/uvc/uvc_debugfs.o
    CC [M] drivers/media/usb/uvc/uvc_metadata.o
    CC [M] drivers/media/usb/uvc/uvc_entity.o
    LD [M] drivers/media/usb/uvc/uvcvideo.o
    make[1]: 'drivers/media/usb/uvc/uvcvideo.mod' is up to date.
    MODPOST drivers/media/usb/uvc/Module.symvers
    CC [M] drivers/media/usb/uvc/uvcvideo.mod.o
    LD [M] drivers/media/usb/uvc/uvcvideo.ko
    administrator@PV-X00199943:~/kernel-6.1$ find . -name uvcvideo.ko
    # 出现下面内容代表单独的uvc驱动编译成功!
    ./drivers/media/usb/uvc/uvcvideo.ko
    #需要的可以下载此附件,但不保证有效,因为内核版本不一样可能导致此驱动无法使用。
    uvcvideo.rar (722.15 KiB)
    uvc.ko文件
    Downloaded 114 times
    #放入到板子驱动的路径
    /usr/lib/modules/6.1.99/kernel/drivers/usb/uvc/uvcvideo.ko

    #安装驱动
    insmod /usr/lib/modules/6.1.99/kernel/drivers/usb/uvc/uvcvideo.ko


    #查看驱动
    lsmod | grep uvcvideo
    #出现下面内容就代表 成功加载!
    uvcvideo 114688 0 - Live 0x...

    #查看摄像头
    ls /dev/video*
    #出现 /dev/video0 / /dev/video1 就完全正常了。
    #然后就可以使用摄像头了。

    #相应地,也可以通过此方式编译其它内核未预先编译的驱动文件。大部分应该是可以正常被驱动起来的。