嘉楠科技
直播中

王艳

8年用户 1372经验值
私信 关注
[问答]

01stdio开发板运行uvc demo设备管理器有设备但是相机打不开怎么解决?

大核启动

小核启动,已经执行./canaan-camera.sh start otg0然后是用37配置 CSI0和1接口上面都有OV5647

设备管理器

相机

potplayer直接识别不到


回帖(1)

郑成枝

2025-7-25 18:12:55

针对您在01stdio开发板上运行UVC demo时设备管理器可见但相机无法打开的问题,以下是逐步解决方案:




关键原因分析



  1. UVC gadget驱动配置问题

    OTG接口未正确配置为USB摄像头设备(gadget模式)。

  2. 摄像头配置错误

    canaan-camera.sh可能未正确初始化OV5647摄像头或CSI接口。

  3. 资源冲突或硬件连接

    多摄像头(CSI0/CSI1)存在资源冲突,或OV5647未正常供电/连接。

  4. Windows驱动/软件兼容性

    PotPlayer等软件可能无法自动识别原始UVC设备。




解决方案步骤


1. 确认OTG接口配置




  • 检查当前USB模式

    执行以下命令确认OTG0处于gadget(设备)模式:


    cat /sys/devices/platform/10380000.usb/dwc3_mode

    输出应为 gadget,若不是则切换模式:


    echo gadget > /sys/devices/platform/10380000.usb/dwc3_mode



  • 重新加载UVC驱动

    卸载并重新加载内核模块:


    rmmod g_webcam
    modprobe g_webcam



2. 校准摄像头初始化




  • 手动配置OV5647

    使用sensor_init工具直接初始化摄像头:


    # 初始化CSI0接口的OV5647
    sensor_init -c 0 -s ov5647 -m 0 -i 1



  • 验证摄像头识别

    检查摄像头是否被内核识别:


    dmesg | grep -i "camera|ov5647|csi"

    预期输出:


    [    5.123456] ov5647: Probing OV5647 camera on CSI0



3. 调试UVC数据流




  • 启用UVC日志

    加载驱动时开启调试信息:


    rmmod g_webcam
    modprobe g_webcam debug=1

    查看日志:dmesg | grep uvcvideo




  • 测试摄像头数据

    通过v4l2工具检查原始数据流:


    v4l2-ctl --list-devices
    v4l2-ctl -d /dev/video0 --stream-mmap



4. 解决资源冲突




  • 禁用多余摄像头接口

    若CSI0和CSI1同时连接OV5647,保留一个摄像头:


    # 关闭CSI1接口
    ./canaan-camera.sh stop csi1

    或修改脚本仅启用单摄像头:


    // 在 canaan-camera.sh 中修改
    case "$1" in
    start)
      # 仅初始化CSI0
      sensor_init -c 0 -s ov5647 ...
      ;;
    esac



  • 检查硬件连接

    确保OV5647:



    • 正确接入CSI0接口

    • 供电正常(测量3.3V电源)

    • I²C通讯正常(测量SCL/SDA电压)




5. 解决Windows兼容性问题




  • 强制安装WinUSB驱动(设备管理器)  



    1. 右击设备 → 更新驱动

    2. 选择浏览我的电脑以查找驱动

    3. 输入路径:C:WindowsSystem32DriverStoreFileRepositorywinusb.inf_amd64_...

    4. 选择WinUSB Device




  • 使用UVC兼容软件测试  



    • AMCap(直接显示UVC流)

    • OBS Studio(添加“视频捕获设备”)






最终验证步骤



  1. 开发板端执行
    # 初始化摄像头
    sensor_init -c 0 -s ov5647 -m 0 -i 1
    # 启动UVC设备
    ./camera_uvc_app -d /dev/video0 -u 0

  2. Windows端操作

    • 打开设备管理器 → 确认设备显示为 “WinUSB Device”

    • 使用AMCap → 选择该设备 → 查看实时画面





补充说明



  • 大核/小核启动影响

    如问题在大小核切换后出现,检查内核驱动是否编译为模块(非内置),并在启动时加载:
    # 在启动脚本中加载模块
    echo gadget > /sys/class/usb/dwc3_mode
    modprobe g_webcam

  • 脚本修复参考

    修改canaan-camera.sh的OTG启动部分:
    case "$1" in
    start)
      sensor_init -c 0 -s ov5647 -m 0 -i 1  # 显式指定OV5647
      ;;
    esac


按以上步骤操作后,UVC摄像头应可正常在Windows端输出视频流。若仍存在问题,建议抓取完整的内核日志(dmesg)进一步分析。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分