06-08-2014 09:57 PM
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?
06-09-2014 02:56 AM
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.
06-09-2014 03:34 AM
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.