RDK S100 无法识别Camera GS130W

运行测试程序无法识别到我的GS130W相机

根据你提供的错误日志和照片,我来帮你分析问题:

问题诊断

从错误日志可以看到关键信息:

WARN: Sensor Name: ov8x83d-30fps, Expected Chip ID: 0xCB34, Actual Chip ID Read: 0x00
WARN: Sensor Name: ov8x83d-30fps, Expected Chip ID: 0xCB34, Actual Chip ID Read: 0x00
ERROR [openCamera][0310]No camera sensor found, please check whether the camera connection or video_idx is correct.

核心问题:系统检测到摄像头传感器,但读取到的 Chip ID 是 0x00(应该是 0xCB34),说明 I2C 通信失败。

可能原因

  1. 摄像头排线接触不良 - 从照片看排线连接可能有问题
  2. 拨码开关设置错误 - S100 的 MIPI 摄像头需要正确设置拨码
  3. 摄像头供电异常 - 摄像头可能没有正常上电
  4. I2C 总线冲突 - 多个设备占用同一 I2C 地址

排查步骤

1. 检查硬件连接

# 重新插拔摄像头排线,确保完全插入
# 检查排线金手指是否氧化,可用橡皮擦轻轻擦拭

从你的照片看,摄像头排线似乎没有完全插入,请确保:

  • 排线完全插入 MIPI CSI 接口
  • 卡扣已经扣紧
  • 排线方向正确(金手指朝向正确)

2. 检查拨码开关

S100 使用 MIPI 摄像头需要设置拨码开关:

  • SW1 拨码:根据使用的 MIPI 接口设置
  • 如果使用 CSI0:拨码设置参考官方文档

请提供你的拨码开关当前设置照片。

3. 检测 I2C 设备

# 检测 I2C 总线 1 上的设备
i2cdetect -y 1

# 查看摄像头是否在 0x10 地址
# GS130W 的 I2C 地址通常是 0x10

4. 检查系统版本

# 查看当前系统版本
cat /etc/rdk_version

# 建议升级到最新版本(4.0.4+)

5. 尝试其他测试程序

# 尝试使用 TROS 的 MIPI 摄像头 demo
cd /app/tros_demo/camera
python mipi_camera_test.py

建议操作顺序

  1. 重新插拔摄像头排线(最可能的问题)
  2. 确认拨码开关设置正确
  3. 运行 i2cdetect -y 1 查看是否能检测到设备
  4. 提供拨码开关照片,我帮你确认设置

参考案例

社区有类似问题可以参考:RDK S100 mipi 摄像头 demo 无法跑通

请先重新插拔排线并确认连接牢固,然后运行 i2cdetect -y 1 把结果发出来。

您好,有关双目的使用需要提供以下信息来协助排查:

  1. 硬件连接方式,清晰图像信息

  2. 参考使用的手册地址和链接

  3. 相关软件包信息,包括 系统镜像版本 和 软件包版本信息

  4. 具体的命令行操作步骤以及相关的日志打印信息

上面是硬件来你姐

这是参考地址:hobot_mipi_cam/README.md at develop · D-Robotics/hobot_mipi_cam
这是参考手册:

系统版本是 4.0.4.软件包信息您是指?
下面是根据教程的打印信息:

根据你提供的最新信息,我来帮你深入分析问题:

问题诊断

从错误日志看:

[ERROR] camera init failure
[ERROR] camera validation parameter failed
[ERROR] Can't find device: /dev/sunxi_mipi_csi0

核心问题:MIPI CSI 设备节点未创建成功,说明底层驱动未正确识别摄像头。

关键排查点

1. 拨码开关设置(最可能的问题)

从你的硬件连接照片看,使用的是 双 MIPI 摄像头。S100 的拨码开关需要正确设置:

MIPI 接口 SW1 拨码设置
CSI0 单目 1-ON, 2-OFF, 3-OFF, 4-OFF
CSI1 单目 1-OFF, 2-ON, 3-OFF, 4-OFF
CSI0+CSI1 双目 1-ON, 2-ON, 3-OFF, 4-OFF

请提供 SW1 拨码开关的清晰照片,确认设置是否正确。

2. 检查 I2C 通信

# 检测 I2C 总线上的摄像头设备
i2cdetect -y 1

# 应该能在 0x10 地址看到设备(GS130W 的 I2C 地址)
# 如果显示 -- 说明 I2C 通信失败

3. 检查设备树和驱动加载

# 查看 MIPI CSI 设备是否注册
ls -la /dev/sunxi_mipi_csi*

# 查看内核日志中的摄像头相关信息
dmesg | grep -i camera

