| .. 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 |