想请问大佬们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_ov5647 和 dtoverlay_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,但问题在于:
- 设备树 overlay 加载机制不同:RDK X5 不使用树莓派的
config.txt + dtoverlay 方式
- vin sensor 框架限制:内核的
vin sensor 框架需要特定的 sensor 注册流程
- 缺少校准文件:
/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:使用已验证的摄像头
如果急需使用,建议改用 IMX219 或 IMX477,这两款在 RDK X5 上支持最完善:
# 购买建议
# - 树莓派 Camera V2 (IMX219) - 约 50 元
# - 树莓派 Camera HQ (IMX477) - 约 150 元
方案 C:联系官方获取 OV5647 配置文件
在社区发帖或联系地平线技术支持,获取 OV5647 的专用 YAML 配置文件。
参考资源
建议:先在社区发帖询问官方技术人员获取 OV5647 的专用配置文件,或者直接使用 IMX219(你提到的 GC4663 也是官方支持的型号)。树莓派的 OV5647 虽然硬件兼容,但软件配置流程完全不同。
OV5647 需要为1.7配件章节支持的店铺出的版本,使用可以手册右上角搜索OV5647来使用
根据官方文档和社区信息,非官方店铺购买的 OV5647 摄像头(如普通树莓派版本)在 RDK X5 上没有独立的移植文档,原因如下:
核心结论
OV5647 在 RDK X5 上的支持是「条件性」的:
- 官方认证版本:文档中列出的 OV5647 特指经过地瓜机器人效果库优化的版本(第三方店铺链接),其固件/校准参数已针对 RDK 平台适配
- 普通树莓派版本:硬件接口兼容(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 的成功移植案例分享。相关讨论主要集中在:
建议
- 短期:先用 IMX219 或 GC4663 完成开发
- 长期:如果必须用这块 OV5647,需要:
- 获取 sensor 初始化配置(联系模组厂商)
- 手动创建 YAML 校准文件
- 或等待官方提供通用 OV5647 配置包
结论:目前没有「即插即用」的移植文档,需要自行适配或换用官方认证型号。
一般个人移植难度较高,需要 模组厂商 芯片厂商 进行合作开发