AMD Temp Information and Guide
We've had a few great threads recently where members contacted AMD and asked what temps they should be looking at, what the max temp was on, and what programs should be used and why. But this information is still scattered and not well defined in one place. It also doesn't quite explain when you should be looking at certain temps. Well I've made it my mission to insure that people are reading the right temps and have been trying my best to give all the information each time I respond without sounding like a broken record. So I decided to write this information thread and little guide to help you out there.
What is "Core Temp" ?
"Core Temp" is what AMD refers to as "TCTL" and is a non-physical temperature on an arbitrary scale measured in degrees. It does not represent an actual physical temperature like die or case temperature.
What is "CPU Temp" ?
"CPU Temp" is read by a sensor in the socket of the motherboard.
It is a physical temperature and therefore will be effected by ambient temps inside the case.
Why should I use "Core Temp" and when?
AMD designed this equation to accurately read peak (45C+) and load temps. It has an equational offset to determine said temps which equalizes at 45C. Since it's designed for peak temps and is a non-physical temperature it cannot read idle temps or account for ambient temps correctly.
So what is "CPU Temp" good for then?
At peak temps this value is typically 7-10C higher (depending on motherboard) than the actual temp due to it being a physical sensor. At idle it's a little more accurate, but still not dead on, and besides idle temps do not matter near as much as load temps do.
AMD says my chip has a [INSERT SPEC] Celsius limit, what value is this referring to? This limit seems kind of low, why?
This is referring to "Core Temp" of course.
So for example Phenom IIs have a recommended 62C "Core Temp" limit while not exceeding 60C for extended periods.
It has long been argued that the recommended limit is merely a larger safety net. There is a thermal shutdown in the chip at 90C and the silicone is rated for 97C+, so it seems plausable that we could indeed go higher, but this guide (and most in general) will simply nod and point you to the recommended limit for your chip.
What programs read "Core Temp" ?
AMD recommends the Core Temp program and AMD Overdrive for this reason.
The core section of HWMonitor also reads this value, but be careful as it also shows CPU Temp.
Best Answer
Simple solution
1) Run this command to list types of available thermal_zone devices:
ls -1 /sys/class/thermal/thermal_zone*/type | xargs -I % sh -c "echo % ; cat %"
You should get output similar to this:
2) Find out which one you need, for CPU it should have type similar to
x86_pkg_temp
. In my example, if I want to usex86_pkg_temp
I will pick/sys/class/thermal/thermal_zone2/
.3) Specify it in "Temperature Monitor" settings, make sure it is slash-terminated (enclosed with "/" at the end, just like in my example):
Done, it should work as intended now.
More details and alternative solution
Started using LUbuntu desktop today and found myself looking on same problem.
After poking around and cracking open source code of
/plugins/thermal/thermal.c
I found some solutions. First of all, parameter "Sensor" in options refers to location of it as directory. Looking on sources it can detect 3 types of sensor directories in automatic mode, and looks for them in/proc/acpi/thermal_zone/
,/sys/class/thermal/
and/sys/class/hwmon/hwmon[i]/
, functions to look for those are called here:Now, looking on what happens when you set config, we see this:
From what I understood,
th->sensor
is set to what you specify in "Sensor" input field in options.First there is check if
auto_sensor
is set, and if it is not, it will do series of other checks.Breaking down this part, if your sensor path does not inlude
/sys/
in it, it will useproc_get
functions, which is outdated acpi type sensor that is not used in new versions of Ubuntu. Otherwise, if your path includes/sys/class/hwmon
it will usehwmon
functions, and finally if it is other type of/sys/*
, it will usesysfs
type of sensor.Based on that we can conclude that easiest way would be to specify sensor located in
/sys/class/thermal/
, for example/sys/class/thermal/thermal_zone1
. If we would go with/sys/class/hwmon/
, it would not pick right sensor anyway, because there is no way to specify exacttemp[i]_input
to be used, and if we would use non/sys/
directory, it would assume we using outdatedacpi/thermal_zone
, which is not ideal as well. You could create script that will create fake sensor directory in your home folder with 2 files,trip_points
andtemperature
. trip_points would look like this and does not matter much:temperature would be one to be read for current temperature and should look like this:
Finally, you would need script to update those files from actual sensor you want to use and schedule it to run each N seconds. This solution would allow using
/sys/class/hwmon/hwmon1
kind of sensors and manually read value to be used by LXpanel thermal indicator. You could also use this method to make this thermal indicator display other kind of indicators, but that seems like waste of effort, considering you could just use another indicator instead. I will update with sample script to do it later, if it will be required\I will make one for myself.