传感器适配常见问题指南
更新时间: 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,传感器页面没有显示,如何分析?
- 以board name 是 openUBMC 为例,检查 vpd/vendor/Huawei/Server/Kunpeng/openUBMC/profile.txt 内是否增加新增 sr 文件路径。
- 检查
Entity中配置的Presence,若属性为 0,则不会加载sr文件。 - 检查
Entity中配置的PowerState,若属性为0,则 Entity 失效,会导致传感器 Status 为 Disabled。 - 检查
ThresholdSensor中配置的Capabilities属性,如果bit7配置为1,则传感器会受到 Entity 失效影响会被禁止。 - 检查
ThresholdSensor中ReadingStatus属性及Status属性,ReadingStatus值为 0 或Status为 Disabled,在这两种情况下传感器不会显示出读值。
[Q3] 传感器告警如何通过命令查看?
ipmitool sel list/elist 可查看传感器告警。需注意ipmcget -d sel -v list 读的是精准告警,非传感器事件,对应 Web 页面的系统事件。
[Q4] 模拟产生离散、门限传感器告警的方法有哪些?
可通过mdbctl setprop修改Scanner中Value值,达到触发告警的目的。
命令说明:
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,根据标准规范,此时产生了“检测到在位”的事件。