📋 文档信息
| 项目 | 内容 |
|---|---|
| 文档标题 | Sensor类配置字典 |
| 版本 | v1.3 |
| 创建日期 | 2025-01-27 |
| 最后更新 | 2026-11-07 |
| 维护状态 | ✅ 活跃维护 |
📋 变更历史记录
文档变更记录
| 版本 | 发布日期 | 变更类型 | 变更内容 | 影响范围 | 维护人员 |
|---|---|---|---|---|---|
| v1.0 | 2025-01-27 | 初始版本 | 创建Sensor类配置字典 | 全新文档 | 系统管理员 |
| v1.1 | 2026-05-12 | 功能增强 | 补充BMCEnables等类属性定义 | Entity/ThresholdSensor/DiscreteSensor/BMCEnables类 | sensor SIG |
| v1.2 | 2026-11-03 | 功能增强 | 内联Entity/ThresholdSensor/DiscreteSensor的IPMI规范引用字段枚举值(SensorType、ReadingType、Linearization、掩码位定义、线性换算系数、ModifierUnit、Entity.Instance等) | Entity/ThresholdSensor/DiscreteSensor类 | sensor SIG |
| v1.3 | 2026-11-07 | 修订 | 与模型同步,补充 CSR 属性:Health、LowerNoncritical、NormalMaximum | ThresholdSensor | 待补充 |
🎯 类概览
Sensor 类系统
| 属性 | 值 |
|---|---|
| 类名称 | Sensor (Entity + ThresholdSensor + DiscreteSensor + BMCEnables) |
| 功能描述 | 传感器管理系统,包含实体管理(Entity)、门限传感器(ThresholdSensor)、离散传感器(DiscreteSensor)、BMC使能(BMCEnables),提供完整的传感器配置、事件管理和IPMI SEL功能 |
| 所属SIG组 | hardware |
| 所属组件 | sensor |
| 责任人 | 基础服务组 |
| 最后更新 | 2026-11-07 |
| 状态 | 🟢 正常运行 |
📊 属性定义详表
Entity 类 - 必选属性
| 属性名 | 类型 | 默认值 | 取值范围 | 动态关联 | 描述 | 使用场景 | 举例 | 来源 | 分类 |
|---|---|---|---|---|---|---|---|---|---|
Id | U8 | - | U8 | - | 传感器对应的实体标识 具体参照IPMI标准协议规范Table 43-, Entity ID Codes(P550) 常用的实体标识列举如下: 03h processor04h disk or disk bay07h system board0Ah power supply0Bh add-in card12h processor board1Eh cooling unit20h memory device37h air inlet | 配置传感器实体 | 7 | CSR | 软件 |
Instance | U8 | - | 0x00~0xFF,取值说明见下文【Entity Instance取值说明】 | - | 传感器对应的实体实例标识,通常以0x60开始配置,理论上应保证相同Id下Instance不同,取值说明见下文 | 配置传感器实体 | 96 | CSR | 软件 |
Name | String | - | String | - | 实体名称 | 配置传感器实体 | "MainBoard" | CSR | 软件 |
Presence | U8 | 1 | 默认1或者关联部件在位 | - | 实体在位状态,部件不存在动态拔插则配死为1,否则应关联对应的在位信号 | 配置传感器实体 | 1 | CSR | 软件 |
PowerState | Mixed | 1 | 默认1或者关联部件在位 | Scanner_PowerGood | 实体上下电状态,若与上下电状态无关则配死为1,否则应关联上下电信号 | 配置传感器实体 | "<=/Scanner_PowerGood.Value" | CSR | 软件 |
Entity 类 - 可选属性
| 属性名 | 类型 | 默认值 | 取值范围 | 动态关联 | 描述 | 使用场景 | 举例 | 来源 | 分类 |
|---|---|---|---|---|---|---|---|---|---|
Slot | U8 | 255 | U8 | - | 实体所在的槽位,默认0xFF | 配置传感器实体 | 255 | CSR | 软件 |
BelongsToSystem | Boolean | false | Boolean | - | 多Host场景表征当前对象是否归属单一系统,默认为公共对象(false),SystemId取0 | 用于判断多Host场景表征当前对象是否归属单一系统 | true | CSR | 硬件 |
ThresholdSensor 类 - 必选属性
| 属性名 | 类型 | 默认值 | 取值范围 | 动态关联 | 描述 | 使用场景 | 举例 | 来源 | 分类 |
|---|---|---|---|---|---|---|---|---|---|
OwnerId | U8 | 32 | - | - | 传感器所有者ID | 配置传感器对象 | 32 | CSR | 软件 |
OwnerLun | U8 | 0 | - | - | 传感器所有者LUN | 配置传感器对象 | 0 | CSR | 软件 |
EntityId | Mixed | - | 关联Entity的Id | Entity_MainBoard | 传感器需要关联实体,关联对应实体的Id属性 | 配置传感器对象 | "<=/Entity_MainBoard.Id" | CSR | 软件 |
EntityInstance | Mixed | - | 关联Entity的Instance | Entity_MainBoard | 传感器需要关联实体,关联对应实体的Instance属性 | 配置传感器对象 | "<=/Entity_MainBoard.Instance" | CSR | 软件 |
Initialization | U8 | 127 | U8 | - | 传感器初始化选项,门限传感器 - 0x7F | 配置传感器对象 | 127 | CSR | 软件 |
Capabilities | U8 | 232 | U8 | - | 传感器能力,用于配置包括自动调整模式、迟滞量、阈值访问、事件控制等特性,具体如下 [7] - 1b=当实体不在位或禁用时忽略传感器,与关联的 Entity的PowerState与Presence状态有关,若Entity的这两个状态默认配置为1,通常配置为 0b[6] - 支持传感器自动重新调整,通常配置为 1b 0b=no(手动) 1b=yes(自动) [5:4] - 支持传感器迟滞量,门限传感器通常配置为 10b 00b=无迟滞量 01b=迟滞量可读 10b=迟滞量可读可写 11b=固定的不可读迟滞量 [3:2] - 支持传感器阈值访问,门限传感器通常配置为 10b 00b=无阈值 01b=基于 ReadingMask配置支持的阈值可读10b=基于 ReadingMask及Settable Threshold Mask配置支持的阈值可读可写11b=固定的不可读的阈值,通过 ReadingMask反映[1:0] - 支持事件信息控制,通常配置为 00b 00b=支持控制每个阈值、离散状态的启动及禁用 01b=仅支持整个传感器 10b=仅支持全局禁用 11b=无来自传感器的事件 综上,针对连续传感器,建议配置为: ①若传感器使能状态不受实体在位及上下电影响,则配置为 104②若传感器使能状态受实体在位及上下电影响,则配置为 232 | 配置传感器对象 | 232 | CSR | 软件 |
SensorType | U8 | - | 见下文【传感器类型枚举】 | - | 传感器类型,对应IPMI规范Sensor Type Codes,取值见下文 | 配置传感器对象 | 1 | CSR | 硬件 |
ReadingType | U8 | 1 | U8 | - | 传感器读值类型,ThresholdSensor则配置为0x01 具体参照 Table 42-, Event/Reading Type Code Ranges(P503) | 配置传感器对象 | 1 | CSR | 硬件 |
SensorName | String | - | String | - | 传感器名称 | 配置传感器对象 | "BCU${Slot} VCC_12V0_1" | CSR | 硬件 |
AssertMask | U16 | - | 16bit位掩码,bit位定义见下文【门限掩码位定义】 | - | 传感器事件产生掩码,决定是否能产生事件;配置门限场景使用,bit位定义见下文 | 配置传感器对象 | 516 | CSR | 硬件 |
DeassertMask | U16 | - | 16bit位掩码,bit位定义见下文【门限掩码位定义】 | - | 传感器事件恢复掩码,决定是否能恢复事件;配置门限场景使用,bit位定义见下文 | 配置传感器对象 | 516 | CSR | 硬件 |
ReadingMask | U16 | - | 16bit位掩码,bit位定义见下文【门限掩码位定义】 | - | 传感器读值掩码,决定是否能对外显示门限;配置门限场景使用,bit位定义见下文 | 配置传感器对象 | 4626 | CSR | 硬件 |
Unit | U8 | - | U8 | - | 传感器单位配置,具体含义见IPMI标准协议规范43.1章节 ①传感器读值为有符号数,如温度:配置为128 ②传感器读值为无符号数,如功率:配置为0 | 配置传感器对象 | 128 | CSR | 软件 |
BaseUnit | U8 | - | U8 | - | 传感器基本单位 具体参照IPMI标准协议规范Table 43-, Sensor Unit Type Codes(P554) 常用的传感器单位列举如下: 1 degrees C4 Volts5 Amps6 Watts18 RPM | 配置传感器对象 | 4 | CSR | 硬件 |
M | U8 | 1 | U8 | - | 按需配置,无原始值缩放转换需求,则默认配置为1 | 配置传感器对象 | 6 | CSR | 硬件 |
MaximumReading | U8 | - | U8 | - | 实际最大值,与数据格式有关 ①有符号数,配置为127 ②无符号数,配置为255 | 配置传感器对象 | 255 | CSR | 硬件 |
MinimumReading | U8 | - | U8 | - | 实际最小值,与数据格式有关 ①有符号数,配置为128 ②无符号数,配置为0 | 配置传感器对象 | 0 | CSR | 软件 |
Reading | U8 | 0 | 关联数据源 | Scanner_12v1、Scanner_PowerGood | 传感器原始读值 | 配置传感器对象 | `"<=/Scanner_12v1.Value;<=/Scanner_PowerGood.Value | > expr(($2 == 0) ? 0 : (($1 / 12) > 255 ? 204 : ($1 / 12)))"` | CSR |
ReadingStatus | U8 | 0 | 关联数据源 | Scanner_12v1、Scanner_PowerGood | 传感器读值状态:0:normal | 配置传感器对象 | `"<=/Scanner_12v1.Status;<=/Scanner_12v1.Value;<=/Scanner_PowerGood.Value | > expr((($1 == 0) && (($2 / 12) > 255) && ($3 == 1)) ? 2 : $1)"` | CSR |
ThresholdSensor 类 - 可选属性
| 属性名 | 类型 | 默认值 | 取值范围 | 动态关联 | 描述 | 使用场景 | 举例 | 来源 | 分类 |
|---|---|---|---|---|---|---|---|---|---|
RBExp | U8 | 224 | U8 | - | 按需配置,无原始值缩放转换需求,则可配置 | 配置传感器对象 | 224 | CSR | 硬件 |
NominalReading | U8 | 204 | U8 | - | 名义读值,无实际含义,在数据格式范围内即可 | 配置传感器对象 | 204 | CSR | 硬件 |
UpperCritical | U8 | 220 | U8 | - | 按需配置,传感器严重事件上限 | 配置传感器对象 | 220 | CSR | 硬件 |
LowerCritical | U8 | 180 | U8 | - | 按需配置,传感器严重事件下限 | 配置传感器对象 | 180 | CSR | 硬件 |
UpperNoncritical | U8 | 0 | U8 | - | 按需配置,传感器一般事件上限 | 配置传感器对象 | 0 | CSR | 硬件 |
LowerNonCritical | U8 | 0 | U8 | - | 按需配置,传感器一般事件下限 | 配置传感器对象 | 0 | CSR | 硬件 |
UpperNonrecoverable | U8 | 0 | U8 | - | 按需配置,传感器紧急事件上限 | 配置传感器对象 | 0 | CSR | 硬件 |
LowerNonrecoverable | U8 | 0 | U8 | - | 按需配置,传感器紧急事件下限 | 配置传感器对象 | 0 | CSR | 硬件 |
PositiveHysteresis | U8 | 0 | U8 | - | 按需配置,传感器上升事件恢复迟滞量 | 配置传感器对象 | 4 | CSR | 硬件 |
NegativeHysteresis | U8 | 4 | U8 | - | 按需配置,传感器下降事件恢复迟滞量 | 配置传感器对象 | 4 | CSR | 硬件 |
SensorNumber | U8 | 255 | U8 | - | 无传感器编号定制需求,则不配置或配死为255,由sensor模块分配 | 配置传感器对象 | 255 | CSR | 软件 |
OriginalReading | Double | 0 | Double | - | 传感器的原始值,当线型标志配置0x70 | 配置传感器的原始值 | 0 | CSR | 硬件 |
ModifierUnit | U8 | 0 | 0x00~0x5C(传感器单位代码,与BaseUnit同一张表),见下文【单位修饰说明】 | - | 传感器单位描述符,表示单位修饰词(如 每秒、乘以某单位),默认0(无修饰),详见下文 | 配置传感器单位描述符 | 0 | CSR | 硬件 |
Linearization | U8 | 0 | 见下文【线性化算法枚举】 | - | 传感器线性计算方程,对应IPMI规范线性化算法,取值见下文 | 配置传感器线性计算方程 | 0 | CSR | 硬件 |
MT | U8 | 0 | bit位定义见下文【线性换算系数位定义】 | - | 传感器M计算表达式高7bit(M[14:8]):bit[6:0]为M的高7bit,bit[7]保留,详见下文 | 配置传感器M计算表达式高7bit | 0 | CSR | 硬件 |
B | U8 | 0 | -128~127(有符号) | - | 传感器线性换算B系数低8bit(有符号),换算公式 Y=(M×X+B×10^K) 中的B,详见下文 | 配置传感器B计算表达式低8bit | 0 | CSR | 硬件 |
BA | U8 | 0 | bit位定义见下文【线性换算系数位定义】 | - | 传感器B计算表达式高2bit和准确率低6bit:bit[1:0]为B的高2bit(B[9:8]),bit[7:2]为准确率低6bit,详见下文 | 配置传感器B计算表达式高2bit和准确率低6bit | 0 | CSR | 硬件 |
Accuracy | U8 | 0 | bit位定义见下文【线性换算系数位定义】 | - | 传感器准确率与方向:bit[7:2]为准确率高6bit,bit[1:0]为传感器方向,详见下文 | 配置传感器准确率高6bit和传感器方向 | 0 | CSR | 硬件 |
Analog | U8 | 0 | U8 | - | 传感器模拟标志,默认1,来自于IPMI规范,具体可以参考规范 | 配置传感器模拟标志 | 0 | 0 | 硬件 |
NormalMinimum | U8 | 0 | 0x00~0xFF(原始读值范围内,有符号/无符号与MinimumReading一致) | - | 传感器正常最小读值,配置正常工作的读值下限,须在MinimumReading~MaximumReading范围内 | 配置传感器正常最小读值 | 0 | CSR | 硬件 |
BelongsToSystem | Boolean | true | Boolean | - | 多Host场景表征当前对象是否归属单一系统,默认为公共对象(false),SystemId取0 | 配置 多Host场景表征当前对象是否归属单一系统 | false | CSR | 硬件 |
IsValid | Boolean | true | Boolean | - | 多host场景下判断对象是否生效 | 用于判断多host场景下判断对象是否生效 | false | CSR | 硬件 |
SensorIdentifier | String | "" | String | - | 传感器标识 | 用于标识传感器 | "" | CSR | 硬件 |
Health | String | 无 | - | - | 传感器健康状态:Critical:紧急;Major:严重;Minor:一般;OK:正常 | CSR 配置 | ... | CSR配置 | 软件 |
LowerNoncritical | U8 | 0 | - | - | 传感器严重事件下限,来自于IPMI规范,具体可以参考规范 43.1 | CSR 配置 | 0 | CSR配置 | 软件 |
NormalMaximum | U8 | 0 | - | - | 传感器正常最大读值,默认0,来自于IPMI规范,具体可以参考规范 43.1 | CSR 配置 | 0 | CSR配置 | 软件 |
DiscreteSensor 类 - 必选属性
| 属性名 | 类型 | 默认值 | 取值范围 | 动态关联 | 描述 | 使用场景 | 举例 | 来源 | 分类 |
|---|---|---|---|---|---|---|---|---|---|
EntityId | Mixed | - | 关联Entity的Id | Entity_MainBoard | 传感器需要关联实体,关联对应实体的Id属性 | 配置传感器对象 | "<=/Entity_MainBoard.Id" | CSR | 软件 |
EntityInstance | Mixed | - | 关联Entity的Instance | Entity_MainBoard | 传感器需要关联实体,关联对应实体的Instance属性 | 配置传感器对象 | "<=/Entity_MainBoard.Instance" | CSR | 软件 |
Initialization | U8 | 99 | U8 | - | 传感器初始化选项,离散传感器 - 0x63 | 配置传感器对象 | 99 | CSR | 软件 |
Capabilities | U8 | 64 | U8 | - | 传感器能力,用于配置包括自动调整模式、迟滞量、阈值访问、事件控制等特性,具体如下 [7] - 1b=当实体不在位或禁用时忽略传感器,与关联的 Entity的PowerState与Presence状态有关,若Entity的这两个状态默认配置为1,通常配置为 0b[6] - 支持传感器自动重新调整,通常配置为 1b 0b=no(手动) 1b=yes(自动) [5:4] - 支持传感器迟滞量,离散传感器通常配置为 00b 00b=无迟滞量 01b=迟滞量可读 10b=迟滞量可读可写 11b=固定的不可读迟滞量 [3:2] - 支持传感器阈值访问,离散传感器通常配置为 00b 00b=无阈值 01b=基于 ReadingMask配置支持的阈值可读10b=基于 ReadingMask及Settable Threshold Mask配置支持的阈值可读可写11b=固定的不可读的阈值,通过 ReadingMask反映[1:0] - 支持事件信息控制,通常配置为 00b 00b=支持控制每个阈值、离散状态的启动及禁用 01b=仅支持整个传感器 10b=仅支持全局禁用 11b=无来自传感器的事件 综上,针对离散传感器,建议配置为: ①若传感器使能状态不受实体在位及上下电影响,则配置为 64②若传感器使能状态受实体在位及上下电影响,则配置为 192 | 配置传感器对象 | 64 | CSR | 软件 |
SensorType | U8 | - | 见下文【传感器类型枚举】 | - | 传感器类型,对应IPMI规范Sensor Type Codes,取值见下文 | 配置传感器对象 | 35 | CSR | 硬件 |
ReadingType | U8 | - | 见下文【读值类型枚举】 | - | 传感器读值类型,对应IPMI规范Event/Reading Type Code,取值见下文 | 配置传感器对象 | 111 | CSR | 硬件 |
SensorName | String | - | String | - | 传感器名称 | 配置传感器对象 | "Watchdog2" | CSR | 硬件 |
AssertMask | U16 | - | 16bit位掩码,bit i对应事件偏移offset i,见下文【离散传感器掩码位定义】 | - | 传感器事件产生掩码,决定是否能产生事件;配置事件场景使用,bit位定义见下文 | 配置传感器对象 | 271 | CSR | 硬件 |
DeassertMask | U16 | - | 16bit位掩码,bit i对应事件偏移offset i,见下文【离散传感器掩码位定义】 | - | 传感器事件恢复掩码,决定是否能恢复事件;配置事件场景使用,bit位定义见下文 | 配置传感器对象 | 271 | CSR | 硬件 |
DiscreteMask | U16 | - | 16bit位掩码,bit i对应事件偏移offset i,见下文【离散传感器掩码位定义】 | - | 传感器离散值掩码,bit位定义见下文 | 配置传感器对象 | 271 | CSR | 硬件 |
Unit | U8 | 192 | U8 | - | 传感器单位配置,离散传感器-0xc0 | 配置传感器对象 | 192 | CSR | 软件 |
BaseUnit | U8 | 0 | U8 | - | 离散传感器无单位,配置为0 | 配置传感器对象 | 0 | CSR | 硬件 |
DiscreteType | U8 | 0 | 0:普通离散 1:数字离散(事件互斥) | - | 传感器离散类型 0:普通离散 1:数字离散(事件互斥,同一传感器同一时刻只允许一个事件有效) | 配置传感器对象 | 0 | CSR | 软件 |
DiscreteSensor 类 - 可选属性
| 属性名 | 类型 | 默认值 | 取值范围 | 动态关联 | 描述 | 使用场景 | 举例 | 来源 | 分类 |
|---|---|---|---|---|---|---|---|---|---|
SensorNumber | U8 | 255 | U8 | - | 无传感器编号定制需求,则不配置或配死为255,由sensor模块分配 | 配置传感器对象 | 255 | CSR | 软件 |
SensorIdentifier | String | "" | String | - | 传感器标识 | 用于标识传感器 | "" | CSR | 硬件 |
OwnerId | U8 | 32 | 0x20:BMC 其他:IPMB地址 | - | 传感器归属标识(IPMI规范Sensor Owner ID),默认0x20(归属于BMC),即BMC在IPMB总线上的从地址 | 配置传感器对象 | 32 | CSR | 软件 |
OwnerLun | U8 | 0 | - | - | 传感器所有者LUN | 配置传感器对象 | 0 | CSR | 软件 |
PositiveHysteresis | U8 | 0 | U8 | - | 按需配置,传感器上升事件恢复迟滞量 | 配置传感器对象 | 0 | CSR | 硬件 |
NegativeHysteresis | U8 | 0 | U8 | - | 按需配置,传感器下降事件恢复迟滞量 | 配置传感器对象 | 4 | CSR | 硬件 |
Reading | U8 | 0 | 关联数据源 | Scanner_12v1、Scanner_PowerGood | 传感器原始读值 | 配置传感器对象 | `"<=/Scanner_12v1.Value;<=/Scanner_PowerGood.Value | > expr(($2 == 0) ? 0 : (($1 / 12) > 255 ? 204 : ($1 / 12)))"` | CSR |
ReadingStatus | U8 | 0 | 关联数据源 | Scanner_12v1、Scanner_PowerGood | 传感器读值状态:0:normal | 配置传感器对象 | `"<=/Scanner_12v1.Status;<=/Scanner_12v1.Value;<=/Scanner_PowerGood.Value | > expr((($1 == 0) && (($2 / 12) > 255) && ($3 == 1)) ? 2 : $1)"` | CSR |
ModifierUnit | U8 | 0 | 0x00~0x5C(传感器单位代码,与BaseUnit同一张表),见下文【单位修饰说明】 | - | 传感器单位描述符,表示单位修饰词(如 每秒、乘以某单位),默认0(无修饰),详见下文 | 配置传感器单位描述符 | 0 | CSR | 硬件 |
RecordSharing | U16 | 0 | 0:独立SDR 1~0xFFFF:共享SDR记录编号 | - | 传感器的共享标识,多个传感器可以共享同一个SDR数据;值为SDR记录编号,多个传感器配置相同编号即可共享 | 用于判断多个传感器是否可以共享同一个SDR数据 | 1 | CSR | 硬件 |
BelongsToSystem | Boolean | true | Boolean | - | 多Host场景表征当前对象是否归属单一系统,默认为公共对象(false),SystemId取0 | 配置 多Host场景表征当前对象是否归属单一系统 | false | CSR | 硬件 |
IsValid | Boolean | true | Boolean | - | 多host场景下判断对象是否生效 | 用于判断多host场景下判断对象是否生效 | false | CSR | 硬件 |
BMCEnables 类 - 可选属性
| 属性名 | 类型 | 默认值 | 取值范围 | 动态关联 | 描述 | 使用场景 | 举例 | 来源 | 分类 |
|---|---|---|---|---|---|---|---|---|---|
RecvMsgIntrptEnabled | U8 | 1 | U8 | - | BMC到Host 侧消息中断使能 | 配置BMC到Host 侧消息中断使能 | 1 | CSR | 软件 |
📊 传感器类型枚举
传感器类型定义对应IPMI规范Sensor Type Codes(Table 42-1),取值如下:
| 代码 | 传感器类型 |
|---|---|
0x00 | Reserved(保留) |
0x01 | Temperature(温度) |
0x02 | Voltage(电压) |
0x03 | Current(电流) |
0x04 | Fan(风扇) |
0x05 | Physical Security(物理安全) |
0x06 | Platform Security(平台安全) |
0x07 | Processor(处理器) |
0x08 | Power Supply(电源) |
0x09 | Power Unit(电源单元) |
0x0A | Cooling Device(散热设备) |
0x0B | Other(其他) |
0x0C | Memory(内存) |
0x0D | Drive Slot / Bay(驱动器槽位) |
0x0E | POST Memory Resize(POST内存重设) |
0x0F | System Firmware Progress(系统固件进度) |
0x10 | Event Logging Disabled(事件日志禁用) |
0x11 | Watchdog1 |
0x12 | System Event(系统事件) |
0x13 | Critical Interrupt(关键中断) |
0x14 | Button(按钮) |
0x15 | Module / Board(模块/板卡) |
0x16 | Microcontroller(微控制器) |
0x17 | Add-in Card(插卡) |
0x18 | Chassis(机箱) |
0x19 | Chip Set(芯片组) |
0x1A | Other FRU(其他FRU) |
0x1B | Cable / Interconnect(线缆/互连) |
0x1C | Terminator(终端) |
0x1D | System Boot Initiated(系统启动发起) |
0x1E | Boot Error(启动错误) |
0x1F | OS Boot(OS启动) |
0x20 | OS Critical Stop(OS关键停止) |
0x21 | Slot / Connector(槽位/连接器) |
0x22 | System ACPI Power State(ACPI电源状态) |
0x23 | Watchdog2 |
0x24 | Platform Alert(平台告警) |
0x25 | Entity Presence(实体在位) |
0x26 | Monitor ASIC(监控ASIC) |
0x27 | LAN(局域网) |
0x28 | Management Subsys Health(管理子系统健康) |
0x29 | Battery(电池) |
0x2A | Session Audit(会话审计) |
0x2B | Version Change(版本变更) |
0x2C | FRU State(FRU状态) |
0xC0~0xEF | OEM Reserved(OEM保留) |
0xF0 | FRU Hot Swap(FRU热插拔) |
0xF1 | IPMB Physical Link(IPMB物理链路) |
0xF2 | Module Hot Swap(模块热插拔) |
0xF3 | Power Channel Notification(电源通道通知) |
0xF4 | Telco Alarm Input(电信告警输入) |
📊 读值类型枚举
读值类型定义对应IPMI规范Event/Reading Type Code(Table 42-1),取值如下:
| 代码 | 读值类型 |
|---|---|
0x00 | Unspecified(未指定) |
0x01 | Threshold(门限) |
0x02 | Generic Discrete(通用离散) |
0x03 | Sensor-specific Discrete(传感器特定离散) |
0x04 | OEM Discrete(OEM离散) |
0x05~0x6C | Reserved(保留) |
0x6F | Sensor-specific Event(传感器特定事件,如管理子系统健康) |
📊 线性化算法枚举
线性化算法定义对应IPMI规范Linearization,取值如下:
| 代码 | 线性化算法 |
|---|---|
0x00 | Linear(线性,无线性化) |
0x01 | ln(自然对数) |
0x02 | log10(常用对数) |
0x03 | log2(以2为底对数) |
0x04 | e(自然指数) |
0x05 | exp10(以10为底指数) |
0x06 | exp2(以2为底指数) |
0x07 | 1/x(倒数) |
0x08 | sqr(平方) |
0x09 | cube(立方) |
0x0A | sqrt(平方根) |
0x0B | cube root(立方根) |
0x10~0x6F | Reserved(保留) |
0x70 | Non-linear(非线性,查表方式) |
0x71~0xFF | Vendor Specific(厂商自定义) |
📊 门限掩码位定义
门限传感器(ThresholdSensor)的AssertMask/DeassertMask/ReadingMask为16bit位掩码,各bit定义如下(bit0为最低位):
AssertMask(事件产生掩码)
| bit | 含义 |
|---|---|
| bit0 | 下限一般事件 下降沿(Lower Non-critical Going Low)产生事件 |
| bit1 | 下限一般事件 上升沿(Lower Non-critical Going High)产生事件 |
| bit2 | 下限严重事件 下降沿(Lower Critical Going Low)产生事件 |
| bit3 | 下限严重事件 上升沿(Lower Critical Going High)产生事件 |
| bit4 | 下限紧急事件 下降沿(Lower Non-recoverable Going Low)产生事件 |
| bit5 | 下限紧急事件 上升沿(Lower Non-recoverable Going High)产生事件 |
| bit6 | 上限一般事件 下降沿(Upper Non-critical Going Low)产生事件 |
| bit7 | 上限一般事件 上升沿(Upper Non-critical Going High)产生事件 |
| bit8 | 上限严重事件 下降沿(Upper Critical Going Low)产生事件 |
| bit9 | 上限严重事件 上升沿(Upper Critical Going High)产生事件 |
| bit10 | 上限紧急事件 下降沿(Upper Non-recoverable Going Low)产生事件 |
| bit11 | 上限紧急事件 上升沿(Upper Non-recoverable Going High)产生事件 |
| bit12 | 读值低于下限一般值 时产生事件(Reading Lower Non-critical) |
| bit13 | 读值低于下限严重值 时产生事件(Reading Lower Critical) |
| bit14 | 读值低于下限紧急值 时产生事件(Reading Lower Non-recoverable) |
| bit15 | Reserved(保留) |
DeassertMask(事件恢复掩码)
| bit | 含义 |
|---|---|
| bit0 | 下限一般事件 下降沿(Lower Non-critical Going Low)恢复事件 |
| bit1 | 下限一般事件 上升沿(Lower Non-critical Going High)恢复事件 |
| bit2 | 下限严重事件 下降沿(Lower Critical Going Low)恢复事件 |
| bit3 | 下限严重事件 上升沿(Lower Critical Going High)恢复事件 |
| bit4 | 下限紧急事件 下降沿(Lower Non-recoverable Going Low)恢复事件 |
| bit5 | 下限紧急事件 上升沿(Lower Non-recoverable Going High)恢复事件 |
| bit6 | 上限一般事件 下降沿(Upper Non-critical Going Low)恢复事件 |
| bit7 | 上限一般事件 上升沿(Upper Non-critical Going High)恢复事件 |
| bit8 | 上限严重事件 下降沿(Upper Critical Going Low)恢复事件 |
| bit9 | 上限严重事件 上升沿(Upper Critical Going High)恢复事件 |
| bit10 | 上限紧急事件 下降沿(Upper Non-recoverable Going Low)恢复事件 |
| bit11 | 上限紧急事件 上升沿(Upper Non-recoverable Going High)恢复事件 |
| bit12 | 读值高于上限一般值 时恢复事件(Reading Upper Non-critical) |
| bit13 | 读值高于上限严重值 时恢复事件(Reading Upper Critical) |
| bit14 | 读值高于上限紧急值 时恢复事件(Reading Upper Non-recoverable) |
| bit15 | Reserved(保留) |
ReadingMask(读值掩码)
| bit | 含义 |
|---|---|
| bit0 | 下限一般值可读(Readable Lower Non-critical) |
| bit1 | 下限严重值可读(Readable Lower Critical) |
| bit2 | 下限紧急值可读(Readable Lower Non-recoverable) |
| bit3 | 上限一般值可读(Readable Upper Non-critical) |
| bit4 | 上限严重值可读(Readable Upper Critical) |
| bit5 | 上限紧急值可读(Readable Upper Non-recoverable) |
| bit6~bit7 | Reserved(保留) |
| bit8 | 下限一般值可设置(Settable Lower Non-critical) |
| bit9 | 下限严重值可设置(Settable Lower Critical) |
| bit10 | 下限紧急值可设置(Settable Lower Non-recoverable) |
| bit11 | 上限一般值可设置(Settable Upper Non-critical) |
| bit12 | 上限严重值可设置(Settable Upper Critical) |
| bit13 | 上限紧急值可设置(Settable Upper Non-recoverable) |
| bit14~bit15 | Reserved(保留) |
📊 离散传感器掩码位定义
离散传感器(DiscreteSensor)的AssertMask/DeassertMask/DiscreteMask为16bit位掩码,bit i对应事件偏移(Event Offset)i(bit0为最低位):
| bit | 含义 |
|---|---|
| bit i | 事件偏移offset i 对应的产生/恢复/离散状态,i取0~14 |
| bit15 | Reserved(保留) |
各传感器类型对应的Event Offset含义由IPMI规范中该Sensor Type的事件定义决定,例如Watchdog2(SensorType=0x23)的offset 0~3分别表示 定时器超时中断、硬复位、掉电、重启。
📊 线性换算系数位定义
门限传感器原始值到显示值的线性换算公式为:Y = (M×X + B×10^K),其中X为原始读值,K为指数(RBExp,有符号),M、B为有符号系数。M/MT/B/BA/Accuracy各字段位定义如下(bit0为最低位):
| 字段 | 位定义 |
|---|---|
M | bit[7:0]:M系数低8bit(有符号) |
MT | bit[6:0]:M系数高7bit(M[14:8]);bit[7]:Reserved |
B | bit[7:0]:B系数低8bit(有符号) |
BA | bit[1:0]:B系数高2bit(B[9:8]);bit[7:2]:准确率低6bit |
Accuracy | bit[7:2]:准确率高6bit;bit[1:0]:传感器方向 |
Accuracy bit[1:0] 传感器方向:
| 值 | 含义 |
|---|---|
00b | 方向未定义 |
01b | 数据随原始值增大而减小 |
10b | 数据随原始值增大而增大 |
11b | Reserved(保留) |
📊 单位修饰说明
ModifierUnit为传感器单位修饰词,取值为IPMI规范Unit Type Codes(与BaseUnit同一张表,0x00~0x5C,如 0x16=second、0x17=minute、0x12=RPM 等),与Unit字段的bit[6:5]修饰位共同决定显示单位:
| Unit[6:5] modifier | 显示单位组合 |
|---|---|
00b | 无修饰,直接显示基本单位 |
01b | 基本单位/ModifierUnit单位(如 每秒、每分) |
10b | 基本单位×ModifierUnit单位(乘积) |
11b | 保留 |
ModifierUnit默认配置为0(无修饰单位)。
📊 Entity Instance取值说明
实体实例标识(Instance)为实体实例号,取值范围0x00~0xFF,同一EntityId下各实体的Instance应唯一:
| 取值 | 说明 |
|---|---|
0x00 | 实体仅存在一个实例,或实例号未指定 |
0x01~0x5F | 实体实例号(多个同类实体时递增分配) |
0x60~0x7F | 设备相对实体实例号(推荐从0x60开始配置,避免与系统相对实例冲突) |
0x80~0xFF | 保留/OEM |
🔗 动态关联机制
语法规范
使用 <=/xxx 和表达式语法实现动态关联:
# Entity关联
EntityId: "<=/Entity_MainBoard.Id"
EntityInstance: "<=/Entity_MainBoard.Instance"
# 电源状态关联
PowerState: "<=/Scanner_PowerGood.Value"
# 传感器读值关联和表达式
Reading: "<=/Scanner_12v1.Value;<=/Scanner_PowerGood.Value |> expr(($2 == 0) ? 0 : (($1 / 12) > 255 ? 204 : ($1 / 12)))"
# 传感器状态关联
ReadingStatus: "<=/Scanner_12v1.Status;<=/Scanner_12v1.Value;<=/Scanner_PowerGood.Value |> expr((($1 == 0) && (($2 / 12) > 255) && ($3 == 1)) ? 2 : $1)"关联说明
- Entity关联: 传感器必须关联对应的实体对象
- PowerState: 可关联电源状态信号,支持动态上下电控制
- Reading: 支持复杂表达式计算,可关联多个Scanner值
- ReadingStatus: 传感器状态管理,支持条件表达式
📂 分类标准
硬件属性
- 定义:与硬件特性和物理参数直接相关的属性
- 特点:通常与IPMI标准协议规范对应,反映硬件特性
- 示例:
SensorType,ReadingType,SensorName,AssertMask,DeassertMask,ReadingMask,BaseUnit,M,RBExp,NominalReading,UpperCritical,LowerCritical,UpperNoncritical,LowerNonCritical,UpperNonrecoverable,LowerNonrecoverable,PositiveHysteresis,NegativeHysteresis,MaximumReading,Reading,ReadingStatus
软件属性
- 定义:用于逻辑控制和软件管理的参数
- 特点:由CSR配置管理,用于传感器逻辑控制
- 示例:
Id,Instance,Slot,Name,Presence,PowerState,OwnerId,OwnerLun,EntityId,EntityInstance,Initialization,Capabilities,Unit,MinimumReading,SensorNumber,DiscreteType
📝 配置示例
温度传感器配置
{
"Entity": {
"Id": 7,
"Instance": 96,
"Name": "MainBoard",
"Presence": 1,
"PowerState": "<=/Scanner_PowerGood.Value",
"Slot": 255
},
"ThresholdSensor": {
"OwnerId": 32,
"OwnerLun": 0,
"EntityId": "<=/Entity_MainBoard.Id",
"EntityInstance": "<=/Entity_MainBoard.Instance",
"Initialization": 127,
"Capabilities": 232,
"SensorType": 1,
"ReadingType": 1,
"SensorName": "CPU Temperature",
"AssertMask": 516,
"DeassertMask": 516,
"ReadingMask": 4626,
"Unit": 128,
"BaseUnit": 1,
"M": 1,
"MaximumReading": 127,
"MinimumReading": 128,
"UpperCritical": 85,
"LowerCritical": 0,
"PositiveHysteresis": 2,
"NegativeHysteresis": 2,
"Reading": "<=/Scanner_CpuTemp.Value",
"ReadingStatus": "<=/Scanner_CpuTemp.Status",
"SensorNumber": 255
}
}电压传感器配置
{
"Entity": {
"Id": 7,
"Instance": 97,
"Name": "PowerBoard",
"Presence": 1,
"PowerState": "<=/Scanner_PowerGood.Value",
"Slot": 255
},
"ThresholdSensor": {
"OwnerId": 32,
"OwnerLun": 0,
"EntityId": "<=/Entity_PowerBoard.Id",
"EntityInstance": "<=/Entity_PowerBoard.Instance",
"Initialization": 127,
"Capabilities": 232,
"SensorType": 2,
"ReadingType": 1,
"SensorName": "BCU1 VCC_12V0_1",
"AssertMask": 516,
"DeassertMask": 516,
"ReadingMask": 4626,
"Unit": 0,
"BaseUnit": 4,
"M": 6,
"RBExp": 224,
"NominalReading": 204,
"MaximumReading": 255,
"MinimumReading": 0,
"UpperCritical": 220,
"LowerCritical": 180,
"PositiveHysteresis": 4,
"NegativeHysteresis": 4,
"Reading": "<=/Scanner_12v1.Value;<=/Scanner_PowerGood.Value |> expr(($2 == 0) ? 0 : (($1 / 12) > 255 ? 204 : ($1 / 12)))",
"ReadingStatus": "<=/Scanner_12v1.Status;<=/Scanner_12v1.Value;<=/Scanner_PowerGood.Value |> expr((($1 == 0) && (($2 / 12) > 255) && ($3 == 1)) ? 2 : $1)",
"SensorNumber": 255
}
}离散传感器配置
{
"Entity": {
"Id": 7,
"Instance": 98,
"Name": "SystemBoard",
"Presence": 1,
"PowerState": 1,
"Slot": 255
},
"DiscreteSensor": {
"EntityId": "<=/Entity_SystemBoard.Id",
"EntityInstance": "<=/Entity_SystemBoard.Instance",
"Initialization": 99,
"Capabilities": 64,
"SensorType": 35,
"ReadingType": 111,
"SensorName": "Watchdog2",
"AssertMask": 271,
"DeassertMask": 271,
"DiscreteMask": 271,
"Unit": 192,
"BaseUnit": 0,
"DiscreteType": 0,
"SensorNumber": 255
}
}风扇传感器配置
{
"Entity": {
"Id": 29,
"Instance": 96,
"Name": "FanBoard",
"Presence": 1,
"PowerState": "<=/Scanner_PowerGood.Value",
"Slot": 255
},
"ThresholdSensor": {
"OwnerId": 32,
"OwnerLun": 0,
"EntityId": "<=/Entity_FanBoard.Id",
"EntityInstance": "<=/Entity_FanBoard.Instance",
"Initialization": 127,
"Capabilities": 232,
"SensorType": 4,
"ReadingType": 1,
"SensorName": "Fan1 Speed",
"AssertMask": 516,
"DeassertMask": 516,
"ReadingMask": 4626,
"Unit": 0,
"BaseUnit": 18,
"M": 1,
"MaximumReading": 255,
"MinimumReading": 0,
"LowerCritical": 20,
"PositiveHysteresis": 2,
"NegativeHysteresis": 2,
"Reading": "<=/Scanner_FanSpeed.Value",
"ReadingStatus": "<=/Scanner_FanSpeed.Status",
"SensorNumber": 255
}
}🔧 使用指南
配置步骤
- 创建实体对象:首先配置Entity,定义传感器所属的实体
- 选择传感器类型:根据需要选择ThresholdSensor或DiscreteSensor
- 关联实体:通过EntityId和EntityInstance关联对应的Entity
- 配置传感器属性:设置SensorType、ReadingType、SensorName等基本属性
- 设置掩码:配置AssertMask、DeassertMask、ReadingMask等掩码
- 配置单位和范围:设置Unit、BaseUnit、MaximumReading、MinimumReading等
- 关联数据源:通过Reading和ReadingStatus关联Scanner等数据源
- 设置门限:配置UpperCritical、LowerCritical等门限值(ThresholdSensor)
- 配置迟滞量:设置PositiveHysteresis、NegativeHysteresis避免抖动
注意事项
- IPMI标准遵循:所有配置必须符合IPMI标准协议规范
- 实体关联:传感器必须关联对应的Entity对象
- 数据格式:注意有符号数和无符号数的MaximumReading和MinimumReading配置
- Capabilities配置:根据实体的在位和上下电状态选择合适的Capabilities值
- 传感器编号:SensorNumber建议配置为255,由sensor模块自动分配
- 表达式语法:使用复杂表达式时需要确保语法正确
- 门限设置:ThresholdSensor的门限值要在MinimumReading和MaximumReading范围内
性能建议
- 合理设置迟滞量:避免传感器事件频繁触发和恢复
- 优化Reading表达式:复杂表达式可能影响性能
- 实体状态管理:合理配置Presence和PowerState减少无效扫描
- 传感器分组:相同类型的传感器可以考虑优化配置策略
故障排查
- 传感器不显示:检查Entity关联和Capabilities配置
- 读值异常:检查Reading表达式和数据源关联
- 事件不触发:检查AssertMask和DeassertMask配置
- 门限显示错误:检查ReadingMask和门限值配置
- 单位显示错误:检查Unit和BaseUnit配置
- 传感器状态异常:检查ReadingStatus表达式和实体状态