风扇不在位可查询风扇转速问题分析
更新时间: 2026/06/02
在Gitcode上查看源码

问题背景

  • 单板类型:A5 Pod;
  • 软件版本:openUBMC 25.3.0.B001;
  • 涉及功能:风扇调速;
  • 触发条件:风扇不在位,下发ipmcget -d coolingdeviceinfo -v fan后也能查询对应风扇的转速信息。
  • 业务表现:预期风扇不在位情况下风扇转速不可查询;实际当前风扇不在位情况下风扇转速可查询。

问题复现步骤

  1. 模拟风扇不在位

下发命令:

shell
  setprop set Scanner_Fan1_Presence_0101 bmc.kepler.Scanner Value 1

返回信息:Success

  1. 查询风扇转速信息;

    下发命令:

shell
  ipmcget -d coolingdeviceinfo -v fan

返回信息:

text
  Current fan mode: auto
  Actual fan level:
  Fan1: 24, Fan2: 70

关键日志信息

操作信息:

定位过程

按照当前实际查询结果来看,在风扇不在位的情况下,依然能查询到风扇转速,但按照实际逻辑处理,应该是风扇不在位的情况下,风扇模式可以查询并显示,但是当前风扇转速应显示为 0、NA、N/A 或 Unknown 等,不应该是有实际数值;因此需要确认当前ipmcget命令查询风扇转速及模式相关代码的处理逻辑是否缺少对风扇在位状态的判断。

问题原因

按照实际代码情况来分析,风扇存在一种非特殊情况,即双胞胎风扇;此处无双胞胎风扇判断,无风扇在位判断,只要风扇列表存在,就将风扇列表中对应的风扇ID及风扇level拷贝到用于显示的字符串中,导致产生该问题。

涉及具体代码仓名称:rackmount; 文件:interface_config\cli\echoes\ipmcget_faninfo文件代码如下:

文件:interface_config\cli\echoes\ipmcget_coolingdeviceinfo文件代码如下:

解决方案

需要在当前代码中添加风扇在位状态及是否位双胞胎风扇的判断,风扇不在位的情况下,level中填入NA或者N/A,而不是写入风扇列表结构体中的风扇转速信息。具体修改如下: faninfo文件:

coolingdeviceinfo文件: