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]
是一个取决于其他系统组件的数字。)
名称 |
权限 |
描述 |
---|---|---|
|
只读 |
电流,单位为毫安 (mA)。 |
|
只读 |
电流传感器标签。 |
|
只读 |
风扇转速,单位为 RPM。 |
|
只读 |
风扇传感器标签。 |
|
只读 |
风扇传感器故障指示器。 |
|
只读 |
风扇传感器警报指示器。 |
|
只读 |
电压,单位为毫伏 (mV)。 |
|
只读 |
电压传感器标签。 |
|
只读 |
温度,单位为千分之一摄氏度 (m°C)。 |
|
只读 |
温度传感器标签。 |
|
只读 |
温度传感器故障指示器。 |
|
只读 |
温度传感器警报指示器。 |
|
读写 |
机箱入侵警报指示器。 |
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
包含每个传感器的一个编号条目,其中包含以下属性
名称 |
示例 |
---|---|
|
|
|
|
|
|
|
(空字符串) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
如果平台事件对象可用,则 /sys/kernel/debug/hp-wmi-sensors-[X]/platform_events
包含每个对象的一个编号条目,其中包含以下属性
名称 |
示例 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
这些表示底层 HPBIOS_BIOSNumericSensor
和 HPBIOS_PlatformEvents
WMI 对象的属性,这些属性因系统而异。有关更多详细信息和托管对象格式 (MOF) 定义,请参阅 [1]。
已知问题和限制¶
如果用于非商业级 HP 系统的现有 hp-wmi 驱动程序已加载,即使在支持它们的系统上,
alarm
属性也将不可用。这是因为此驱动程序用于alarm
属性的同一个 WMI 事件 GUID 在这些系统上用于(例如)笔记本电脑热键。观察到可疑的传感器硬件和不一致的 BIOS WMI 实现会导致不准确的读数和特殊的行为,例如警报未能发生或每次启动只发生一次。
到目前为止,只在实际中看到了温度、风扇转速和入侵传感器类型。因此,对电压和电流传感器的支持是临时的。
尽管 HP WMI 传感器可能声称是任何类型,但 hwmon 未知的任何奇怪的传感器类型将不受支持。