bsdhwmon
—
hardware sensor monitoring utility
bsdhwmon |
[ -Jhlv ]
[-f
device ] |
bsdhwmon
is a user-land application which
communicates via SMBus with hardware monitoring ICs on motherboards. Many
different pieces of information can be returned, but the most common are fan
RPMs, processor and system temperatures, and motherboard voltages. All data is
sent to standard output.
At this time,
bsdhwmon
supports a multitude
of Winbond hardware monitoring ICs, predominantly on Supermicro motherboards.
The options are as follows:
-J
- Output data in a JSON-compliant format.
-c
- Output data in a comma-delimited format. Sensor name, its value, and the
associated unit (V for volts, C for Celsius, RPM for rotations per minute,
etc.) are individual parameters.
-f
device
- Specify an alternate SMBus device. Default is
/dev/smb0.
-l
- List motherboards supported by
bsdhwmon
.
-h
- Help or usage syntax.
-v
- Increase verbosity (includes debugging output).
bsdhwmon
requires a few hardware and software
features to function:
- A system BIOS that provides a SMBIOS table. Specifically, the existence of
the
smbios.planar.maker
and
smbios.planar.product
kenv(2)
kernel environment strings. You can verify the existence of these
variables by using
kenv(1).
device smb
built into your kernel or
loaded using
kldload(8),
device smbus
built into your kernel or
loaded using
kldload(8),
- An appropriate SMBus chipset driver, such as
amdsmb(4),
ichsmb(4),
or
nfsmb(4),
built into your kernel or loaded via
kldload(8).
Failure to meet all of the above requirements will result in
bsdhwmon
not functioning.
bsdhwmon
attempts to mimic output formatting
and sensor strings to that of the BIOS's Hardware Monitoring menu option (if
available). However, due to limited hardware availability and user beta
testing, some strings may not match the BIOS exactly (such as "PECI
Agent" being replaced with "CPU Core").
For example, a Supermicro PDSMi+ motherboard might output something like this:
CPU Temperature 34 C
System Temperature 36 C
FAN1 0 RPM
FAN2 0 RPM
FAN3 0 RPM
FAN4 2000 RPM
FAN5 1527 RPM
FAN6 1785 RPM
Vcore 1.198 V
+1.5V 1.540 V
-12V -12.288 V
Vdimm 1.824 V
+3.3V 3.344 V
+12V 12.000 V
5Vsb 5.046 V
5VDD 4.974 V
P_VTT 1.206 V
Vbat 3.184 V
While an older Supermicro P8SC8 might output this:
CPU Temperature 33 C
System Temperature 37 C
FAN1 4963 RPM
FAN2 0 RPM
FAN3 0 RPM
FAN4 0 RPM
FAN5 0 RPM
Processor Vcore(V) 1.360 V
3.3V Vcc(V) 3.320 V
5V Vcc(V) 3.044 V
-12V Vcc(V) -12.288 V
12V Vcc(V) 12.432 V
5VSB 4.896 V
VBAT 3.104 V
Slight differentials in sensor values (e.g. a few degrees, voltage fluctuations,
or RPM variance) are normal. Operating systems often make use of system and
processor which may halt processors while idling (e.g. x86 "HLT"
opcode), or make use of C1 through C4 power-saving states;
powerd(8)
on FreeBSD is known to do this. System BIOSes are known to offer the ability
to throttle fan speed based on load. Please refer to your System User Manual
for details.
Large/severe differences between what the system BIOS and
bsdhwmon
reports should be reported as a
bug (e.g. -12.107 V shown in the BIOS, while
bsdhwmon
reports +37.000 V).
The
bsdhwmon
utility exits 0 on
success, and >0 if an error occurs.
kenv(1),
amdsmb(4),
ichsmb(4),
nfsmb(4),
smb(4),
smbus(4),
kldload(8)
Jeremy Chadwick
⟨jdc@koitsu.org⟩
Some Supermicro systems using the Winbond W83792D chipset may report incorrect
+5V voltages; the Supermicro P8SC8 and P8SCT motherboards are such examples.
This is caused by a faulty formula used to calculate voltages from IC
registers. The formulas used are not officially documented, and the actual
circuitry (resistors, etc.) tied to the pins on the Winbond chip do not match
what Winbond used in their documentation. Formula documentation has been
requested of Supermicro, but no response has been received at this time.
There has been an isolated report of a Supermicro P8SCi system occasionally
reporting extremely high RPMs (in the tens of thousands) for some fans. The
reason for this is unknown, but the values being returned from the Winbond
chipset do appear correct. If you're experiencing this bug, please get in
contact with the author. Git commit ad3bbad may have rectified this bug.
The following individuals have made contributions to
bsdhwmon
, either by helping with the code,
testing the software, or recommending features:
Tony Allevato, Mike Andrews, Alan Bryan, Gergely Czuczy, Michael Fuckner, M.
Giegerich, Matthew Herzog, Dan Naumov, Billy Newsom, Daniel O'Connor, Alexey
V. Panfilov, Jim Perry, Jim Pingle, Patrick Proniewski, Matt Reimer, Larry
Rosenman, Ulrich Spoerlein, Evren Yurtesen
Additional thanks to SHIMIZU Yoshifumi, author of mbmon, for providing BSD
hardware monitoring support on older x86 hardware, and to the Linux lm_sensors
project, for providing an unofficial secondary source of IC documentation and
details of chip quirks.