SEARCH
ASUS Member ID
Password
Forgot password?
Join member

ASUS Support Home Location : Forum > Motherboard  
  Forum  
  Topic : [Problem]Linux drivers for motherboard sensors? New Topic
Roadkill
Member
Posts : 25
Level :
Tech Points : 38
From: United States
Posted:3/19/2011 3:52:00 AM # 1
I am running RHEL 6.0-derived Scientific Linux 6.0 on my E35M1-I, and lm_sensors does not detect any supported SMBus or other sensors. I am very interested in monitoring the temperature of the CPU because this board is running in a passive setup (ie. no fans).

I tried Fedora 15 Alpha without any success, and I am not averse to building/loading kernel modules, but I have no clue what's on board.

Has anyone had any success polling the onboard sensors in Linux or any OS? Anyone know what sensor models are involved?

  Reply Reply Quote & Reply Quote & Reply
Roadkill
Member
Posts : 25
Level :
Tech Points : 38
From: United States
Posted:3/22/2011 7:57:00 AM # 2
All right, the latest Fedora 15 kernel gives slightly better results.

lm_sensors 3.2 (installed from yum) shows a PCI sensor that runs via the k10temp driver included with the kernel. Eg:

[root@entropy sysconfig]# sensors
k10temp-pci-00c3
Adapter: PCI adapter
temp1:       +69.5°C  (high = +70.0°C, crit = +100.0°C) 

<Soon to be obsolete information>:
I had to download the latest sensors-detect script from the lm_sensors website. However, it appears that lm_sensors 3.3 will release in the next few days and once this is built/integrated into Fedora 15 it should be available by a simple yum update.

I am uncertain if this is the latest version of k10temp, but at least this version reports support for AMD family 14h (ie. 20 decimal). If you are having difficulty with the sensors binary reporting no available sensors, run "modinfo k10temp" and see if the description line shows support for 14h (ie. the E-350 APU family).

[root@entropy sysconfig]# modinfo k10temp
filename:       /lib/modules/2.6.38-1.fc15.x86_64/kernel/drivers/hwmon/k10temp.ko
license:        GPL
author:         Clemens Ladisch <clemens@ladisch.de>
description:    AMD Family 10h/11h/12h/14h CPU core temperature monitor
srcversion:     C95083EB9BA3ABB9F1EFC8D
alias:          pci:v00001022d00001703sv*sd*bc*sc*i*
alias:          pci:v00001022d00001303sv*sd*bc*sc*i*
alias:          pci:v00001022d00001203sv*sd*bc*sc*i*
depends:       
vermagic:       2.6.38-1.fc15.x86_64 SMP mod_unload
parm:           force:force loading on processors with erratum 319 (bool)

Also, the temperature reported is approximately 20°C too high compared to what the BIOS reports. I will look into tweaking the way the results are calculated in lm_sensors and perhaps create a profile for this motherboard. So far, the motherboard temp reading is missing in action.

Overall, I imagine that more support for the onboard devices will be forthcoming in later kernel revs. ("Thank you, Captain Obvious") However, it seemed worthwhile to report the current state of support: only one of the two reported temperature sensors listed in the BIOS is recognized in the very latest kernels.

CORRECTION: The CPU temp as reported by k10temp is based on the self-reported CPU thermal data and is on a relative scale. The IT8771E sensor controller is connected to two thermistors that report the values as seen in the BIOS screen for "CPU" and "mainboard". The k10temp data is therefore unrelated to the BIOS-reported data and is only subjectively useful compared to the thermistor readings. Unfortunately, as discussed below, these thermistor readings currently cannot be reliably obtained in Linux.

  Reply Reply Quote & Reply Quote & Reply
Roadkill
Member
Posts : 25
Level :
Tech Points : 38
From: United States
Posted:3/27/2011 5:27:00 AM # 3
The plot thickens...

It seems that these motherboards use an ITE Tech IT8771E sensor chip. This provides the fan speed reporting/control, voltage level reporting, and two thermistor readings that the BIOS uses when it reports "CPU" and "Motherboard" temperature.

Unfortunately, this chip is not currently supported by the relevant Linux it87 driver. I changed the source code of the driver to force it to load, recompiled it, and hotloaded it on my machine. The fan speeds and the temperature values are in agreement with what the BIOS reports.

However, there is a problem: a copy of the IT8771E chip's datasheet must be obtained in order to properly update the it87 driver's source code. I contacted ITE Tech to request the datasheet, but they demurred saying that this particular chip was a "confidential version" for Asus. I have placed a request for the datasheet with Asus technical support, but I know this isn't exactly a run of the mill request.

Unfortunately, if Asus isn't forthcoming with the datasheet then Linux support on this family of motherboards will be limited: no environmental control or monitoring, fan control, or OS-level thermal profile control/reporting.


  Reply Reply Quote & Reply Quote & Reply
