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]
是取决于其他系统组件的某个数字。)
名称 |
权限 |
描述 |
---|---|---|
|
RO |
电流,单位为毫安 (mA)。 |
|
RO |
电流传感器标签。 |
|
RO |
风扇转速,单位为 RPM。 |
|
RO |
风扇传感器标签。 |
|
RO |
风扇传感器故障指示器。 |
|
RO |
风扇传感器警报指示器。 |
|
RO |
电压,单位为毫伏 (mV)。 |
|
RO |
电压传感器标签。 |
|
RO |
温度,单位为千分之一摄氏度 (m°C)。 |
|
RO |
温度传感器标签。 |
|
RO |
温度传感器故障指示器。 |
|
RO |
温度传感器警报指示器。 |
|
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
包含每个传感器的一个编号条目,具有以下属性
名称 |
示例 |
---|---|
|
|
|
|
|
|
|
(一个空字符串) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
如果平台事件对象可用,则 /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 未知的任何奇怪的传感器类型将不受支持。