BMC上部分阈值传感器状态因为未知原因被Disable

基于2603 openUBMC进行开发

问题描述
发现BMC上风扇转速传感无读数:

在mdbctl中查看,发现传感器有读值,但是status为Disabled

定位进展:
该传感器关联的Entity状态正常


通过ipmi命令查看传感器状态,发现状态为被禁用:
img_v3_0213b_897d4011-ad6e-47ef-9279-9ea428ba097g
通过命令使能传感器,报失败,无法使能:

下面这个帖子也碰到了类似问题,在2509和2512中都有反馈:

请问社区有无发现该问题? 问题原因是什么?

答案内容由AI生成,仅供参考:
(无明确标有“总结”、“解决方案”或“结论”字样的章节,返回空内容)

点击此处查看详细分析解答

根据您提供的问题描述和上下文信息,社区已存在类似问题反馈。在 openUBMC 的 2509、2512 及 2603 版本中,均有用户报告风扇转速传感器状态变为 Disabled 且无法通过 IPMI 使能的现象(参考帖子 风扇转速传感器对象添加异常问题)。该问题表现为传感器在 mdbctl 中能读到值,但 status 属性为 Disabled,且关联的 Entity 状态正常。

问题原因分析(基于提供的上下文)

从文档和知识图谱中可总结以下可能原因:

  1. 传感器使能状态与 Entity 在位/上电逻辑不匹配
    根据 CLU 配置指导书传感器一本通 中的说明,门限传感器的使能状态受其关联 EntityPresencePowerState 影响。若 Capabilities 属性配置不当(如本应配置 104 表示不受影响,却配置为 232 表示受影响),当 Entity 状态异常(如未正确上电或不在位)时,传感器会被自动禁用(Disabled)。尽管您提到 Entity 状态正常,但可能实际 EntityPowerStatePresence 配置为固定值(例如配死为 1),导致传感器使能逻辑无法正确触发。

  2. 传感器初始化顺序或 Entity 对象未完全加载
    DiscreteSensor状态初始化异常 文档指出,当系统启动时,如果 Entity 对象未初始化完成(例如拓扑关系较长导致 PowerState 无法获取),代码可能默认将传感器置为 EnableDisable,且后续无法通过正常监听函数更新状态。这种场景在升级 BMC 或 CPLD 后容易复现,与您提到的升级后出现问题的现象一致。此外,ReadingStatus 属性若非 0(如 12),也表示扫描异常,可能导致传感器被标记为 Disabled

  3. 传感器 Capabilities 配置与实体依赖关系不一致
    整机PSR配置指导书硬盘背板开发指南 均强调:若传感器使能状态受实体在位/上下电影响,Capabilities 应配置为 232(或 192 对于离散传感器),否则应配置为 104(或 64)。如果实际实体依赖关系与配置不符,传感器状态可能异常。

  4. 社区反馈的共性因素
    在帖子 topic/4660 的对话中,其他用户反馈此问题 极低概率复现,多出现在新机器或升级 BMC/CPLD 之后,且与 1230 版本相关。这表明问题可能与特定硬件初始化时序或固件升级过程中的配置文件残留有关。

建议排查方向

  • 检查传感器关联的 EntityPresencePowerState 配置,确认 Capabilities 属性值是否与实体实际依赖一致(参考规范:不受影响配 104,受影响配 232)。
  • 查看传感器的 ReadingStatus 属性,若非 0(正常值),则说明存在扫描异常,需进一步定位数据源(如 Scanner)是否正常。
  • 检查软硬件 CSR 文件,确认 xxx.srxxx_cust.sr 中传感器相关配置是否正确,特别是 CapabilitiesEntity 关联字段。
  • 观察复现条件:若仅在升级后出现,可尝试在升级前后对比 CSR 配置变更,或检查 framework.loghwdiscovery 加载的相关日志。

社区目前尚未给出统一修复方案,但上述配置调整(如修改 Capabilities 或完善 Entity 依赖关系)已有用户在类似场景中验证有效。建议您结合实际硬件拓扑进一步分析。

目前发现的一个复现方式:

该问题已定位解决,详见以下两个 issue
OS下电后,设置风扇手动模式,web和查询风扇转速为0,impi接口查询风扇转速传感器为disabled
Entity更新传感器使能状态遗漏问题
请基于解决后的版本验证确认是否还存在问题

请问下2512LTS SP1,2512LTS SP2,2606版本需要带入这些修改吗

此修改也要带上
配置为"PowerState": 1,不关注PowerState,Scanner是多少,转速传感器就显示多少
如果是"PowerState": “<=/Scanner_PowerGood.Value”。那么支持standby的机型,下电后,风扇转速传感器显示–

请问您添加这个修改试过了么? 我这里测试问题还在

我们使用的主干是2603

OS下电后,设置风扇手动模式,web和查询风扇转速为0,impi接口查询风扇转速传感器为disabled 这个改动原生已经带了

Entity更新传感器使能状态遗漏问题
这个改动手动合入后,测试发现问题还在。

测试方法如下:
通电开机策略,保持下电的状态下,AC之后是关机状态。再开机~风扇传感器就获取不到了。



vpd这个修改是必须要带上的

感谢!

不过这样的话也就是说,下电后,风扇转速传感器显示-- ,然后再上电,上电后应该自动恢复的,实际却没恢复。

因为Accesor是被动更新的,如果不手动访问一下Accessor或者Entity,资源树上的值就不会更新。

没看源码,但是他们给我说的是Entity里面的PowerState不能配置#/,必须是<=/,不然按照你的测试流程,后电状态变化就无法感知到。vpd中大部分也是配置的<=/

图上这个配置就有三个问题
1.不能使用Accessor
2.使用的话必须是<=/
3.风扇转速传感器配置成关联后电状态无法兼容可以支持standby的机型

日志如下
dump_info.zip (9.8 MB)