Linux HP WMI 传感器驱动

版权:

© 2023 James Seo <james@equiv.tech>

描述

惠普 (以及一些 HP Compaq) 商用级计算机通过 Windows Management Instrumentation (WMI) 报告硬件监控信息。 此驱动程序将该信息公开给 Linux hwmon 子系统,允许诸如 sensors 之类的用户空间实用程序收集数字传感器读数。

sysfs 接口

加载驱动程序后,它会发现系统上可用的传感器,并在 /sys/class/hwmon/hwmon[X] 中根据需要创建以下 sysfs 属性

([X] 是取决于其他系统组件的某个数字。)

名称

权限

描述

curr[X]_input

RO

电流,单位为毫安 (mA)。

curr[X]_label

RO

电流传感器标签。

fan[X]_input

RO

风扇转速,单位为 RPM。

fan[X]_label

RO

风扇传感器标签。

fan[X]_fault

RO

风扇传感器故障指示器。

fan[X]_alarm

RO

风扇传感器警报指示器。

in[X]_input

RO

电压,单位为毫伏 (mV)。

in[X]_label

RO

电压传感器标签。

temp[X]_input

RO

温度,单位为千分之一摄氏度 (m°C)。

temp[X]_label

RO

温度传感器标签。

temp[X]_fault

RO

温度传感器故障指示器。

temp[X]_alarm

RO

温度传感器警报指示器。

intrusion[X]_alarm

RW

机箱入侵警报指示器。

fault 属性

1 而不是 0 读取为传感器的 fault 属性表示它在运行期间遇到了一些问题,因此不应信任来自它的测量结果。 如果具有故障状况的传感器稍后恢复,则读取此属性将再次返回 0

alarm 属性

1 而不是 0 读取为传感器的 alarm 属性表示已发生以下情况之一,具体取决于其类型

  • fan: 风扇已停止或在运行时已断开连接。

  • temp: 传感器读数已达到临界阈值。 确切的阈值取决于系统。

  • intrusion: 系统的机箱已打开。

alarm 属性读取 1 后,该属性会自行重置,并在后续读取时返回 0。 作为一个例外,intrusion[X]_alarm 只能通过手动写入 0 来重置。

debugfs 接口

警告

debugfs 接口可能会在没有通知的情况下更改,并且仅在编译内核时定义了 CONFIG_DEBUG_FS 时才可用。

sysfs 中的标准 hwmon 接口公开了在驱动程序初始化时连接的几种常见类型的传感器。 但是,WMI 中通常还有其他传感器不符合这些标准。 此外,可能存在许多用于 alarm 属性的特定于系统的“平台事件对象”。 因此,提供了一个 debugfs 接口,用于对所有可用的 HP WMI 传感器和平台事件对象进行只读访问。

/sys/kernel/debug/hp-wmi-sensors-[X]/sensor 包含每个传感器的一个编号条目,具有以下属性

名称

示例

名称

CPU0 风扇

描述

报告 CPU0 风扇 速度

sensor_type

12

other_sensor_type

(一个空字符串)

operational_status

2

possible_states

正常,谨慎,严重,不存在

current_state

正常

base_units

19

unit_modifier

0

current_reading

1008

rate_units

0 (仅存在于某些系统上)

如果平台事件对象可用,则 /sys/kernel/debug/hp-wmi-sensors-[X]/platform_events 包含每个对象的一个编号条目,具有以下属性

名称

示例

名称

CPU0 风扇 停止

描述

CPU0 风扇 速度

source_namespace

root\wmi

source_class

HPBIOS_BIOSEvent

category

3

possible_severity

25

possible_status

5

这些代表底层 HPBIOS_BIOSNumericSensorHPBIOS_PlatformEvents WMI 对象的属性,这些属性在不同系统之间有所不同。 有关更多详细信息和托管对象格式 (MOF) 定义,请参见 [1]

已知问题和限制

  • 如果已加载用于非商用 HP 系统的现有 hp-wmi 驱动程序,即使在支持它们的系统上,alarm 属性也将不可用。 这是因为此驱动程序用于 alarm 属性的相同 WMI 事件 GUID 用于这些系统上,例如,用于笔记本电脑热键。

  • 已经观察到可疑的传感器硬件和不一致的 BIOS WMI 实现会导致不准确的读数和奇怪的行为,例如警报无法发生或每次启动仅发生一次。

  • 到目前为止,仅在实际应用中看到温度、风扇速度和入侵传感器类型。 因此,对电压和电流传感器的支持是暂定的。

  • 尽管 HP WMI 传感器可能声称是任何类型,但 hwmon 未知的任何奇怪的传感器类型将不受支持。

参考文献