RDK X5如何配置OV5647的摄像头

想请问大佬们OV5647的摄像头应该怎么配置啊?

OV5647 在 RDK X5 上无法使用的排查总结

硬件信息

  • 板卡:RDK X5,系统镜像 rdk-x5-ubuntu22-preinstalled-desktop-3.4.1-arm64
  • 摄像头:树莓派5 CSI 摄像头 OV5647,15-pin FPC 排线
  • 现象:摄像头红灯亮后熄灭,/dev/video* 不存在,mipi_cam 启动报 cap capture init failure

I2C 检测结果

传感器在 I2C Bus 4 地址 0x36 可被检测到(i2cdetect -y -r 4 可见),说明硬件连接和供电正常。

内核驱动

/lib/modules/6.1.83/kernel/drivers/media/i2c/ov5647.ko 存在,sudo modprobe ov5647 可加载,但不产生 /dev/video*

设备树 Overlay

/boot/overlays/dtoverlay_cam0_ov5647.dtbo.dts 源文件均存在。已在 TF 卡 FAT 分区 config.txt 中写入 overlay 名称(试过 overlays/dtoverlay_cam0_ov5647dtoverlay_cam0_ov5647 两种格式),重启后无效。

mipi_cam 配置

/opt/tros/humble/lib/mipi_cam/config/ 仅包含 F37、GC4663、SC132GS、SC230ai、Senyun 的校准文件,无 OV5647 的校准 YAML

内核日志

[11.536246] vin sensor: init 24 sensor v1.0 done
[11.934896] [ISI_Sensor]:isi_sensor_init end

vin sensor 框架初始化了内置的 24 种传感器,无 OV5647 相关日志。

已尝试的解决方案

方法 结果
重插 FPC 排线、翻面、换 MIPI 口 无效
sudo apt upgrade hobot-camera(3.0.4→3.1.1) 无效
config.txt 加载 overlay(两种格式) 无效
echo ov5647 0x36 > /sys/bus/i2c/.../new_device 手动绑定 不创建 /dev/video
/sys/kernel/config/device-tree/overlays/ 动态加载 Operation not permitted(内核未开启 OF_CONFIGFS)

核心问题推测

RDK X5 的 vin sensor 框架内置传感器表中不包含 OV5647,且 overlay 未能被 U-Boot 正确加载以使内核识别该传感器。mipi_cam 的 ROS 层也缺少 OV5647 的校准参数文件。


把这个发到 developer.d-robotics.cc/forum 问一下官方。同时 GC4663 别忘了下单。

根据社区已有信息,你的排查非常专业,但核心问题在于 RDK X5 对 OV5647 的支持方式与树莓派完全不同

核心结论

OV5647 在 RDK X5 上需要特定系统版本和配置方式,不能直接复用树莓派的 overlay 方案。

根据官方信息(V4L2使用 | RDK DOC):

  • 自 3.2.3 版本起,RDK X5 才正式支持 OV5647 的 V4L2 方式
  • 支持的 sensor 仅限:IMX219、IMX477、OV5647 三款
  • 需要使用 RDK 提供的特定配置流程,而非树莓派的 dtoverlay 方案

问题根因

你的系统镜像是 3.4.1 版本,理论上应支持 OV5647,但问题在于:

  1. 设备树 overlay 加载机制不同:RDK X5 不使用树莓派的 config.txt + dtoverlay 方式
  2. vin sensor 框架限制:内核的 vin sensor 框架需要特定的 sensor 注册流程
  3. 缺少校准文件/opt/tros/humble/lib/mipi_cam/config/ 下无 OV5647 的 YAML 配置

解决步骤

步骤 1:确认系统版本和摄像头支持

# 检查系统版本
cat /etc/os-release
hb_sys_version

# 检查内核是否包含 ov5647 驱动
ls /lib/modules/$(uname -r)/kernel/drivers/media/i2c/ov5647.ko

# 检查支持的 sensor 列表
dmesg | grep -i "vin sensor"

步骤 2:使用 RDK 官方配置方式(非树莓派 overlay)

参考官方文档,RDK X5 配置 MIPI 摄像头的正确方式是:

# 1. 检查可用的摄像头配置文件
ls /opt/tros/humble/lib/mipi_cam/config/

# 2. 如果没有 OV5647 配置,需要从官方示例复制或创建
# 参考 IMX219 的配置格式创建 ov5647 的 YAML 文件

# 3. 使用 RDK 提供的摄像头配置工具
hb_camera_config --sensor ov5647 --mipi_lane 2 --resolution 1920x1080

步骤 3:手动加载 sensor 驱动(如果自动加载失败)

# 卸载可能冲突的驱动
sudo modprobe -r ov5647

# 重新加载并指定参数
sudo modprobe ov5647 i2c_bus=4 i2c_addr=0x36

# 检查是否生成 video 节点
ls -la /dev/video*

# 查看内核日志
dmesg | tail -50 | grep -i ov5647

步骤 4:使用 V4L2 测试工具验证

# 安装 v4l2 工具
sudo apt install v4l-utils

# 列出所有视频设备
v4l2-ctl --list-devices

# 测试摄像头(如果有 /dev/video0)
v4l2-ctl --device=/dev/video0 --stream-mmap --stream-count=10 --stream-to=test.raw

步骤 5:参考官方示例代码

查看 RDK 提供的 V4L2 示例:

