Linux Users

cancel
Showing results for 
Search instead for 
Did you mean: 

how to read fan speed and motherboard temperature?

hello everyone ,i try to read fan speed from :

*******************************************************************

Bus Type = ISAIO

One NCT6776F

Unvoton NCT6776F, IndexReg=A35, DataReg=A36

=============================================================

Fan1 Fan Speed, Bank 6, Offset 0x34, 0x35     RPM = 1350000/(Data=HighByte[12:5], LowByte[4:0])

Fan2 Fan Speed, Bank 6, Offset 0x36, 0x37     RPM = 1350000/(Data=HighByte[12:5], LowByte[4:0])

Fan3 Fan Speed, Bank 6, Offset 0x38, 0x39     RPM = 1350000/(Data=HighByte[12:5], LowByte[4:0])

Fan4 Fan Speed, Bank 6, Offset 0x32, 0x33     RPM = 1350000/(Data=HighByte[12:5], LowByte[4:0])

FanA Fan Speed, Bank 6, Offset 0x30, 0x31     RPM = 1350000/(Data=HighByte[12:5], LowByte[4:0])

CPU Voltage, Bank 0, Offset 0x20          Voltage = Data* 0.008

-12V Voltage, Bank 0, Offset 0x26          Voltage = ((Data*0.008-2.048)/(10./242.))+2.048

+12V Voltage, Bank 0, Offset 0x21          Voltage = Data* 0.008/ (10./66.2)

AVCC Voltage, Bank 0, Offset 0x22          Voltage = Data* 0.016

3.3Vcc Voltage, Bank 0, Offset 0x23          Voltage = Data* 0.016

VDIMM Voltage, Bank 0, Offset 0x24          Voltage = Data* 0.008

5Vcc Voltage, Bank 0, Offset 0x25          Voltage = Data* 0.008/ (10./40.)

VSB Voltage, Bank 5, Offset 0x50          Voltage = Data* 0.016

VBAT Voltage, Bank 5, Offset 0x51          Voltage = Data* 0.016

CPU Temperature, Bank 7, Offset 0x17, 0x18     PECI Count = (Data=HighByte,LowByte<15:6> hightest bit as sign bit)

High: PECI Count>-15; Midium: -40<PECI Count<=-15; Low: PECI Count<=-40

Peripheral Temperature, Bank 0, Offset 0x27     Temperature = Data

System Temperature, Bank 2, Offset 0x50          Temperature = Data

Chassis Intrusion, Bank 0, Offset 0x42, BitMask 0x10     1 = Bad, 0 = Good

(Clear Bit: Bank 0, Offset 0x46, BitMask 0x80)

Power Supply Failure, GP07(From NCT6776F)     1 = Good, 0 = Bad

**************************************************************************************

i use /dev/io and outb() and inb();but i dot no " IndexReg=A35, DataReg=A36",what is this ? i need  io's address!what's the meaning of "A35" and "A36"? what is the address i need to use?

0 Kudos
Message 1 of 3
(4,591 Views)

Hi!. It is general question for Linux. Probably in feature you can ask about it directly in your Linux distribution forum. Answer is the same for all linux distribution. Install sensord daemon(service). Run sensor-detect command under the root. In case if your motheboard sensor supported by the command sensors your can read temperature values. Parse the command output.

Message 2 of 3
(3,560 Views)

As mig-31 already mentioned it's a generic Linux issue and one that may be impossible to do without some root or other special privileges.

inb() and outb() definitely won't work as that are highly privileged cpu instructions that every modern operating system only allows to be accessed in kernel mode (Ring 0). An OS that would allow you to use inb() and outb(() in normal user mode would be doomed as extreme security risk by anyone who knows a little about this.

Rolf Kalbermatter
My Blog
Message 3 of 3
(3,560 Views)