How to get /dev/smb* ?

Антон Клесс rc5hack at
Thu Nov 3 18:50:05 UTC 2011

02.11.2011, 14:01, "Conrad J. Sabatier" <conrads at>:

>   I just noticed, looking back at your previous mail, that you don't seem
>   to have a "device smbios" line in your kernel config.  Try adding that
>   and see if the smbios facility shows up at boot time.

You're actually right!

Now, with this lines in kernel, SMBIOS looks more alive:

# on-die sensor (added)
device          coretemp

# System management bus
device          smb
device          smbus
device          smbios
device          ichsmb
device          nfsmb
device          intpm
device          alpm
device          viapm
device          nfpm
device          iicbus
device          iicbb
device          ic
device          iic
device          iicsmb
device          amdsmb

# CPU control pseudo-device. Provides access to MSRs, CPUID info and microcode update feature.
device          cpuctl

# System Management Bus (SMB)
options         ENABLE_ALART            # Control alarm on Intel intpm driver

So, system shows it during boot:

# dmesg -a |grep smb
smbios0: <System Management BIOS> at iomem 0xf0480-0xf049e on motherboard
smbios0: Version: 2.7, BCD Revision: 2.7

>   Although no "smbios0" device actually shows up under /dev.  Perhaps
>   some more knowledgeable individual might enlighten us as to what
>   capabilities having this in your kernel config actually enables.

The same thing.

# ls -la /dev/sm*
ls: /dev/sm*: No such file or directory

>   Also, just looking at the (x)mbmon port, the COMMENT line in the
>   Makefile states:
>   A X motherboard monitor for LM78/79, W8378x, AS99127F, VT82C686 and
>   ADM9240
>   So, this port appears to be useful only on a very specific range of
>   motherboards.

I hope that those chipsets are kind of generic things, that are compatible with modern ones like my Z68. It goes without saying that SOME of modern MB, supporting Intel Core(tm) CPUs are still supported by mbmon - it shows state of MB (not CPU) thermal sensor, for example. I can't give you exact models, but I can give it after some days (need to ask).

>>    Does it means that it is no way to read temperature sensors on
>>    motherboard?
>   Well, it depends.  :-)
>   I'm not at all familiar with your particular processor/motherboard, so I
>   can only offer some rather limited advice that may steer you in the
>   right direction for further exploration.  There are a number of devices
>   you can enable in your kernel config that may provide some of what
>   you're looking for.
>   Here, on my amd64 box, for instance, "device amdtemp", along with
>   "device cpuctl" and "device cpufreq" makes the following dev.cpu.*
>   sysctls available, which are one way to (manually) monitor your
>   system.  As you can see below, this provides information on CPU
>   temperature and frequency.
>   # sysctl dev.cpu
>   dev.cpu.0.%desc: ACPI CPU
>   dev.cpu.0.%driver: cpu
>   dev.cpu.0.%location: handle=\_PR_.P001
>   dev.cpu.0.%pnpinfo: _HID=none _UID=0
>   dev.cpu.0.%parent: acpi0
>   dev.cpu.0.temperature: 47.0C
>   dev.cpu.0.freq: 2200
>   dev.cpu.0.freq_levels: 2200/23500 1100/14280
>   dev.cpu.0.cx_supported: C1/0
>   dev.cpu.0.cx_lowest: C1
>   dev.cpu.0.cx_usage: 100.00% last 1931us
>   dev.cpu.1.%desc: ACPI CPU
>   dev.cpu.1.%driver: cpu
>   dev.cpu.1.%location: handle=\_PR_.P002
>   dev.cpu.1.%pnpinfo: _HID=none _UID=0
>   dev.cpu.1.%parent: acpi0
>   dev.cpu.1.temperature: 47.0C
>   dev.cpu.1.cx_supported: C1/0
>   dev.cpu.1.cx_lowest: C1
>   dev.cpu.1.cx_usage: 100.00% last 4658us
>   dev.cpu.2.%desc: ACPI CPU
>   dev.cpu.2.%driver: cpu
>   dev.cpu.2.%location: handle=\_PR_.P003
>   dev.cpu.2.%pnpinfo: _HID=none _UID=0
>   dev.cpu.2.%parent: acpi0
>   dev.cpu.2.temperature: 47.0C
>   dev.cpu.2.cx_supported: C1/0
>   dev.cpu.2.cx_lowest: C1
>   dev.cpu.2.cx_usage: 100.00% last 3551us
>   dev.cpu.3.%desc: ACPI CPU
>   dev.cpu.3.%driver: cpu
>   dev.cpu.3.%location: handle=\_PR_.P004
>   dev.cpu.3.%pnpinfo: _HID=none _UID=0
>   dev.cpu.3.%parent: acpi0
>   dev.cpu.3.temperature: 47.0C
>   dev.cpu.3.cx_supported: C1/0
>   dev.cpu.3.cx_lowest: C1
>   dev.cpu.3.cx_usage: 100.00% last 4943us

As I already say, "coretemp works fine" - I could read CPU thermal sensors with  dev.cpu.#CORE_ID.temperature sysctl after I added "coretemp" device into my kernel.

Problem is to read MB sensors, like "chasis (system) temperature", fans RPM, voltages and so on.

Now, with smbios device enabled, it still doesn't work the perfect way:

# mbmon -V
No VIA686 HWM available!!
InitMBInfo: Unknown error: 0

# mbmon -S
No SMBus HWM available!!
InitMBInfo: Unknown error: 0

# mbmon -I
No ISA-IO HWM available!!
InitMBInfo: Unknown error: 0

# mbmon -A
InitMBInfo: Unknown error: 0
This program needs "setuid root"!!

# mbmon -D
Probe Request: none

>>>   Testing Reg's at ISA-IO <<<

[ISA Port IO-Base:0x290]
Probing Winbond/Asus/LM78/79 chip:
  CR40:0x44,  CR41:0x00,  CR42:0x00,  CR43:0x00
  CR44:0x00,  CR45:0x00,  CR46:0x00,  CR47:0x00
  CR48:0x00,  CR49:0x00,  CR4A:0x00,  CR4B:0x00
  CR4C:0x00,  CR4D:0x00,  CR4E:0x80,  CR4F:0x00
  CR56:0xFF,  CR58:0xFF,  CR59:0xFF,  CR5D:0x19
  CR3E:0xFF,  CR13:0x00,  CR17:0xFF,  CRA1:0xFF
  CR20:0xD1,  CR22:0x37,  CR23:0x78,  CR24:0x8A
  CR27:0xC7,  CR29:0xFF,  CR2A:0xFF,  CR2B:0xFF
No Hardware Monitor found!!
InitMBInfo: Unknown error: 0

More information about the freebsd-questions mailing list