141 lines
6.2 KiB
ReStructuredText
141 lines
6.2 KiB
ReStructuredText
|
.. SPDX-License-Identifier: GPL-2.0-or-later
|
||
|
|
||
|
.. include:: <isonum.txt>
|
||
|
|
||
|
===========================
|
||
|
Linux HP WMI Sensors Driver
|
||
|
===========================
|
||
|
|
||
|
:Copyright: |copy| 2023 James Seo <james@equiv.tech>
|
||
|
|
||
|
Description
|
||
|
===========
|
||
|
|
||
|
Hewlett-Packard (and some HP Compaq) business-class computers report hardware
|
||
|
monitoring information via Windows Management Instrumentation (WMI).
|
||
|
This driver exposes that information to the Linux hwmon subsystem, allowing
|
||
|
userspace utilities like ``sensors`` to gather numeric sensor readings.
|
||
|
|
||
|
sysfs interface
|
||
|
===============
|
||
|
|
||
|
When the driver is loaded, it discovers the sensors available on the
|
||
|
system and creates the following sysfs attributes as necessary within
|
||
|
``/sys/class/hwmon/hwmon[X]``:
|
||
|
|
||
|
(``[X]`` is some number that depends on other system components.)
|
||
|
|
||
|
======================= ======= ===================================
|
||
|
Name Perm Description
|
||
|
======================= ======= ===================================
|
||
|
``curr[X]_input`` RO Current in milliamperes (mA).
|
||
|
``curr[X]_label`` RO Current sensor label.
|
||
|
``fan[X]_input`` RO Fan speed in RPM.
|
||
|
``fan[X]_label`` RO Fan sensor label.
|
||
|
``fan[X]_fault`` RO Fan sensor fault indicator.
|
||
|
``fan[X]_alarm`` RO Fan sensor alarm indicator.
|
||
|
``in[X]_input`` RO Voltage in millivolts (mV).
|
||
|
``in[X]_label`` RO Voltage sensor label.
|
||
|
``temp[X]_input`` RO Temperature in millidegrees Celsius
|
||
|
(m\ |deg|\ C).
|
||
|
``temp[X]_label`` RO Temperature sensor label.
|
||
|
``temp[X]_fault`` RO Temperature sensor fault indicator.
|
||
|
``temp[X]_alarm`` RO Temperature sensor alarm indicator.
|
||
|
``intrusion[X]_alarm`` RW Chassis intrusion alarm indicator.
|
||
|
======================= ======= ===================================
|
||
|
|
||
|
``fault`` attributes
|
||
|
Reading ``1`` instead of ``0`` as the ``fault`` attribute for a sensor
|
||
|
indicates that it has encountered some issue during operation such that
|
||
|
measurements from it should not be trusted. If a sensor with the fault
|
||
|
condition recovers later, reading this attribute will return ``0`` again.
|
||
|
|
||
|
``alarm`` attributes
|
||
|
Reading ``1`` instead of ``0`` as the ``alarm`` attribute for a sensor
|
||
|
indicates that one of the following has occurred, depending on its type:
|
||
|
|
||
|
- ``fan``: The fan has stalled or has been disconnected while running.
|
||
|
- ``temp``: The sensor reading has reached a critical threshold.
|
||
|
The exact threshold is system-dependent.
|
||
|
- ``intrusion``: The system's chassis has been opened.
|
||
|
|
||
|
After ``1`` is read from an ``alarm`` attribute, the attribute resets itself
|
||
|
and returns ``0`` on subsequent reads. As an exception, an
|
||
|
``intrusion[X]_alarm`` can only be manually reset by writing ``0`` to it.
|
||
|
|
||
|
debugfs interface
|
||
|
=================
|
||
|
|
||
|
.. warning:: The debugfs interface is subject to change without notice
|
||
|
and is only available when the kernel is compiled with
|
||
|
``CONFIG_DEBUG_FS`` defined.
|
||
|
|
||
|
The standard hwmon interface in sysfs exposes sensors of several common types
|
||
|
that are connected as of driver initialization. However, there are usually
|
||
|
other sensors in WMI that do not meet these criteria. In addition, a number of
|
||
|
system-dependent "platform events objects" used for ``alarm`` attributes may
|
||
|
be present. A debugfs interface is therefore provided for read-only access to
|
||
|
all available HP WMI sensors and platform events objects.
|
||
|
|
||
|
``/sys/kernel/debug/hp-wmi-sensors-[X]/sensor``
|
||
|
contains one numbered entry per sensor with the following attributes:
|
||
|
|
||
|
=============================== =======================================
|
||
|
Name Example
|
||
|
=============================== =======================================
|
||
|
``name`` ``CPU0 Fan``
|
||
|
``description`` ``Reports CPU0 fan speed``
|
||
|
``sensor_type`` ``12``
|
||
|
``other_sensor_type`` (an empty string)
|
||
|
``operational_status`` ``2``
|
||
|
``possible_states`` ``Normal,Caution,Critical,Not Present``
|
||
|
``current_state`` ``Normal``
|
||
|
``base_units`` ``19``
|
||
|
``unit_modifier`` ``0``
|
||
|
``current_reading`` ``1008``
|
||
|
``rate_units`` ``0`` (only exists on some systems)
|
||
|
=============================== =======================================
|
||
|
|
||
|
If platform events objects are available,
|
||
|
``/sys/kernel/debug/hp-wmi-sensors-[X]/platform_events``
|
||
|
contains one numbered entry per object with the following attributes:
|
||
|
|
||
|
=============================== ====================
|
||
|
Name Example
|
||
|
=============================== ====================
|
||
|
``name`` ``CPU0 Fan Stall``
|
||
|
``description`` ``CPU0 Fan Speed``
|
||
|
``source_namespace`` ``root\wmi``
|
||
|
``source_class`` ``HPBIOS_BIOSEvent``
|
||
|
``category`` ``3``
|
||
|
``possible_severity`` ``25``
|
||
|
``possible_status`` ``5``
|
||
|
=============================== ====================
|
||
|
|
||
|
These represent the properties of the underlying ``HPBIOS_BIOSNumericSensor``
|
||
|
and ``HPBIOS_PlatformEvents`` WMI objects, which vary between systems.
|
||
|
See [#]_ for more details and Managed Object Format (MOF) definitions.
|
||
|
|
||
|
Known issues and limitations
|
||
|
============================
|
||
|
|
||
|
- If the existing hp-wmi driver for non-business-class HP systems is already
|
||
|
loaded, ``alarm`` attributes will be unavailable even on systems that
|
||
|
support them. This is because the same WMI event GUID used by this driver
|
||
|
for ``alarm`` attributes is used on those systems for e.g. laptop hotkeys.
|
||
|
- Dubious sensor hardware and inconsistent BIOS WMI implementations have been
|
||
|
observed to cause inaccurate readings and peculiar behavior, such as alarms
|
||
|
failing to occur or occurring only once per boot.
|
||
|
- Only temperature, fan speed, and intrusion sensor types have been seen in
|
||
|
the wild so far. Support for voltage and current sensors is therefore
|
||
|
provisional.
|
||
|
- Although HP WMI sensors may claim to be of any type, any oddball sensor
|
||
|
types unknown to hwmon will not be supported.
|
||
|
|
||
|
References
|
||
|
==========
|
||
|
|
||
|
.. [#] Hewlett-Packard Development Company, L.P.,
|
||
|
"HP Client Management Interface Technical White Paper", 2005. [Online].
|
||
|
Available: https://h20331.www2.hp.com/hpsub/downloads/cmi_whitepaper.pdf
|