# 查看 MIPI 相关日志
dmesg | grep -i mipi

4. 软件包信息

# 查看 hobot_mipi_cam 包版本
pip show hobot-mipi-cam

# 或查看已安装的包
pip list | grep hobot

建议操作顺序

  1. 确认拨码开关设置 → 提供清晰照片
  2. 运行 i2cdetect -y 1 → 查看 I2C 设备列表
  3. 运行 dmesg | grep -i camera → 查看内核日志
  4. 重新插拔排线 → 确保连接牢固

参考资源

请先运行以下命令并把结果发出来:

i2cdetect -y 1
dmesg | grep -i camera
ls -la /dev/sunxi_mipi_csi*

这样我能更准确地定位问题所在。

找到问题了,但是不知道怎么解决,是因为板子给的脚本总是寻找bus 4这个线路

但是s100 是在1和2下面,然后我改了寻找方式也不行,好像被写死在底层了,是编译的BUG吗?

问题分析

你发现的问题很关键!这不是编译 BUG,而是代码配置问题。

从日志可以看到:

Searching camera sensor on device: /proc/device-tree/soc/vcon@0 i2c bus: 4

问题根源:hobot_mipi_cam 库的默认配置是针对 RDK X5 平台的(I2C bus 4/6),而 S100 的 I2C bus 是 1/2。

解决方案

方案 1:修改配置文件(推荐)

查看 hobot_mipi_cam 的配置文件位置:

# 找到配置文件
find /usr -name "*.json" | grep -i camera
# 或
find /usr -name "*.yaml" | grep -i camera
# 或查看 Python 包的安装位置
pip show hobot-mipi-cam

通常在以下位置之一:

  • /usr/lib/python3/dist-packages/hobot_mipi_cam/config/
  • /etc/hobot/camera_config.json
  • 包内的 config.py 或 camera_cfg.py

修改 I2C bus 配置:

# 找到类似这样的配置并修改
# RDK X5 配置(错误)
I2C_BUS = 4  # 或 6

# 改为 RDK S100 配置(正确)
I2C_BUS = 1  # CSI0 使用 bus 1
# 或
I2C_BUS = 2  # CSI1 使用 bus 2

方案 2:使用环境变量覆盖

某些版本支持通过环境变量配置:

# 尝试设置环境变量
export MIPI_I2C_BUS=1
export CAM_TYPE=mipi

# 然后运行你的程序
python your_camera_test.py

方案 3:直接修改源码(临时方案)

如果找不到配置文件,可以直接修改 Python 包源码:

# 找到 hobot_mipi_cam 的安装位置
python3 -c "import hobot_mipi_cam; print(hobot_mipi_cam.__file__)"

# 编辑相关文件,搜索 "bus 4" 或 "i2c_bus" 并修改
sudo nano <找到的路径>

方案 4:使用官方推荐的 sample_pipeline(最稳定)

根据社区案例,官方推荐使用 sample_pipeline 来替代 pydev_demo:

# 参考官方文档
# https://developer.d-robotics.cc/rdk_doc/rdk_s/Advanced_development/multimedia_development/multimedia_application/sample_pipeline

# 使用 multi_pipe_vin_isp_ynr_pym_gdc_vpu 示例
cd /app/hbn_sample/sample_pipeline
./multi_pipe_vin_isp_ynr_pym_gdc_vpu

快速验证

先运行以下命令确认 I2C 设备:

# 确认 S100 的 I2C bus
i2cdetect -y 1  # CSI0
i2cdetect -y 2  # CSI1

# 查看设备树配置
cat /proc/device-tree/soc/vcon@0/i2c-bus
cat /proc/device-tree/soc/vcon@1/i2c-bus

建议操作顺序

  1. 先运行 i2cdetect -y 1 和 i2cdetect -y 2 确认摄像头在哪个 bus 上
  2. 查找 hobot_mipi_cam 的配置文件 并修改 I2C bus 设置
  3. 如果找不到配置文件,考虑使用 sample_pipeline 替代方案
  4. 将问题反馈到社区,帮助其他 S100 用户避免同样问题

请运行以下命令并把结果发出来:

python3 -c "import hobot_mipi_cam; print(hobot_mipi_cam.__file__)"
i2cdetect -y 1
i2cdetect -y 2

这样我可以帮你定位具体的配置文件位置。

hobot mipi 这个包在官方的源里面是有编译好的版本的,可以直接apt install

软件包版本其实指的就是 hobot_mipi_cam 这一类软件包的版本,自行编译的话可以看看cmakelist里面有没有对应的编译参数可选,