RDK X5 IMU Module 免驱驱动 无法扫描到imu设备

问题分析

根据你的日志,IMU驱动已加载(bmi08x_i2c_driver),设备节点/sys/bus/iio/devices/iio:device1存在,但sensor_init文件打开失败(ret: -1)。这通常意味着驱动初始化未完成权限/设备树配置问题


排查步骤

1. 检查驱动加载状态与内核日志

# 查看驱动加载详情
lsmod | grep bmi
dmesg | grep -i bmi08

# 重点检查是否有初始化失败日志
dmesg | grep -i "iio\|imu\|bmi"

预期:应看到bmi08x driver initialized等成功信息。若出现probe failedi2c transfer error,需检查硬件连接。

2. 验证设备树配置

# 检查I2C5是否启用
cat /proc/device-tree/hobot/x5-rdk-v1p0.dts | grep -A5 "i2c5"

# 确认IMU节点是否存在
cat /proc/device-tree/hobot/x5-rdk-v1p0.dts | grep -A10 "bmi088"

关键点:确保设备树中I2C5状态为okay,且BMI088节点地址正确(0x68/0x69)。

3. 检查sensor_init权限

# 查看文件权限
ls -l /sys/bus/iio/devices/iio:device1/sensor_init

# 尝试手动写入初始化命令(需root)
echo 1 > /sys/bus/iio/devices/iio:device1/sensor_init

若权限不足

chmod 666 /sys/bus/iio/devices/iio:device1/sensor_init

4. 确认系统镜像版本

# 检查镜像版本
cat /etc/issue

要求:系统版本需≥3.4.1(你当前为3.5.0,符合要求)。

5. 重新加载驱动

# 卸载驱动
sudo rmmod bmi08x_i2c_driver

# 重新加载
sudo modprobe bmi08x_i2c_driver

# 重启IMU服务
sudo systemctl restart imu_sensor

参考解决方案

社区中类似问题(主题33757)的解决步骤:

  1. 确保跳帽正确(I2C模式)。
  2. 断电重启(非软重启)以重置I2C总线。
  3. 使用官方最新驱动(rdk_imu库)。

下一步建议

  1. 执行上述步骤1和2,提供dmesg日志和设备树片段。
  2. 若问题依旧,尝试更换IMU模块或测试其他I2C设备(如i2cdetect -y 5)。
  3. 参考飞书文档确认硬件连接图(RB7Ywu2S6iwsVNkjkx7cXsrQn6c)。

需要进一步协助请提供dmesg | grep -i bmi输出结果。