Original author(s) | Constantine A. Murenin (2006), 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 |
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, OpenBSD NTP Daemon ( OpenNTPD, ntpd), Simple Network Management Protocol (snmpd), ports/sysutils/symon and GKrellM. [3] [4]
In OpenBSD, the framework is integrated with
Dell's ESM,
Intelligent Platform Management Interface (IPMI) and
I2C,
[5]
[6] in addition to several 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 need or support any configurability; no installation or configuration actions are required by the system administrator 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
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
OpenNTPD uses sensors of type timedelta
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]
Framework use by the device drivers rose sharply with the release of OpenBSD 3.9. Then, in only 6 months, the number of individual drivers using the framework rose 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. At this time, a patchset was 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 was adopted by
DragonFly BSD later that year.
[14] The usability of the
sensorsd(8)
, the sensor monitoring
daemon, was vastly improved in 2007, partly via the 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 rate 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 functions in both the framework, and in 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]