开发背景
在做其他平台时我们常用i2c-tools进行硬件设备的i2c通信调试,但在OpenUBMC平台暂时没有类似的工具,比较影响调试效率,因此我使用hwproxy组件提供的能力封装实现了i2c-tools中的i2cdetect和i2ctransfer,考虑到i2cdump、i2cget、i2cset的能力都可以由i2ctransfer替代实现,这里就没有做这三个工具了。
i2cdetect
注意事项
这里相较于通用版本,删除了-y参数,默认使用非交互模式
删除了-q和-r参数,因为hwproxy组件不提供SMBus quick write能力,默认使用SMBus read byte探测
使用说明
i2c bus扫描
使用
i2cdetect -l即可
i2c slave address扫描
使用i2cdetect [bus_number]即可
i2ctransfer
注意事项
这里相较于通用版本,删除了-y参数,默认使用非交互模式
删除了-f参数,因为hwproxy不涉及设备地址被驱动占用的问题
使用说明
i2c读写数据
以读取电源厂商为例
该命令表示向i2c-3的地址0x5c写入一个字节的数据0x99,然后读取7个字节,读取的数据为HUAWEI对应的ASCII码,说明读写正确。
工具导入方法
当前支持两种方式,一种是在构建HPM包时自动导入,另外一种是在环境中手动导入
构建导入HPM包(推荐)
项目首页 - bus_tools:Command line tool for accessing BMC bus resources, e.g. i2c - GitCode
该工具已经在社区建立组件仓库bus_tools,后续还会加入对hisport总线的支持
在manifest.yml中加入:
json
debug_dependencies:
- conan: bus_tools/1.0.2@openUBMC.release/stable
然后使用bmcgo build -b openUBMC -r XXX构建就会带上该工具,release出包则不会带上该工具
PS:已上传社区conan远端仓库openubmc_dev,也可以参考组件README编译构建后生成本地缓存,或者上传你自己的conan远端
手动拷贝导入
SCP等将i2cdetect和i2ctransfer手动拷贝到OpenUBMC环境的/tmp路径
然后Telnet登录拷贝到/usr/sbin/等路径下,并加上执行权限
执行
使用i2cdetect或i2ctransfer(需要Telnet登录即root用户)
下载链接
论坛无法上传二进制程序作为附件,适用网盘分享:
链接: 百度网盘 请输入提取码 提取码: UBMC
12 个赞
感谢分享,可以报个议题在hardware-sig例会分享,我们再把工具放到代码仓,这样大家都可以下载使用。
1 个赞
zybwh
(张雨博)
2025 年7 月 28 日 07:53
3
hpm的话,不太建议做成hpm,因为hpm的核心是能在现网维护的时候提供快速的运维工具。然而一般现网运维需要的功能都应该集成到CLI里面。
通过scp传到 /tmp,然后拷到/data分区运行
还有关于分享的事情,可以考虑
1、使用网盘,创建分享链接(可能会有安全风险)
2、在社区接纳前,在gitcode个人空间创建源码仓,并使用发布功能上传编译好的二进制(更加社区类的玩法, 类似IPMITOOL那种发布 )
1 个赞
zybwh
(张雨博)
2025 年7 月 28 日 07:54
4
这个不太对哦,如果要贡献的话,建议来TC来申请一个仓单独存放。
工具类的话,CICD SIG可能会比hardware SIG更适合一些。
1 个赞
zybwh
(张雨博)
2025 年7 月 31 日 03:43
5
1 个赞
在manifest.yml中加入bus_tools之后hpm包编译不过去了怎么回事
从你截图的报错来看,似乎与bus_tools无关,建议:
1、去掉bus_tools后再构建看看有没有报错
2、提供完整的打印日志
喔,问题是因为bus_tools还没有上传到openubmc_dev这个官方conan仓库,我没有权限上传,我得去找人处理一下
临时解决方案:
在你本地下载后使用bingo构建,生成本地conan缓存
bus_tools:Command line tool for accessing BMC bus resources, e.g. i2c - GitCode
aa01231
(aa01231)
2025 年12 月 30 日 07:05
11
把bus_tools 编入hpm包更新后,扫不到任何总线设备
提示如下,请问这样正常吗,如何能扫描到一个i2c设备?
~ ~ $ /usr/sbin/i2cdetect -l
i2c-1 i2c HIS i2c bit bus I2C adapter
i2c-11 i2c HIS i2c bit bus I2C adapter
i2c-2 i2c HIS i2c bit bus I2C adapter
i2c-3 i2c HIS i2c bit bus I2C adapter
i2c-4 i2c HIS i2c bit bus I2C adapter
i2c-5 i2c HIS i2c bit bus I2C adapter
i2c-6 i2c HIS i2c bit bus I2C adapter
i2c-7 i2c HIS i2c bit bus I2C adapter
i2c-8 i2c HIS i2c bit bus I2C adapter
~ ~ $
~ ~ $ /usr/sbin/i2cdetect 1
Error: Could not open I2C device
~ ~ $ /usr/sbin/i2cdetect 2
Error: Could not open I2C device
~ ~ $ /usr/sbin/i2cdetect 3
Error: Could not open I2C device
~ ~ $ /usr/sbin/i2cdetect 4
Error: Could not open I2C device
~ ~ $ /usr/sbin/i2cdetect 5
Error: Could not open I2C device
~ ~ $ /usr/sbin/i2cdetect 6
Error: Could not open I2C device
~ ~ $ /usr/sbin/i2cdetect 7
Error: Could not open I2C device
~ ~ $ /usr/sbin/i2cdetect 8
Error: Could not open I2C device
~ ~ $ /usr/sbin/i2cdetect 9
Error: Could not open I2C device
~ ~ $ /usr/sbin/i2cdetect 11
Error: Could not open I2C device
你应该是ssh登录使用,没有root权限操作不了/dev/i2c导致报错
需要使用telnet登录才有root权限
aa01231
(aa01231)
2025 年12 月 30 日 08:10
13
我升级到2509版本后,就不能telnet上去了
ssh可以登录,
telnet一直连接不上,请问升级后重新设置ip, telnet需要重新配置吗
aa01231
(aa01231)
2025 年12 月 30 日 08:26
14
应该是我没的把telnet相关工具打包成到hpm,需要重新打包busybox
chain914
(芯网动力-chain)
2026 年2 月 13 日 08:08
15
请问现在bingo build时能顺利使用这个bus_tools代码仓么?使用的25.12版本,遇到以下2个问题没法使用这个工具。
问题1:bus_tools/1.0.4@openubmc/stable编译不过。
问题2:bingo build时“connan download”把“bus_tools/1.0.2@openUBMC.release/stable”中的大写字母“UBMC”转成小写字母“ubmc”,在conan仓中就找不到匹配的软件包,下载失败。
【补充】
【已解决构建问题】:使用“bus_tools/1.0.4@openubmc.dev/dev ”
【上板运行问题】执行“/usr/sbin/i2cdetect”无任何回显
问题1描述:
25.12版本的init.py中的conan_config()只放了‘openubmc_sdk’和‘openubmc_opensource’两个conan仓,通过“conan search bus_tools -r openubmc_opensource”只看到版本“bus_tools/1.0.4@openubmc/stable”
修改“build/product/BMC/openUBMC/manifest.yml”,增加:
debug_dependencies:
conan: bus_tools/1.0.4@openubmc/stable
最后是编译不过,查看所有/root/.conan2/p/b/bus_t*/b目录下都没有src子目录:
问题2描述:
step1:增加25.09中有的openbmc_dev仓,里面包含“bus_tools/1.0.2@openUBMC.release/stable”
step2:bingo build时无法下载包,因为包名称全被转成小写字母了
step3:手动下载“bus_tools/1.0.2@openUBMC.release/stable” 成功,但没作用:重新bingo build时还是去找“bus_tools/1.0.2@openubmc.release/stable”
已解决说明:
step1:独立clone、build成功
阅读《传感器适配指南 》时尝试了里面的克隆、build,发现可以编译,同时build输出log里使用的是“bus_tools/1.0.4@openubmc.dev”,如下
step2:修改manifest/build/product/BMC/openUBMC/manifest.yml,使用bus_tools/1.0.4@openubmc.dev/dev,在bingo build就过了
【上板运行问题】
telnet登录到设备,执行i2cdetect -l无任何回显(之前在哪篇帖子里说需要telnet登录后执行的)
将/usr/sbin/i2cdetect 拷贝到SSH登录的目录下:/data/trust/home/Administrator/i2cdetect1
SSH登录后,执行i2cdetect1 -l是OK的
2 个赞
ocy
(wuzhou-ouchangyun)
2026 年4 月 29 日 06:35
16
上板运行问题,也可以 telnet之后,执行一下source /etc/profile,再i2cdetect -l就有回显了
1 个赞