You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AOSP构建中外接USB摄像头Camera2 API启用及故障排查

如何在AOSP构建中为外接USB摄像头启用Camera2 API?

我已完成以下操作:

  1. 确认内核已开启UVC设备支持

    CONFIG_USB_VIDEO_CLASS=y
    CONFIG_MEDIA_USB_SUPPORT=y
    
  2. 在.mk文件(aosp13r76/device/google/tangorpro/device-tangorpro.mk)中添加外接摄像头配置文件及库

    # External Camera
    # Camera configuration file. Shared by passthrough/binderized camera HAL
    PRODUCT_PACKAGES += android.hardware.camera.provider@2.4-impl
    # Enable binderized camera HAL
    PRODUCT_PACKAGES += android.hardware.camera.provider@2.4-service
    # Enable external USB camera
    PRODUCT_PACKAGES += android.hardware.camera.provider@2.4-external-service
    PRODUCT_COPY_FILES += \
        device/google/tangorpro/external_camera_config.xml:$(TARGET_COPY_OUT_VENDOR)/etc/external_camera_config.xml
    
  3. 在设备清单(aosp13r76/device/google/tangorpro/manifest.xml)中添加外接摄像头提供者名称

    <hal format="hidl">
       <name>android.hardware.camera.provider</name>
       <transport>hwbinder</transport>
       <version>2.4</version>
       <interface>
          <name>ICameraProvider</name>
          <instance>external/0</instance>
          <instance>legacy/0</instance>
          </interface>
    </hal>
    
  4. 添加外接摄像头配置文件aosp13r76/device/google/tangorpro/external_camera_config.xml

    <ExternalCamera>
        <Provider>
            <ignore> <!-- Internal video devices to be ignored by external camera HAL -->
                <id>0</id> <!-- No leading/trailing spaces -->
                <id>1</id>
            </ignore>
        </Provider>
        <!-- See ExternalCameraUtils.cpp for default values of Device configurations below -->
        <Device>
            <!-- Max JPEG buffer size in bytes-->
            <MaxJpegBufferSize bytes="3145728"/> <!-- 3MB (~= 1080p YUV420) -->
            <!-- Size of v4l2 buffer queue when streaming >= 30fps -->
            <!-- Larger value: more request can be cached pipeline (less janky)  -->
            <!-- Smaller value: use less memory -->
            <NumVideoBuffers count="4"/>
            <!-- Size of v4l2 buffer queue when streaming < 30fps -->
            <NumStillBuffers count="2"/>
    
            <!-- List of maximum fps for various output sizes -->
            <!-- Any image size smaller than the size listed in Limit row will report
                fps (as minimum frame duration) up to the fpsBound value. -->
            <FpsList>
                <!-- width/height must be increasing, fpsBound must be decreasing-->
                <Limit width="640" height="480" fpsBound="30.0"/>
                <Limit width="1280" height="720" fpsBound="15.0"/>
                <Limit width="1920" height="1080" fpsBound="10.0"/>
                <!-- image size larger than the last entry will not be supported-->
            </FpsList>
        </Device>
    </ExternalCamera>
    
  5. 在Pixel平板上刷入AOSP及内核构建版本

执行上述步骤后,外接摄像头未被识别,Camera2 API仍仅访问内置摄像头,求解决方案。


排查与解决方案

1. 验证内核UVC支持是否生效

刷入内核后连接USB摄像头,通过adb执行命令检查设备节点:

ls /dev/video*

若未出现新的videoX节点(如video2),说明内核驱动未正确加载,需补充检查:

  • 内核需额外开启CONFIG_MEDIA_CONTROLLER=y、CONFIG_VIDEO_V4L2=y、CONFIG_VIDEO_V4L2_SUBDEV_API=y配置
  • 确认设备树中USB主机端口已正确启用

2. 检查Camera HAL服务状态

通过adb查看外部Camera Provider服务是否运行:

adb shell ps -A | grep external-camera

若服务未启动,排查以下内容:

  • 确认android.hardware.camera.provider@2.4-external-service已打包进系统,执行adb shell ls /vendor/bin/hw/查看是否存在该二进制文件
  • 查看服务启动日志定位错误:
    adb shell logcat | grep camera.provider
    
    若出现权限问题,在.mk文件中补充配置文件权限:
    PRODUCT_COPY_FILES += \
        device/google/tangorpro/external_camera_config.xml:$(TARGET_COPY_OUT_VENDOR)/etc/external_camera_config.xml:root:root:0644
    

3. 修正External Camera配置文件

  • 确认<ignore>节点中的设备ID准确:通过adb shell v4l2-ctl --list-devices查看所有视频设备,将内置摄像头对应的ID加入忽略列表
  • 尝试移除FpsList节点使用默认配置,部分USB摄像头不支持自定义帧率限制

4. 确认Camera2 API兼容性

部分USB摄像头仅支持Legacy模式,可强制开启Camera2 API:

adb shell setprop persist.camera.HAL3.enabled 1

重启设备后再次测试。

5. 验证USB权限与供电

  • 使用带供电的USB hub确保摄像头获得足够电力
  • 检查USB主机模式是否启用:
    adb shell setprop sys.usb.config usbhost
    

内容的提问来源于stack exchange,提问作者mujeeb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 01:56:04