Linux HP WMI 传感器驱动

版权:

© 2023 James Seo <james@equiv.tech>

描述

惠普 (Hewlett-Packard)(以及一些 HP Compaq)的商业级计算机通过 Windows 管理规范 (WMI) 报告硬件监控信息。此驱动程序将该信息暴露给 Linux hwmon 子系统,允许用户空间实用程序(如 sensors)收集数字传感器读数。

sysfs 接口

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

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

名称

权限

描述

curr[X]_input

只读

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

curr[X]_label

只读

电流传感器标签。

fan[X]_input

只读

风扇转速,单位为 RPM。

fan[X]_label

只读

风扇传感器标签。

fan[X]_fault

只读

风扇传感器故障指示器。

fan[X]_alarm

只读

风扇传感器警报指示器。

in[X]_input

只读

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

in[X]_label

只读

电压传感器标签。

temp[X]_input

只读

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

temp[X]_label

只读

温度传感器标签。

temp[X]_fault

只读

温度传感器故障指示器。

temp[X]_alarm

只读

温度传感器警报指示器。

intrusion[X]_alarm

读写

机箱入侵警报指示器。

fault 属性

读取传感器的 fault 属性时,如果读取到 1 而不是 0,则表示该传感器在运行期间遇到了一些问题,因此不应信任该传感器的测量值。如果出现故障的传感器后来恢复,读取此属性将再次返回 0

alarm 属性

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

  • 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

Normal,Caution,Critical,Not Present

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 未知的任何奇怪的传感器类型将不受支持。

参考文献