ipmitool通过指令Get device id访问BMC是正常的,但是访问IPMB的设备一直无法访问;这个是硬件链接关系:
下图是IIC配置:
问题描述
通过busctl --user call bmc.kepler.ipmi_core /bmc/kepler/IpmiCore bmc.kepler.IpmiCore Request a{ss}yyyyyay 0 1 6 0x06 0 0x01 0x00指令访问MCU1,能正常通信,尝试用ipmitool 加参数-b 6 -t 134或者-b6 -t 0x86,都不能正常获取信息;

环境信息
-
操作系统:[如 Ubuntu 24.04]
-
软件版本:[如 OpenUBMC2506]
-
硬件配置:[如 CPU、内存等]
期望结果
预想的结果应该是该执行该指令后,返回MCU1的ID信息,与busctl执行的结果一致
实际结果
总线上都没有抓到数据,像是桥接指令没有正常发送出来
尝试过的解决方案
通过-vvv打印过程,并结合AI分析,给出的结论是
根因锁定:ipmi_core 的 LAN 命令层没有实现 Send Message(0x34) → IPMB 桥接。修这个要去 ipmi_core
的仓(不在当前工作区),有两个实现要点:
- 收到 0x34 后解析报文里的 channel=6、从机地址 0x86、内部 netfn/lun/cmd,走和 DBus Request 相同的内部路径,回包带回
RMCP+ 会话。
- 有个映射坑:DBus Request 是用 host_id 定位从机的,而 Send Message 带的是从机地址 0x86——ipmi_core 内部得有
channel+从机地址 → host 的反查(vpd 里已有这份配置,就是 appIpmbTarget TODO 2 说的那个配置域
由于没有找到ipmi_core组件源码,查看编译版本中,ipmi_core组件的版本信息为:
ipmi_core/1.70.39@openUBMC.release/rc
分析结论
请问这个应该怎么解决?可能是什么原因?
-vvv的完成显示见以下压缩文件:
ipmitool -vvv 显示.zip (1.7 KB)
答案内容由AI生成,仅供参考:
总结:您的问题极有可能是由 ipmitool 参数使用错误导致的。请优先尝试 -b 6 -t 134 的用法,这能解决大部分同类问题。如果仍无法解决,再深入检查 ipmi_core 组件对桥接命令的实现和配置。
点击此处查看详细分析解答
根据您提供的描述,您在使用 ipmitool 通过 IPMB 总线访问设备时遇到问题,但通过 busctl 调用 bmc.kepler.ipmi_core 服务却能正常通信。这表明 IPMB 物理链路和底层通信是正常的,问题很可能出在 ipmitool 的命令参数配置上。
根据知识库中的信息,您的场景很可能是因为命令参数使用错误。
问题根因分析
-
参数混淆:在与该问题高度相似的案例(参考文档1)中,用户最初也遇到了相同的情况,即直接使用 ipmitool 访问失败,但通过 busctl 调用能够成功。该案例的最终解答明确指出:-b 和 -t 的参数写反了。
-b 是指定通道(Channel)
-t 是指定从机地址(Target Address)
- 正确的参数应该是
-b 6 -t 134。您尝试的 -b 6 -t 134 或 -b6 -t 0x86 中,134 和 0x86 是十进制和十六进制表示,但核心在于参数的位置是否正确。您需要确保 -b 后面跟的是通道号(6),-t 后面跟的是设备地址(134 即 0x86)。
-
桥接功能依赖正确的配置:访问 IPMB 总线上的设备,需要依赖 IPMI 的桥接转发功能。根据知识库,ipmi_core 组件负责此功能,但通过标准命令(如 ipmitool)执行时,需要 IPMIChannel、ChannelID 和 ChanType 等配置正确。如果参数错误,桥接指令就无法正确发送。
-
软件实现层面:您的分析结论指出 ipmi_core 可能未实现 LAN 命令层的 Send Message(0x34) 桥接。虽然这可能是深层原因,但根据最直接的案例证据,首先应排查和纠正 ipmitool 的参数使用。
解决方案建议
第一步:修正 ipmitool 命令参数
根据参考文档1中的解决方案,请尝试使用以下命令格式访问您的 MCU1(地址 0x86):
ipmitool -H <BMC_IP> -I lanplus -U <用户名> -P <密码> -b 6 -t 134 mc info
请将 <BMC_IP>、<用户名>、<密码> 替换为您实际的数值。此命令通过通道6(IPMB)向地址为134(0x86)的设备发送指令。
第二步:如果参数修正后仍失败
如果上述参数修正后依然无法访问,则表明问题可能确实存在于软件实现层面。根据知识库中的经验分享(参考文档2),openubmc-ipmi-command-guide 技能可以快速查找 IPMI 命令的归属组件和使用指导。您可以:
- 查阅
ipmi_core 组件的详细文档(如 ipmi_core.md),确认它是否已完整支持标准的 IPMI 桥接转发(Send Message 命令)。
- 确认 IPMB 通道相关配置(如
IPMIChannel、ChanType 等)是否与您 ipmitool 命令中的参数一致。
总结: 您的问题极有可能是由 ipmitool 参数使用错误导致的。请优先尝试 -b 6 -t 134 的用法,这能解决大部分同类问题。如果仍无法解决,再深入检查 ipmi_core 组件对桥接命令的实现和配置。
通过系统端调用ipmitool指令进行信息获取,也不成功

业务OS侧发送命令,观测中断个数是否有增加(一次命令会增加4个中断):
cat /proc/interrupts |grep ipmi
time ipmitool raw 6 4
cat /proc/interrupts |grep ipmi
如果中断不增加,则标准桥接命令(依赖BT中断通信)会超时失败。
BT中断依赖BMC/BIOS/CPLD等模块,问题定位思路:1)分析OS侧 dmesg |grep ipmi信息,确认BMC是否开启中断;2)BT中断使能依赖涉及到BIOS/CPLD等修改,需要机型对应产品硬件主导定位。