How to get cpufreqd to read the correct CPU temperatures?

Kernels & Hardware, configuring network, installing services

How to get cpufreqd to read the correct CPU temperatures?

Postby the dsc » 2011-10-22 20:24

I think I have a good deal of my configuration right, that is, I can get temperature readings from "sensors" and ksysguard also gets it right (and I can control the cpu frequencies and all that stuff), but for some reason cpufreqd keeps trying to read some kind of bogus temperature reading that is static at 30C. Here's the output of "sensors":

Code: Select all
Adapter: Virtual device
______temp1:        +30.0°C  (crit = +110.0°C)______

Adapter: ISA adapter
*****Core 0:       +41.0°C  (high = +76.0°C, crit = +100.0°C)*****
*****Core 1:       +41.0°C  (high = +76.0°C, crit = +100.0°C)*****

Adapter: ISA adapter
in0:          +1.07 V  (min =  +0.00 V, max =  +4.08 V)
in1:          +2.14 V  (min =  +0.00 V, max =  +4.08 V)
in2:          +1.87 V  (min =  +0.00 V, max =  +4.08 V)
+5V:          +2.99 V  (min =  +0.00 V, max =  +4.08 V)
in4:          +2.14 V  (min =  +0.00 V, max =  +4.08 V)
in5:          +0.06 V  (min =  +0.00 V, max =  +4.08 V)
in6:          +0.10 V  (min =  +0.00 V, max =  +4.08 V)
5VSB:         +2.96 V  (min =  +0.00 V, max =  +4.08 V)
Vbat:         +3.33 V 
fan1:           0 RPM  (min =    0 RPM)
fan2:         962 RPM  (min =    0 RPM)
fan3:           0 RPM  (min =    0 RPM)
CPU0 Temp:   -128.0°C  (low  =  -1.0°C, high = +127.0°C)  sensor = disabled
CPU1 Temp:   -128.0°C  (low  =  -1.0°C, high = +127.0°C)  sensor = disabled
temp3:        -59.0°C  (low  = +127.0°C, high = +80.0°C)  sensor = thermal diode
cpu0_vid:    +1.500 V

I suspect that cpufreqd is reading the one with the underlines around it, and the correct ones are the ones with the asterisks. I think either one will do it, the cores are usually at very close temperatures. Here's part of cpufreqd output:

Code: Select all
acpi_temperature_update  : called
acpi_temperature_update  : temperature for thermal_zone0 is 30.0C
acpi_temperature_update  : temperature average is 30.0C
get_cpu                  : called

"acpi_temperature" was the original parameter on cpufreqd.conf. I've tried several alternatives, but none of them worked.

I also think it may have to do with some configuration on /etc/sysfs.conf. Strangely enough, I didn't have this config file until today, I hadn't sysfsutils installed. I think it may be some sorf of missing dependency or at least recommendation. Well, supposing it really has anything to do with it.

I've tried several things for cpufreqd.conf (various guessings at the right "name" for the thermal CPU reading, none of them worked), but I don't have any idea on what I could add to sysfs.conf -- again, if it has anything to do with it. There's no manual for it apparently.

Anyone has an idea of what to do? These seem to be the most obscure configurations I've dealt with.

edit: What I've read at the bottom of some related manual:


Multiple CPUs are not supported.


Dual core counts as "multiple CPUs", right? What a shame. I don't get why not just take a single core temperature (they will often be close enough, won't them? Unless there's some highly customized thing to disproportionally overload some core(s)), or perhaps an average.

2nd edit: It only "does not support" multiple cores in the sense that it won't rule them differently. The same rules aply to all cores.

Lsmod gives me:

processor 27382 1 acpi_cpufreq
thermal 13138 0
thermal_sys 17677 3 video,processor,thermal

But it seems that there must be a "thermal" alongside acpi_cpufreq in the "processor" line.


[SOLVED] - it turns out that the driver I thought I needed to use, it8718, was only one of the drivers detected by sensors-detect (or detect-sensors, whatever), other one I've missed was actually called just "coretemp". I thought it was a label, not an actual driver. My sensors.conf hadn't a section for such driver though. I've googled a little bit and found a sensors.conf or /etc/sensors.d/custom-conf example file at the arch linux forums. Based on that I've made my /etc/sensors.d/cores.conf, and I've pointed the "sensors plugin" section on cpufreqd.conf directly to it. The file is just this:

[code]chip "coretemp-isa-0000"

label temp2 "Core 0"
label temp3 "Core 1"[/quote]

I've skipped the numbers 0 and 1 for the labels because there's still this acpitz-whatever bogus reading that is labelled temp1. I don't know how to get rid of it, so I just started from 2. And it seems that these labels can't be totally arbitrary, I've tried "core0" and "core1", but the sensors_get part of the cpufreqd output wouldn't appear. It's so weird that it has to be labelled "temp#" that I think I may have forgot to make the correspondent changes in cpufreqd.conf, but I'm almost sure I did. I could have just failed to find "sensors_get" amidst all that output though.

On cpufreqd.conf the syntax is:


in actual terms:


Well, that's it. Have a good cpu frequency scaling.
the dsc
Posts: 100
Joined: 2007-08-18 22:14

Return to System configuration

Who is online

Users browsing this forum: No registered users and 18 guests