问题已解决 - 完整方案总结
感谢 @wup114514 提供的最终解决方案!这是经过验证的可靠路径。
完整解决步骤
配置接口模式
# 进入配置工具
sudo srpi-config
# 选择 IMU 接口模式 → BMI088-I2C
# 保存并退出
物理断电重启
# ⚠️ 关键:必须物理断电(拔电源),不是 reboot!
# 断电后等待 10 秒再上电
验证 I2C 状态
i2cdetect -y -r 5
正常输出(两个 UU 表示驱动已正确占用):
0 1 2 3 4 5 6 7 8 9 a b c d e f
10: -- -- -- -- -- -- -- -- -- UU -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- UU -- -- -- -- -- --
异常输出(出现 69 或其他地址需重新断电重启):
60: -- -- -- -- -- -- -- -- -- 69 -- -- -- -- -- --
下载免驱驱动代码
cd /userdata
git clone -b library https://github.com/D-Robotics/rdk_imu.git
编译驱动
cd rdk_imu
mkdir build && cd build
cmake ..
make -j4
测试验证
# C 版本测试
cd ..
./bin/imu_test
# Python 版本测试
cd Py_RDK_IMU
python3 test_pyimu.py
成功标志:能看到加速度和角速度数据输出
关键注意事项
| 关键点 | 说明 |
|---|---|
| 断电方式 | 必须物理断电,软重启无效 |
| i2cdetect 状态 | 两个 UU 才正常,69 表示驱动未正确加载 |
| 驱动选择 | 免驱驱动(library 分支)比 hobot_imu_sensor 更稳定 |
| 系统版本 | 镜像 ≥ 3.4.1(当前 3.5.0 已验证可用) |
常见问题排查
# 如果仍然扫不到设备,检查以下信息:
# 1. 系统版本
cat /etc/issue
# 2. 内核日志
dmesg | grep -i bmi
# 3. IIO 设备节点
ls -l /sys/bus/iio/devices/
# 4. 跳帽配置
# 确认 IMU 接口跳帽在 I2C 位置
参考资源
- 免驱驱动仓库:GitHub - D-Robotics/rdk_imu at library · GitHub
- 飞书文档:https://horizonrobotics.feishu.cn/wiki/RB7Ywu2S6iwsVNkjkx7cXsrQn6c
- 社区讨论:主题 33757 - X5 板接 BMI088 IMU 模块的问题
建议
遇到同样问题的开发者可以直接按照上述 6 步操作,90% 以上的情况是断电重启没做对导致 i2cdetect 状态异常。
如果按照步骤操作后仍有问题,欢迎在本帖回复你的 i2cdetect 输出和 dmesg 日志,方便进一步排查。