Hw.sensors

Last updated

hw.sensors
Original author(s) Constantine A. Murenin (2006) and Alexander Yurchenko (2003/2004)
Developer(s) The OpenBSD Project
Initial release25 April 2003;20 years ago (2003-04-25)
Repository
Written in C
Operating system OpenBSD, DragonFly
Type system monitoring
Licence ISC licence

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, 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]

Contents

Drivers

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]

RAID 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]

OpenNTPD timedelta sensors

OpenNTPD uses sensors of type timedelta in order to synchronise time. [9] These are provided by NMEA and other drivers. [10] [11]

History

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, 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, 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]

See also

Related Research Articles

<span class="mw-page-title-main">I²C</span> Serial communication bus

I2C (Inter-Integrated Circuit; pronounced as “eye-squared-see” or “eye-two-see”), alternatively known as I2C or IIC, is a synchronous, multi-master/multi-slave (controller/target), single-ended, serial communication bus invented in 1982 by Philips Semiconductors. It is widely used for attaching lower-speed peripheral ICs to processors and microcontrollers in short-distance, intra-board communication.

NMEA 0183 is a combined electrical and data specification for communication between marine electronics such as echo sounder, sonars, anemometer, gyrocompass, autopilot, GPS receivers and many other types of instruments. It has been defined and is controlled by the National Marine Electronics Association (NMEA). It replaces the earlier NMEA 0180 and NMEA 0182 standards. In leisure marine applications, it is slowly being phased out in favor of the newer NMEA 2000 standard, though NMEA 0183 remains the norm in commercial shipping.

<span class="mw-page-title-main">Open Firmware</span> Standard for computer bootstrap code

Open Firmware is a standard defining the interfaces of a computer firmware system, formerly endorsed by the Institute of Electrical and Electronics Engineers (IEEE). It originated at Sun Microsystems where it was known as OpenBoot, and has been used by multiple vendors including Sun, Apple, IBM and ARM.

A disk array controller is a device that manages the physical disk drives and presents them to the computer as logical units. It almost always implements hardware RAID, thus it is sometimes referred to as RAID controller. It also often provides additional disk cache.

sysfs is a pseudo file system provided by the Linux kernel that exports information about various kernel subsystems, hardware devices, and associated device drivers from the kernel's device model to user space through virtual files. In addition to providing information about various devices and kernel subsystems, exported virtual files are also used for their configuration.

sysctl Unix-like software that manages kernel attributes

sysctl is a software utility of some Unix-like operating systems that reads and modifies the attributes of the system kernel such as its version number, maximum limits, and security settings. It is available both as a system call for compiled programs, and an administrator command for interactive use and scripting. Linux additionally exposes sysctl as a virtual file system.

In computing, ioctl is a system call for device-specific input/output operations and other operations which cannot be expressed by regular file semantics. It takes a parameter specifying a request code; the effect of a call depends completely on the request code. Request codes are often device-specific. For instance, a CD-ROM device driver which can instruct a physical device to eject a disc would provide an ioctl request code to do so. Device-independent request codes are sometimes used to give userspace access to kernel functions which are only used by core system software or still under development.

<span class="mw-page-title-main">Super I/O</span> Class of I/O controller integrated circuits

Super I/O is a class of I/O controller integrated circuits that began to be used on personal computer motherboards in the late 1980s, originally as add-in cards, later embedded on the motherboards. A super I/O chip combines interfaces for a variety of low-bandwidth devices. Now it is mostly merged with EC.

The OpenBSD operating system focuses on security and the development of security features. According to author Michael W. Lucas, OpenBSD "is widely regarded as the most secure operating system available anywhere, under any licensing terms."

A system monitor is a hardware or software component used to monitor system resources and performance in a computer system.

In the context of free and open-source software, proprietary software only available as a binary executable is referred to as a blob or binary blob. The term usually refers to a device driver module loaded into the kernel of an open-source operating system, and is sometimes also applied to code running outside the kernel, such as system firmware images, microcode updates, or userland programs. The term blob was first used in database management systems to describe a collection of binary data stored as a single entity.

lm_sensors Software tool

lm_sensors is a free open-source software-tool for Linux that provides tools and drivers for monitoring temperatures, voltage, humidity, and fans. It can also detect chassis intrusions.

Proprietary firmware is any firmware that has had its use, private modification, copying, or republishing restricted by the producer. Proprietors may enforce restrictions by technical means, such as by restricting source code access, firmware replacement restrictions, or by legal means, such as through copyright and patents. Alternatives to proprietary firmware may be free (libre) or open-source.

<span class="mw-page-title-main">OpenBSD</span> Operating system

OpenBSD is a security-focused, free and open-source, Unix-like operating system based on the Berkeley Software Distribution (BSD). Theo de Raadt created OpenBSD in 1995 by forking NetBSD 1.0. The OpenBSD project emphasizes portability, standardization, correctness, proactive security, and integrated cryptography.

Sensors are devices that measure physical quantities and convert them into signals which can be read by observers or by instruments.

<span class="mw-page-title-main">NetBSD</span> Free and open-source Unix-like operating system

NetBSD is a free and open-source Unix operating system based on the Berkeley Software Distribution (BSD). It was the first open-source BSD descendant officially released after 386BSD was forked. It continues to be actively developed and is available for many platforms, including servers, desktops, handheld devices, and embedded systems.

