The hw.sensors framework is a kernel-level hardware sensors framework originating from OpenBSD, which uses the sysctl kernel interface as the transport layer between the kernel and the userland. As of 2019[update], the framework is used by over a hundred device drivers in OpenBSD to export various environmental sensors, with temperature sensors being the most common type.[1][2] Consumption and monitoring of sensors is done in the userland with the help of sysctl, systat, sensorsd, ntpd, snmpd, ports/sysutils/symon and GKrellM.[3][4]
Original author(s) | Constantine A. Murenin (2006) and Alexander Yurchenko (2003/2004) |
---|---|
Developer(s) | The OpenBSD Project |
Initial release | 25 April 2003 |
Repository |
|
Written in | C |
Operating system | OpenBSD, DragonFly |
Type | system monitoring |
Licence | ISC licence |
In OpenBSD, the framework is integrated with Dell's ESM, IPMI and I2C,[5][6] in addition to a number of popular Super I/O chips through lm(4)
.[2]
A major difference compared to other solutions like lm_sensors is simplicity and a works-by-default approach in the drivers, which don't require nor support any configurability; no installation or configuration actions are required by the system administrator in order to get the sensors going.[7][6] This is coupled with a fine-tuned ad-hoc read-only scan procedure on the I2C bus, written by Theo de Raadt in a centralised way with a cache, making it possible to leave it enabled by default at all times, unlike the competing solutions.[7][6][8]
drive
sensors
edit
Support for automatic monitoring of RAID drives is also provided through the sensors framework,[5] this concept of sensors of drive
type has been backported by NetBSD back into envsys in 2007.[2]
timedelta
sensors
edit
OpenNTPD uses sensors of type timedelta
in order to synchronise time.[9] These are provided by NMEA and other drivers.[10][11]
The framework was originally devised in 2003 by Alexander Yurchenko, when he was porting several envsys-based drivers from NetBSD. Instead of porting NetBSD's envsys, a simpler sysctl-based mechanism was developed.[2]
The framework received a major uptick in usage by the device drivers with the release of OpenBSD 3.9, where in a period of merely 6 months, the number of individual drivers using the framework went from 9 in OpenBSD 3.8 (released 1 November 2005) to 33 in OpenBSD 3.9 (released 1 May 2006).[2]
As of 23 December 2006[update], the framework was used by 44 devices drivers; it is at this time that a patchset has been committed converting a simple one-level addressing scheme into a more stable multi-layer addressing.[12][13]
In 2007, the framework was ported to FreeBSD as part of a Google Summer of Code grant; it has been adopted by DragonFly BSD later that year.[14] The usability of the sensorsd(8)
, the sensors monitoring daemon, has been vastly improved in 2007, partly due to same GSoC grant.[15]
As of 1 November 2008[update], the total number of drivers stood at 68 in OpenBSD 4.4; growing by 7 drivers in a 6-month release cycle.[16] This level of growth, of one new driver per month on average, has been common throughout the history of the framework since OpenBSD 3.9.[2]
The values exported by the drivers through the framework are read-only; however, an external patch exists that implements the fan control functionality in both the framework as well as one of the drivers for the most popular family of Super I/O chips; this patchset was provided for both OpenBSD and DragonFly BSD.[17][1]