How to write applications which use the hwmon drivers ===================================================== You have several choices in accessing sensor devices using the hwmon drivers. This document will briefly describe these methods, their advantages and disadvantages, and provide examples. From lowest-level to the highest-level, the access methods are: 1. sysfs access 2. libsensors library 3. sensors program Details: 1. sysfs access --------------- Hwmon drivers create subdirectories in the sysfs filesystem (usually /sys) which can be accessed directly by applications. Naming and content standards for the entries in these subdirectories are documented in the file Documentation/hwmon/sysfs-interface in the 2.6 kernel source tree. sysfs is the lowest-level access to sensor values. Note that most drivers provide only raw sensor readings via /sys; many readings must be scaled or adjusted, and these adjustments must often be changed by the user. An application using /sys must generally provide adjustment facilities and the requirements of the adjustments can be quite complex. For this reason, this approach isn't recommended. Instead, consider the libsensors library, which offers a higher-level interface on top of sysfs (see below.) Still, this method may work well for shell and perl scripts written to access a specific device. For an example of a program using /sys accesses, see gkrellm (though recent versions use libsensors instead.) See also lib/sysfs.c. 2. libsensors library --------------------- The libsensors library provides standardized access to all chip drivers. It also provides a translation layer with settings in /etc/sensors.conf so that your application sees adjusted (scaled) values using settings provided by the user. Other facilities are sensor labelling, limit setting, and ignoring individual sensors. This is the recommended way to access the sensor chips. The library API is documented in the libsensors(3) manual page. The configuration file format is documented in the sensors.conf(5) manual page. Note that since version 3.2.0, libsensors falls under the LGPL, not the GPL as it used to. In more human language, that means it is now ALLOWED to link any application to the library, even to the shared version, regardless of the application's license. For examples of programs using libsensors accesses, see prog/sensors and prog/sensord. 3. sensors program ------------------ The 'sensors' program is a text-based application that uses libsensors. The output is fairly standardized; therefore this output could be used by other applications. One simple method is 'sensors|grep ALARM'. Note though that there is no guarantee that the output format won't change in the future, so be careful. We might improve the command-line interface of 'sensors' someday to make it more convenient for external programs to use it as a back-end.