NeoV
Member
Posts : 1
Level :
Tech Points : 1
From: Slovakia
Posted:5/25/2011 7:45:00 AM # 4
Hi... could you please share Your modified driver source file ?

It's really insane, Asus starts to put these chips widely into new boards and users stay without any support in linux :-\.

EDIT: okey... I found the code :)... It's only needed to changed default case of switch in funtion it87_find() --> to allways load module. Question is, which of actual type (it87, it8712, it8716, it8718, it8720, it8721) is best to assign... hm ?

  Reply Reply Quote & Reply Quote & Reply
Roadkill
Member
Posts : 25
Level :
Tech Points : 38
From: United States
Posted:6/8/2011 12:34:00 AM # 5

Quote:
Author: NeoV Posted: 5/25/2011 7:45:00 AM
EDIT: okey... I found the code :)... It's only needed to changed default case of switch in funtion it87_find() --> to allways load module. Question is, which of actual type (it87, it8712, it8716, it8718, it8720, it8721) is best to assign... hm ?


Sorry for the delay. You are correct (and I didn't intend to overstate what I did): it's a simple, four-line diff to define the devid for 0x8771 and set the applicable sio_data->type = it8721

The it8721 type is the "least insanely wrong" available option. I tested all of the options.

Below is the current result from my box. As stated before, k10temp works fine in the current kernel revs (I'm on 2.6.38.3). The it87 driver output that is bolded agrees with the BIOS info. The comment regarding the fan speeds agreeing with the BIOS was made tongue-in-cheek because I have no fans connected, and it87 spits out "0 RPM" (which is, of course, the expected value but is indubitably the degenerate case).

[root@entropy ~]# sensors
k10temp-pci-00c3
Adapter: PCI adapter
CPU Core Temperature:  +64.5°C  (high = +70.0°C)
                                (crit = +100.0°C, hyst = +97.0°C)

it8721-isa-0290
Adapter: ISA adapter
in0:          +0.31 V  (min =  +2.84 V, max =  +0.96 V)  ALARM
in1:          +2.23 V  (min =  +2.58 V, max =  +2.76 V)  ALARM
in2:          +2.86 V  (min =  +1.85 V, max =  +0.46 V)  ALARM
+3.3V:        +3.31 V  (min =  +2.33 V, max =  +5.50 V)
in4:          +2.23 V  (min =  +1.96 V, max =  +2.95 V)
in5:          +2.93 V  (min =  +2.58 V, max =  +2.99 V)
in6:          +2.23 V  (min =  +1.40 V, max =  +0.72 V)  ALARM
3VSB:         +3.38 V  (min =  +4.15 V, max =  +0.31 V)  ALARM
Vbat:         +3.26 V
fan1:           0 RPM  (min =   20 RPM)  ALARM
fan2:           0 RPM  (min =   13 RPM)  ALARM
temp1:        +48.0°C  (low  = +85.0°C, high = +127.0°C)  sensor = thermistor
temp2:        +35.0°C  (low  = +75.0°C, high = -69.0°C)  ALARM  sensor = thermistor
temp3:         -8.0°C  (low  = +121.0°C, high = -90.0°C)  ALARM  sensor = thermistor

  Reply Reply Quote & Reply Quote & Reply
Roadkill
Member
Posts : 25
Level :
Tech Points : 38
From: United States
Posted:6/8/2011 1:00:00 AM # 6
Quote:
Author: NeoV Posted: 5/25/2011 7:45:00 AM
It's really insane, Asus starts to put these chips widely into new boards and users stay without any support in linux :-\.

I completely agree with your assessment. My request for the datasheet was flatly refused by ASUS technical support, and my appeal was rejected.

There is zero competitive advantage for ASUS to keep this information secret. Indeed, it is actually harmful to ASUS to refuse to release the information because it will lead to a reputation that "ASUS doesn't want to allow Linux support on their motherboards".

The community isn't demanding that ASUS do any extra work. All they need to do is make available the IT8771E chip datasheet—already in their possession—that will allow us to configure the necessary parameters in the Linux driver source. Then all those "insanely wrong" data readings in my previous post would be correct and functional.

  Reply Reply Quote & Reply Quote & Reply
Wes
Posts : 1
Level :
Tech Points : 1
From: Australia
Posted:11/7/2011 12:39:00 PM # 7
I tried this patch myself and can confirm the fan and first 2 temperature readings are accurate (I have noctua case fans running from the motherboard fan ports so I can monitor them..)
fan1:         891 RPM  (min =   19 RPM)
fan2:         882 RPM  (min =   23 RPM)
temp1:        +54.0°C  (low  = +22.0°C, high = -28.0°C)  sensor = thermistor
temp2:        +40.0°C  (low  = -122.0°C, high = +71.0°C)  sensor = thermistor
The voltages are a little whack but not really important to me.. Still, it would be nice if Asus played ball and released the datasheet. They've been friendly in the past with GPL obligations where relevant and what-not so I can't see why they wouldn't.

  Reply Reply Quote & Reply Quote & Reply
SEISEN
VIP Member
Posts : 1
Level :
Tech Points : 1
From: France
Posted:12/4/2011 5:47:00 PM # 8
update:
 i recompiled lm-sensors 3.1.2, i tried to enable DEBUG in the Makefile and it works !
strange :/


$ sensors -v
sensors version 3.1.2 with libsensors version 3.1.2

$ sensors
k10temp-pci-00c3
Adapter: PCI adapter
temp1:       +71.1°C  (high = +70.0°C, crit = +100.0°C) 

it8721-isa-0290
Adapter: ISA adapter
in0:         +0.67 V  (min =  +2.68 V, max =  +1.67 V)   ALARM
in1:         +2.22 V  (min =  +2.27 V, max =  +1.93 V)   ALARM
in2:         +2.81 V  (min =  +2.45 V, max =  +0.91 V)   ALARM
+3.3V:       +3.34 V  (min =  +4.37 V, max =  +0.62 V)   ALARM
in4:         +2.22 V  (min =  +2.83 V, max =  +1.88 V)   ALARM
in5:         +2.90 V  (min =  +1.72 V, max =  +2.84 V)   ALARM
in6:         +2.22 V  (min =  +2.48 V, max =  +0.74 V)   ALARM
3VSB:        +3.38 V  (min =  +1.10 V, max =  +4.90 V)  
Vbat:        +3.26 V
fan1:          0 RPM  (min =   36 RPM)  ALARM
fan2:       2083 RPM  (min =   15 RPM)
temp1:       +55.0°C  (low  = +95.0°C, high = -21.0°C)  ALARM  sensor = thermistor
temp2:       +39.0°C  (low  = +30.0°C, high = -39.0°C)  sensor = thermistor
temp3:        -8.0°C  (low  = +122.0°C, high = -49.0°C)  ALARM  sensor = thermistor


Hi, i am using Debian squeeze with linux kernel 2.6.39
i used the following patch (3 lines diff ?)

To make sensors-detect works, i had to modify it
====
}, {
                name => "ITE IT8771F Super IO Sensors",
                driver => "it87",
                devid => 0x8771,
                logdev => 0x04,
                features => FEAT_IN | FEAT_FAN | FEAT_TEMP,
}, {
====

sensors-detect (version 3.3.1) seems to works:
AMD Family 12h and 14h thermal sensors...                   Success!
    (driver `k10temp')
...
Found `ITE IT8771F Super IO Sensors'                        Success!
    (address 0x290, driver `it87')

But sensors reports:

No sensors found!

Any idea ?

--- it87.c.orig 2011-11-03 21:40:19.000000000 +0100
+++ it87.c      2011-11-03 21:43:52.000000000 +0100
@@ -58,7 +58,7 @@
 
 #define DRVNAME "it87"
 
-enum chips { it87, it8712, it8716, it8718, it8720, it8721 };
+enum chips { it87, it8712, it8716, it8718, it8720, it8721, it8771 };
 
 static unsigned short force_id;
 module_param(force_id, ushort, 0);
@@ -132,6 +132,7 @@
 #define IT8720F_DEVID 0x8720
 #define IT8721F_DEVID 0x8721
 #define IT8726F_DEVID 0x8726
+#define IT8771F_DEVID 0x8771
 #define IT87_ACT_REG  0x30
 #define IT87_BASE_REG 0x60
 
@@ -1567,6 +1568,7 @@
                sio_data->type = it8720;
                break;
        case IT8721F_DEVID:
+       case IT8771F_DEVID:
                sio_data->type = it8721;
                break;
        case 0xffff:    /* No device at all */

  Reply Reply Quote & Reply Quote & Reply
Annubis
VIP Member
Posts : 4
Level :
Tech Points : 2
From: Spain
Posted:12/14/2011 6:18:00 AM # 9
¿Any news on this?

  Reply Reply Quote & Reply Quote & Reply
Roadkill
Member
Posts : 25
Level :
Tech Points : 38
From: United States
Posted:1/26/2012 5:31:00 PM # 10

Quote:
Author: SEISEN Posted: 12/4/2011 5:47:00 PM


sensors-detect (version 3.3.1) seems to works:
AMD Family 12h and 14h thermal sensors...                   Success!
    (driver `k10temp')
...
Found `ITE IT8771F Super IO Sensors'                        Success!
    (address 0x290, driver `it87')

But sensors reports:

No sensors found!

Any idea ?


Did you remember to sudo while running sensors-detect? Conversely, just modprobe it87 and k10temp.

  Reply Reply Quote & Reply Quote & Reply
1 2 3  Next  Last
Previous Topic:: Next Topic
Feedback for our Website ModeratorModerator: New Topic Related FAQ Related FAQ Forum Home Forum Home
Forum Model :
Legal Information | Privacy Policy | Sitemap | Contact Us | ASUS Global
  ©ASUSTeK Computer Inc. All rights reserved.