The envsys framework is a kernel-level hardware monitoring sensors framework in NetBSD. As of 4 March 2019, the framework is used by close to 85 device drivers to export various environmental monitoring sensors, as evidenced by references of the sysmon_envsys_register symbol within the sys path of NetBSD; with temperature sensors, ENVSYS_STEMP, being the most likely type to be exported by any given driver. Sensors are registered with the kernel through sysmon_envsys(9) API. Consumption and monitoring of sensors from the userland is performed with the help of envstat utility through proplib(3) through ioctl(2) against the /dev/sysmon pseudo-device file, the powerd power management daemon that responds to kernel events by running scripts from /etc/powerd/scripts/, as well as third-party tools like symon and GKrellM from pkgsrc.

The bio(4) pseudo-device driver and the bioctl(8) utility implement a generic RAID volume management interface in OpenBSD and NetBSD. The idea behind this software is similar to ifconfig, where a single utility from the operating system can be used to control any RAID controller using a generic interface, instead of having to rely on many proprietary and custom RAID management utilities specific for each given hardware RAID manufacturer. Features include monitoring of the health status of the arrays, controlling identification through blinking the LEDs and managing of sound alarms, and specifying hot spare disks. Additionally, the softraid configuration in OpenBSD is delegated to bioctl as well; whereas the initial creation of volumes and configuration of hardware RAID is left to card BIOS as non-essential after the operating system has already been booted. Interfacing between the kernel and userland is performed through the ioctl system call through the /dev/bio pseudo-device.

systat is a BSD UNIX console application for displaying system statistics in fullscreen mode using ncurses/curses. It is available on, and by default ships in the base systems of, FreeBSD, NetBSD, OpenBSD and DragonFly BSD. It was first released as part of 4.3BSD in 1986.

References

  1. 1 2 Constantine A. Murenin (May 21, 2010). OpenBSD Hardware Sensors — Environmental Monitoring and Fan Control (MMath). University of Waterloo, Waterloo, Ontario, Canada: UWSpace. hdl:10012/5234. Document ID: ab71498b6b1a60ff817b29d56997a418.
  2. 1 2 3 4 5 6 Constantine A. Murenin; Raouf Boutaba (March 17, 2009). OpenBSD Hardware Sensors Framework (PDF). AsiaBSDCon 2009 Proceedings, 12–15 March 2009. Tokyo University of Science, Tokyo, Japan (published March 14, 2009). Archived (PDF) from the original on February 21, 2009. Retrieved March 4, 2019.
  3. Jeremy Andrews (June 7, 2008). "BSDCan 2008: Hardware Sensors Framework". KernelTrap . Archived from the original on December 18, 2010. Retrieved March 4, 2019.
  4. "gkrellm-server-2.3.10p1 – single process stack of system monitors for GTK+2 (server)". OpenBSD ports . June 1, 2018. Retrieved March 4, 2019.
  5. 1 2 David Gwynne; Marco Peereboom (December 3, 2006). bio and sensors in OpenBSD (PDF). OpenCON 2006, 2–3 December 2006. Courtyard Venice Airport, Venice/Tessera, Italy. Retrieved March 4, 2019.
  6. 1 2 3 Ingrid Marson (March 24, 2006). "OpenBSD 3.9 adds sensor framework". ZDNet . Retrieved March 4, 2019.
  7. 1 2 Manolis Tzanidakis (March 28, 2006). "Interview: Theo de Raadt of OpenBSD". Linux.com . Retrieved March 4, 2019.
  8. Theo de Raadt (May 29, 2015). "/sys/dev/i2c/i2c_scan.c". Super User's BSD Cross Reference. Retrieved March 4, 2019.
  9. Henning Brauer (September 3, 2016). "ntpd/sensors.c". Super User's BSD Cross Reference. Retrieved March 4, 2019.
  10. Marc Balmer (March 15, 2007). Support for Radio Clocks in OpenBSD (PDF). AsiaBSDCon 2007 Proceedings, 8–11 March 2007. Tokyo, Japan (published March 10, 2007). Archived (PDF) from the original on August 27, 2008. Retrieved March 4, 2019.
  11. Marc Balmer (January 26, 2019). "/sys/kern/tty_nmea.c". Super User's BSD Cross Reference. Retrieved March 4, 2019.
  12. Constantine A. Murenin (2007). Generalised Interfacing with Microprocessor System Hardware Monitors. Proceedings of 2007 IEEE International Conference on Networking, Sensing and Control, 15–17 April 2007. London, United Kingdom. doi:10.1109/ICNSC.2007.372901. IEEE ICNSC 2007, pp. 901—906.
  13. Constantine A. Murenin (December 30, 2006). Marco Peereboom (ed.). "New two-level sensor API". OpenBSD Journal . Retrieved March 4, 2019.
  14. Constantine A. Murenin (October 14, 2007). "GSoC2007/cnst-sensors". FreeBSD . Retrieved March 4, 2019.
  15. Federico Biancuzzi (November 1, 2007). "Puffy's Marathon: What's New in OpenBSD 4.2". O'Reilly Media. Archived from the original on October 13, 2011. Retrieved March 3, 2019.
  16. Federico Biancuzzi (November 3, 2008). "Source Wars - Return of the Puffy: What's New in OpenBSD 4.4". O'Reilly Media. Archived from the original on May 24, 2012. Retrieved March 3, 2019.
  17. Constantine A. Murenin (March 14, 2010). "Quiet computing with BSD: Fan control with sysctl hw.sensors and lm(4) on OpenBSD and DragonFly BSD" . Retrieved March 4, 2019.