一、测试环境
硬件:S920X20
BMC Version: 26.03
二、问题描述
IPMI设置风扇转速时错误参数测试( Fan_Manual_Auto_Speed_015),测试用例执行失败,报错日志如图所示:
问题:是IPMI命令返回的报错信息有错,还是IPMI不支持此命令?
一、测试环境
硬件:S920X20
BMC Version: 26.03
二、问题描述
IPMI设置风扇转速时错误参数测试( Fan_Manual_Auto_Speed_015),测试用例执行失败,报错日志如图所示:
答案内容由AI生成,仅供参考:
| 项目 | 分析结果 |
|---|---|
| 命令是否有效 | cmd=0x91 未定义 |
| 是否支持该功能 | cmd=0x92, subcmd=0x10 |
| 报错信息是否正确 | |
| 根本原因 | 发送了未注册或错误的 IPMI 原始命令 |
| 解决方案 | 使用正确的 NetFn/Cmd/SubCommand 组合,并确保风扇处于手动模式 |
建议:请联系开发团队确认该固件版本
26.03是否已集成SetDesiredFanSpeed (0x30/0x92)命令;若未集成,则属于功能缺失,需通过软件升级或定制补丁支持。
根据您提供的测试日志、上下文信息以及知识图谱中的技术细节,以下是对该问题的综合分析与解答。
26.03ipmitool -H 192.168.40.25 -I lanplus -U Admin -P ****** raw 0x30 0x91 0xdb 0x07 0x00 0x25 0x0 0x5 0x19
Unable to send RAW command ... Unspecified error
cmd=0x91 的 SetDesiredFanSpeed 命令从技术上下文可以明确以下几点:
在文档 #9(《添加一条IPMI命令实操分享——设置所需的风扇速度》)中明确指出:
“该ipmi命令在openUBMC目前还不支持”
文档描述的是添加 SetDesiredFanSpeed 这一功能的过程,说明在撰写时(适用于 openUBMC 某些版本),该命令 尚未原生存在。
该命令定义如下:
"SetDesiredFanSpeed": {
"netfn": "0x30",
"cmd": "0x92",
"SubCommand": "0x10"
}
注意:文档中定义的 cmd=0x92,而您测试的命令为 0x91,说明两者也 不匹配。
在 Document Chunks 中提供的 IPMI 实现逻辑文件中,注册的回调函数为:
register_ipmi_func(cooling_ipmi_service.SetDesiredFanSpeed,
function(...) return cooling_ipmi:SetDesiredFanSpeed(...) end)
该接口由 cooling_ipmi:SetDesiredFanSpeed 实现,仅处理特定结构的请求参数,并进行输入校验。
您所使用的命令
raw 0x30 0x91 ...对应的cmd=0x91并非已注册的有效命令,因此 不会被 Ipmi_Core 识别。
当 BMC 接收到一个未定义或未注册的 IPMI 命令时,IPMI Core 会返回完成码 0xFF,对应错误为:
Completion Code: 0xFF → "Unspecified error"
此为 IPMI 标准行为。
日志中出现:
rsp=0xff: Unspecified error
表明:BMC 成功接收到命令,但因无法处理而返回未定义错误 —— 这正是“命令不支持”的标准表现形式。
报错 信息无误,
Unspecified error正是系统对非法/未注册命令的标准响应。
根据知识库中对 SetDesiredFanSpeed 的设计定义:
ipmitool raw 0x30 0x92 0xdb 0x07 0x00 0x10 <Index> <FanSpeedBytes...>
NetFn: 0x30Cmd: 0x92(不是 0x91)Manufacturer ID: 0xDB0700SubCommand: 0x10(表示 SetDesiredFanSpeed)Index: 起始风扇 IDFanSpeed: 每个风扇的占空比(百分比值)例如:
ipmitool raw 0x30 0x92 0xdb 0x07 0x00 0x10 0x00 0x32
→ 设置风扇 0 的转速为 50%(0x32 = 50)
即使命令被注册,以下因素仍会导致失败:
cooling_ipmi:SetDesiredFanSpeed 实现):FanSpeed 字节数必须等于从 Index 到末尾的风扇数量。error(custom_msg.IPMIOutOfRange())
IPMIInvalidFieldRequest。| 步骤 | 操作 | 目的 |
|---|---|---|
| 1 | 查询当前是否支持 cmd 0x92 |
ipmitool raw 0x30 0x92 0xdb 0x07 0x00 0x10 0x00 |
| 2 | 确认风扇控制模式 | ipmcget -d fanmode若非手动模式,先设置: ipmcset -d fanmode -v 1 0 |
| 3 | 使用正确命令测试 | ipmitool raw 0x30 0x92 0xdb 0x07 0x00 0x10 0x00 0x40(设风扇0为64%) |
| 4 | 检查日志 | 查看 /var/log/cooling_control.log 是否记录成功 |
| 项目 | 分析结果 |
|---|---|
| 命令是否有效 | cmd=0x91 未定义 |
| 是否支持该功能 | cmd=0x92, subcmd=0x10 |
| 报错信息是否正确 | |
| 根本原因 | 发送了未注册或错误的 IPMI 原始命令 |
| 解决方案 | 使用正确的 NetFn/Cmd/SubCommand 组合,并确保风扇处于手动模式 |
建议:请联系开发团队确认该固件版本
26.03是否已集成SetDesiredFanSpeed (0x30/0x92)命令;若未集成,则属于功能缺失,需通过软件升级或定制补丁支持。
如需进一步诊断,可提供以下信息:
ipmcget -d --version 输出ipmitool mc info 返回的设备支持能力cooling_control.log 最近日志片段当前该问题是内部已知问题,开发正在修复该问题。