OpenLMI Fan provider implements Fan Profile
Implemented DMTF version: 1.0.1
Described by DSP1013
It defines the classes used to describe the fans and the possible redundancy of the fans in a managed system. The document also defines association classes that describe the relationship of the fan to the fan’s physical aspects (such as FRU data) to the sensors monitoring the fans, to other cooling devices, to redundancy status, and to DMTF profile version information. The information in this specification is intended to be sufficient for a provider or consumer of this data to identify unambiguously the classes, properties, methods, and values that are mandatory to be instantiated and manipulated to represent and manage fans and redundant fans of managed systems and subsystems that are modeled using the DMTF CIM core and extended model definitions.
Not implemented features¶
DMTF profile defines many classes that are not instrumented due to limitations of low level libraries giving informations about fans. Here is a list of not implemented classes:
- Models the piece of hardware being cooled by particular fan. It’s associated with LMI_Fan through CIM_AssociatedColling which is also not instrumented.
- Represents redundacy of fans belonging to particular computer system. It’s associated with LMI_Fan through CIM_MemberOfCollection and CIM_IsSpare associations. There is no way how to detect whether the fan is spare or not.
Classes that shall be implemented¶
There are still classes missing implementation and are planned to be delivered in future versions.
Represents the the fan installed and connected to computer. One of the most important keys is DeviceID. It’s a sys path to kernel driver’s abstraction for fan combined with its name.
Typical sys directory for fan looks like this:
/sys/class/hwmon/hwmon1/device/ ├── driver -> ../../../bus/platform/drivers/thinkpad_hwmon ├── fan1_input ├── hwmon │ └── hwmon1 │ ├── device -> ../../../thinkpad_hwmon │ ├── power │ │ ├── async │ │ ├── autosuspend_delay_ms │ │ ├── control │ │ ├── runtime_active_kids │ │ ├── runtime_active_time │ │ ├── runtime_enabled │ │ ├── runtime_status │ │ ├── runtime_suspended_time │ │ └── runtime_usage │ ├── subsystem -> ../../../../../class/hwmon │ └── uevent ├── modalias ├── name ├── power │ ├── async │ ├── autosuspend_delay_ms │ ├── control │ ├── runtime_active_kids │ ├── runtime_active_time │ ├── runtime_enabled │ ├── runtime_status │ ├── runtime_suspended_time │ └── runtime_usage ├── pwm1 ├── pwm1_enable ├── subsystem -> ../../../bus/platform └── uevent
Corresponding DeviceID is /sys/class/hwmon/hwmon1/device/fan1. The fan name is the prefix of *_input file which gives the current RPM value.
It has several other interesting properties:
- OtherIdentifyingInfo : string 
- Has the name of chip controlling the fan as the first item.
Represents a sensor measuring a speed of particular fan. It’s exactly the same keys and values except for CreationClassName containg the name of corresponding class LMI_Fan.
It inherts many methods that are not supported because underlying library does not offer such functionality. Controlling of fans is very hardware dependent. Different drivers may provide different ways and possibilities to manage connected fans.