装备版本AC命令不生效问题分析
更新时间: 2026/05/28
在Gitcode上查看源码问题背景
- 单板类型:自研板;
- 软件版本:OpenUBMC 25.12 LTS;
- 涉及功能:ipmi,装备模式,AC;
- 触发条件:带外打开DFT后,下发AC命令。
- 业务表现:预期系统侧正常AC;实际AC指令发送后设备依然正常运行并未重启。
问题复现步骤
带外打开DFT后,下发AC命令,查看系统侧是否重启;具体ipmi命令如下:
DFT使能命令:
shell
ipmcset -d ipmiraw -v "0x30 0x90 0x31 0x00 0x03"AC命令:
shell
ipmcset -d ipmiraw -v "0x30 0x90 0x31 0x00 0x03"关键日志信息
操作日志如下:
定位过程
- 确认升级包是否为装备包,非装备包不可测试;确认结果,升级包为装备包;
- 确认BMC装备版本上manufacture组件是否开启了装备模式,因为该AC命令是在manufacture组件中实现的;从操作日志打印上看,有Set DFT ac cycle failed日志,说明manufacture组件已经开启了装备模式;
- 代码层确认记录"Set DFT ac cycle failed"日志的具体条件;目前从代码上看只有两种情况下会记录操作日志中标红的信息分别为未开启装备模式和不是带内发送的ipmi命令;问题原因倾向于不是带内发送的ipmi命令;
- 查看app.log日志,发现日志中没有相应日志;代码确认是因为错误日志是debug级别,不是notice级别,日志默认打印notice及以上级别,具体如下图;尝试带内下发AC命令,查看结果,确认OS下AC正常;
问题原因
命令执行不成功可能的原因有三种,分别为非装备包,DFT未使能以及AC命令未在带内执行,本问题的产生就是因为装备模式下,AC命令未在带内执行,不在带内执行该命令则不走bt通道,通道校验失败直接退出程序导致AC失败。
解决方案
AC命令在带内下发,让ipmi命令走bt通道,