传感器适配常见问题指南
更新时间: 2025/12/12
在Gitcode上查看源码

常见问题

[Q1] ipmitool sdr elist 显示的传感器是否可以按照 sensor name 中的数字编号顺序显示?

现象举例:当前离散传感器 DIMMxxx 显示未按照名称中的编号顺序显示。期望 DIMM 可以按照 DIMM000,DIMM001,DIMM010... 顺序显示。

解决方式:传感器对象的注册及相应 sdr 数据的注册都是根据传感器 csr 对象的分发顺序依次处理的,无法保证 csr 对象分发给组件的顺序。 针对此述求,可在 sensor 仓优化传感器对象注册流程。当前的注册流程如下:

当有传感器csr对象分发时(on_add_object),先进行缓存(temp_store_sensor) 当该 position 所有对象分发完成后(on_add_object_complete),统一处理传感器和sdr的注册(register_sensors) 可优化register_sensors处理

lua
-- 原流程
step1 根据当前position从缓存中取出该position下缓存的所有传感器对象
local pos_sensors = unregistered_sensors[position]
step2 依次遍历pos_sensors中的传感器对象,并执行注册处理

-- 优化后流程
step1 根据当前position从缓存中取出该position下缓存的所有传感器对象
local pos_sensors = unregistered_sensors[position]
step2 先根据所有传感器对象的SensorName属性对pos_sensors进行排序
step3 依次遍历pos_sensors中的传感器对象,并执行注册处理

[Q2] 新增了门限传感器 sr,传感器页面没有显示,如何分析?

  1. 以board name 是 openUBMC 为例,检查 vpd/vendor/Huawei/Server/Kunpeng/openUBMC/profile.txt 内是否增加新增 sr 文件路径。
  2. 检查Entity中配置的Presence,若属性为 0,则不会加载sr文件。
  3. 检查Entity中配置的PowerState,若属性为0,则 Entity 失效,会导致传感器 Status 为 Disabled。
  4. 检查ThresholdSensor中配置的Capabilities属性,如果bit7配置为1,则传感器会受到 Entity 失效影响会被禁止。
  5. 检查ThresholdSensorReadingStatus属性及Status属性,ReadingStatus值为 0 或Status为 Disabled,在这两种情况下传感器不会显示出读值。

[Q3] 传感器告警如何通过命令查看?

ipmitool sel list/elist 可查看传感器告警。需注意ipmcget -d sel -v list 读的是精准告警,非传感器事件,对应 Web 页面的系统事件。

[Q4] 模拟产生离散、门限传感器告警的方法有哪些?

可通过mdbctl setprop修改ScannerValue值,达到触发告警的目的。
命令说明:

shell
setprop <operation type> <object name> <interface name> <property name>

参数说明:

  • operation type:必选参数,提供 set/unset 两种模式,代表设置属性值与解除设置。
  • object name:必选参数,为指定属性接口所属的对象,可以通过lsobj查询组件有哪些对象。
  • interface name:必选参数,为指定属性所挂的接口,可以通过lsprop查询对象下挂了哪些接口。
  • property name:必选参数,为指定属性,可以通过lsprop查询对象下的属性。

使用举例: 模拟门限传感器 Inlet Temp 产生告警。已知 Inlet Temp 轻微上门限与严重上门限分别是41,43。

shell
#已进入调试模式界面并连接硬件代理模块。
% attach hwproxy
Success
#查看Scanner下对象
% lsobj Scanner
Scanner_Lm75_Inlet_0101
...
#查看Scanner_Lm75_Inlet_0101对象的属性,当前Value为29
% lsprop Scanner_Lm75_Inlet_0101 
bmc.kepler.Object.Properties
  ClassName="Scanner"
  ObjectIdentifier=[1,"1","1","0101"]
  ObjectName="Scanner_Lm75_Inlet_0101"
  TraceSamplingRate=0
bmc.kepler.Scanner
  Status=0
  Value=29
bmc.kepler.Scanner.Aggregate
  AggregateOffset=0
  AggregateStatus=false
Private
  Chip="Lm75_InletTemp_0101"
  Debounce="MidAvg_Inlet_0101"
  FailureDebounceCount=10
  Mask=255
  NominalValue=0
  Offset=0
  Period=1000
  ScanEnabled=1
  Size=1
  SuccessDebounceCount=10
  Type=0
#修改Scanner的Value为50,触发告警
% setprop set Scanner_Lm75_Inlet_0101 bmc.kepler.Scanner Value 50
Success
#再次查看Scanner_Lm75_Inlet_0101对象的属性,可知Value已修改成功
% lsprop Scanner_Lm75_Inlet_0101                                 
bmc.kepler.Object.Properties
  ClassName="Scanner"
  ObjectIdentifier=[1,"1","1","0101"]
  ObjectName="Scanner_Lm75_Inlet_0101"
  TraceSamplingRate=0
bmc.kepler.Scanner
  Status=0
  Value=50
bmc.kepler.Scanner.Aggregate
  AggregateOffset=0
  AggregateStatus=false
Private
  Chip="Lm75_InletTemp_0101"
  Debounce="MidAvg_Inlet_0101"
  FailureDebounceCount=10
  Mask=255
  NominalValue=0
  Offset=0
  Period=1000
  ScanEnabled=1
  Size=1
  SuccessDebounceCount=10
  Type=0

#解除设置,恢复正常扫描,即解除告警
% setprop unset Scanner_Lm75_Inlet_0101 bmc.kepler.Scanner Value   
Success

[Q5] Web 页面显示的离散传感器状态表示的含义?

离散传感器状态:

  • Disabled:表示当前离散传感器被禁用。
  • 0xXXX,例如,0x8000,是根据 IPMI 规范定义的,采用 16 进制数值表示当前传感器的状态,具体含义请参见 IPMI 规范中表42-2 Generic Event/Reading Type Codes中字段 Generic Offset 的解释和表42-3 Sensor Type Codes 中字段 Sensor specific Offset 的解释。

以 DIMM000 举例,状态值为 0x8040,也即 bit6 的值为 1,根据 DIMM000 传感器配置的 SensorType 为 12(0x0c),ReadingType 为 0x6f,根据标准规范,此时产生了“检测到在位”的事件。