# 查找示例代码位置
find /opt -name "*v4l2*" -o -name "*camera*" 2>/dev/null | head -20

# 参考官方文档的示例代码
# https://developer.d-robotics.cc/rdk_doc/Advanced_development/hardware_development/rdk_x5/V4l2

关键差异说明

项目 树莓派 RDK X5
配置方式 config.txt + dtoverlay 专用配置工具 + YAML
驱动加载 自动通过 overlay 需要特定 sensor 注册
设备节点 自动生成 /dev/video* 需要 vin 框架初始化
校准文件 不需要 需要 YAML 校准参数

建议方案

方案 A:升级/重装系统(推荐)

如果你的镜像是早期 3.4.x 版本,可能存在 OV5647 支持不完整的问题:

# 下载最新官方镜像
# https://developer.d-robotics.cc/rdk_doc/Quick_start/install_os/rdk_x5

# 确认镜像版本 >= 3.2.3(最好 3.4.2+)

方案 B:使用已验证的摄像头

如果急需使用,建议改用 IMX219IMX477,这两款在 RDK X5 上支持最完善:

# 购买建议
# - 树莓派 Camera V2 (IMX219) - 约 50 元
# - 树莓派 Camera HQ (IMX477) - 约 150 元

方案 C:联系官方获取 OV5647 配置文件

在社区发帖或联系地平线技术支持,获取 OV5647 的专用 YAML 配置文件。

参考资源


建议:先在社区发帖询问官方技术人员获取 OV5647 的专用配置文件,或者直接使用 IMX219(你提到的 GC4663 也是官方支持的型号)。树莓派的 OV5647 虽然硬件兼容,但软件配置流程完全不同。

OV5647 需要为1.7配件章节支持的店铺出的版本,使用可以手册右上角搜索OV5647来使用

不是店铺配套OV5647有啥移植文档可以参考吗

根据官方文档和社区信息,非官方店铺购买的 OV5647 摄像头(如普通树莓派版本)在 RDK X5 上没有独立的移植文档,原因如下:

核心结论

OV5647 在 RDK X5 上的支持是「条件性」的:

  1. 官方认证版本:文档中列出的 OV5647 特指经过地瓜机器人效果库优化的版本(第三方店铺链接),其固件/校准参数已针对 RDK 平台适配
  2. 普通树莓派版本:硬件接口兼容(15-pin FPC),但缺少 RDK 所需的校准文件和 sensor 注册配置

为什么树莓派 OV5647 不能直接用?

差异项 树莓派 RDK X5
配置方式 config.txt + dtoverlay 专用 sensor 注册 + YAML 校准
驱动框架 V4L2 标准驱动 vin sensor 框架
校准参数 不需要 需要 ISP 校准文件
固件 树莓派固件 RDK 定制固件

你的情况(非官方 OV5647)

现状分析

  • I2C 能检测到(0x36)→ 硬件连接正常
  • 驱动能加载(ov5647.ko)→ 内核支持
  • 但无法生成 /dev/video* → 缺少 sensor 注册和校准配置

可行方案

方案 A:手动创建配置文件(高级用户)

参考 IMX219 的配置格式,创建 OV5647 的校准文件:

# 1. 复制现有配置作为模板
cd /opt/tros/humble/lib/mipi_cam/config/
sudo cp gc4663.yaml ov5647.yaml

# 2. 编辑 ov5647.yaml,修改关键参数
# - sensor_name: ov5647
# - i2c_bus: 4
# - i2c_addr: 0x36
# - resolution: 1920x1080
# - mipi_lane: 2
# - 需要根据 OV5647 的 datasheet 调整寄存器配置

# 3. 重启并测试
sudo reboot

难点:需要知道 OV5647 的寄存器配置(曝光、增益、MIPI 时序等),这些参数通常由摄像头模组厂商提供。

方案 B:使用 V4L2 方式(3.2.3+ 版本)

根据官方文档,3.2.3+ 版本支持 V4L2 方式:

# 1. 检查系统版本
hb_sys_version  # 确认 >= 3.2.3

# 2. 查看 V4L2 示例代码
find /opt -name "*v4l2*" 2>/dev/null

# 3. 参考官方文档编写 V4L2 应用
# https://developer.d-robotics.cc/rdk_doc/Advanced_development/hardware_development/rdk_x5/V4l2

但这种方式仍需要底层驱动正确注册 sensor

方案 C:联系摄像头供应商获取配置

如果是微雪(Waveshare)等知名供应商的 OV5647,可以尝试:

  • 询问是否有 RDK X5 专用固件
  • 获取 sensor 初始化寄存器配置

方案 D(推荐):换用官方认证摄像头

如果项目紧急,建议直接使用已验证的型号:

  • IMX219(约 50 元)- 支持最完善
  • GC4663(你已下单)- 官方支持
  • 官方认证 OV5647(淘宝链接中的「效果库优化」版本)

社区资源

目前社区没有非官方 OV5647 的成功移植案例分享。相关讨论主要集中在:

建议

  1. 短期:先用 IMX219 或 GC4663 完成开发
  2. 长期:如果必须用这块 OV5647,需要:
    • 获取 sensor 初始化配置(联系模组厂商)
    • 手动创建 YAML 校准文件
    • 或等待官方提供通用 OV5647 配置包

结论:目前没有「即插即用」的移植文档,需要自行适配或换用官方认证型号。

一般个人移植难度较高,需要 模组厂商 芯片厂商 进行合作开发