[ltp] Cpufreqd und cpufrequtils

Daniel Baule linux-thinkpad@linux-thinkpad.org
Sat, 25 Feb 2006 21:00:57 +0100


Ok, i am running out of ideas,

although my temperature is at 44=B0C and i have a script running, that is a=
ble=20
to control the fanspeed, the fan is still running. I guess i made some=20
mistakes in configuring all the tools that i have, im pretty sure, there ar=
e=20
more than one running but i don know for sure.
Can someone tell me what i have to paste in order to solve my problem.
In the kernel nearly everything is deactivated for testing, as picture at=20
http://homepages.uni-paderborn.de/baule/Bildschirmphoto1.png shows.
The Controlscript is listed below and some outputs of console and configs f=
or=20
debugging.
Im a beginner in UNIX and especially Linux.
Maybe someone can give me some hints like.
In my opinion the right way is:

=2Demerging ibm-acpi
=2Dsetting experimental=3D1 in ????? i forgot the file, but i did it ????
=2Dloading ibm_acpi in /etc/modules.autoload.d/kernel-2.6
=2D deactiviting options in kernel
=2D emerge cpufreqd and add it to runlevel default and battery
=2D customize /etc/cpufreqd.conf like listed below
=2D emerge cpufrequtils and customize /etc/conf.d/cpufrequtils=20
(GOVENOR=3Duserspace)
=2Dmake fancontrolscript (like listed below) and make initscript, add it to=
=20
default and battery runlevel

what did i do wrong?

I cant change cpuspeed using cpufreq-set -f 2000 or -g performance, cpufreq=
d=20
says "No cpufreqd socket found"
DO i have to change anything in my biossettings? There are several=20
possibilities to configure in there.

Greeting and thanks for your help
Daniel=20

=2D------------------------------------------
		Contact		=09
=2D------------------------------------------
	     Daniel Baule
       ICQ-UIN: 55595565
=2D------------------------------------------

rc-update show :
[code]
               acpid | battery      default
           alsasound |         boot
             apache2 |
            bootmisc |         boot
             checkfs |         boot
           checkroot |         boot
               clock |         boot
            coldplug |
         consolefont |         boot
            cpufreqd | battery      default
        cpufrequtils | battery      default
         crypto-loop |
               cupsd |
                dbus |
          domainname | battery boot default
              esound |
                famd |
                 gpm |
                hald |              default
              hdparm |
   hibernate-cleanup |
            hostname |         boot
             hotplug |
              hsqldb |
      ibm-fancontrol | battery      default
               ivman |              default
             keymaps |         boot
         laptop_mode | battery
                lisa |
               local | battery      default nonetwork
          localmount |         boot
             modules |         boot
                 nas |
           ncpufreqd |
            net.eth0 | battery      default
              net.lo |         boot
            netmount | battery      default
                nscd |
          ntp-client |
                ntpd |
             ntpdate |
             numlock |
             pm.eth0 | battery
              pm.sda | battery
             portmap |
             pwcheck |
             reslisa |
           rmnologin |         boot
              rsyncd |
               samba |
           saslauthd |
                sshd |
           syndaemon |
           syslog-ng |              default
             urandom |         boot
          vixie-cron | battery      default
                 xdm |         boot

[/code]

lsmod:
[code]
Module                  Size  Used by
snd_pcm_oss            49888  0
snd_mixer_oss          17216  1 snd_pcm_oss
snd_seq_oss            34752  0
snd_seq_midi_event      6144  1 snd_seq_oss
snd_seq                51792  4 snd_seq_oss,snd_seq_midi_event
snd_seq_device          7116  2 snd_seq_oss,snd_seq
snd_intel8x0           30172  0
snd_ac97_codec         94432  1 snd_intel8x0
snd_ac97_bus            1792  1 snd_ac97_codec
snd_pcm                84488  3 snd_pcm_oss,snd_intel8x0,snd_ac97_codec
snd_timer              22532  2 snd_seq,snd_pcm
snd                    50404  9=20
snd_pcm_oss,snd_mixer_oss,snd_seq_oss,snd_seq,snd_seq_device,snd_intel8x0,s=
nd_ac97_codec,snd_pcm,snd_timer
snd_page_alloc          8520  2 snd_intel8x0,snd_pcm
ibm_acpi               28416  0
nvram                   7560  0
fglrx                 452940  7
intel_agp              20508  1
agpgart                29448  2 fglrx,intel_agp
ipw2200               180036  0
ieee80211              46376  1 ipw2200
ieee80211_crypt         5184  1 ieee80211
[/code]

/etc/cpufreqd.conf
[code]
# this is a comment
#
# you need: 1 [General] section,=20
#           1 or more [Profile] sections
#	          1 or more [Rule] sections
#
# a section ends at the first blank line
#
# [Rule] sample:
#           [Rule]
#           name=3Dsample_rule
#           ac=3Don                    # (on/off)
#           battery_interval=3D0-10
#           cpu_interval=3D30-60
#           programs=3Dxine,mplayer
#           profile=3Dsample_profile
#
# [Profile] sample:
#           [Profile]
#           name=3Dsample_profile
#           minfreq=3D10%
#           maxfreq=3D100%
#           policy=3Dperformance
#
# see CPUFREQD.CONF(5) manpage for a complete reference

[General]
pidfile=3D/var/run/cpufreqd.pid
poll_interval=3D2
pm_type=3Dacpi #(acpi, apm or pmu)
# Uncomment the following line to enable ACPI workaround (see=20
cpufreqd.conf(5))
# acpi_workaround=3D1
verbosity=3D4 #(if you want a minimal logging set to 5)

[Profile]
name=3Dhi_boost
minfreq=3D10%
maxfreq=3D100%
policy=3Dondemand

[Profile]
name=3Dmedium_boost
minfreq=3D33%
maxfreq=3D66%
policy=3Dondemand

[Profile]
name=3Dlo_boost
minfreq=3D0%
maxfreq=3D33%
policy=3Dondemand

[Profile]
name=3Dlo_power
minfreq=3D0%
maxfreq=3D33%
policy=3Dpowersave

# conservative mode when not AC
[Rule]
name=3Dconservative
ac=3Doff                   # (on/off)
battery_interval=3D0-100  =20
cpu_interval=3D0-40
profile=3Dlo_boost

# need some power
[Rule]
name=3Dlo_cpu_boost
ac=3Doff                   # (on/off)
battery_interval=3D0-100
cpu_interval=3D30-80
profile=3Dmedium_boost

# need big power (not if battery very low)
[Rule]
name=3Dhi_cpu_boost
ac=3Doff                   # (on/off)
battery_interval=3D50-100
cpu_interval=3D70-100
profile=3Dmedium_boost

# full power when AC
[Rule]
name=3DAC_on
ac=3Don                   # (on/off)
profile=3Dhi_boost

# full power when watching DVDs and not AC:
# this is the last rule and takes less
# precedence with respect to the others
[Rule]
name=3Ddvd_watching
ac=3Doff                   # (on/off)
battery_interval=3D0-100
programs=3Dxine,mplayer,avidemux
cpu_interval=3D0-100
profile=3Dhi_boost
[/code]

/etc/conf.d/cpufrequtils
[code]# /etc/conf.d/cpufrequtils: config file for /etc/init.d/cpufrequtils

# Which governor to use. Must be one of the governors listed in:
#   cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
#
GOVERNOR=3D"userspace"
[/code]

unter /proc/acpi/ibm/fan steht nur

[code]
status:         disabled
speed:          4055
commands:       enable, disable
[/code]

[code]
cpufrequtils 0.4: cpufreq-info (C) Dominik Brodowski 2004
Report errors and bugs to linux@brodo.de, please.
analyzing CPU 0:
  driver: centrino
  CPUs which need to switch frequency at the same time: 0
  hardware limits: 800 MHz - 2.00 GHz
  available frequency steps: 2.00 GHz, 1.60 GHz, 1.33 GHz, 1.07 GHz, 800 MHz
  available cpufreq governors: userspace
  current policy: frequency should be within 800 MHz and 2.00 GHz.
                  The governor "userspace" may decide which speed to use
                  within this range.
  current CPU frequency is 800 MHz.
[/code]

[code]
chiefcommander@denkbrett /proc/acpi/ibm $ cpufreqd-set dynamic
No cpufreqd socket found
[/code]

die Datei, die zur Steuerung der L=FCfter benutzt wird ist:
[code]
#!/bin/bash

# tp-fancontrol 0.2.8 (http://thinkwiki.org/wiki/ACPI_fan_control_script)
# Provided under the GNU General Public License version 2 or later or
# the GNU Free Documentation License version 1.2 or later, at your option.
# See http://www.gnu.org/copyleft/gpl.html for the Warranty Disclaimer.

# This script dynamically controls fan speed on some ThinkPad models
# according to user-defined temperature thresholds.  It implements its
# own decision algorithm, overriding the ThinkPad embedded
# controller. It also implements a workaround for the fan noise pulse
# experienced every few seconds on some ThinkPads.
#
# Run 'tp-fancontrol --help' for options.
#
# For optimal fan behavior during suspend and resume, invoke=20
# "tp-fancontrol -u" during the suspend process.
#=20
# WARNING: This script relies on undocumented hardware features and
# overrides nominal hardware behavior. It may thus cause arbitrary
# damage to your laptop or data. Watch your temperatures!
#
# WARNING: The list of temperature ranges used below is much more liberal
# than the rules used by the embedded controller firmware, and is
# derived mostly from anecdotal evidence, hunches and wishful thinking.
# It is also model-specific (see http://thinkwiki.org/wiki/Thermal_sensors).

# Temperature ranges, per sensor:
# (min temperature: when to step up from 0-th fan level,
#  max temperature: when to step up to maximum fan level)
THRESHOLDS=3D( #  Sensor     ThinkPad model
             #             R51     T41/2  Z60t   43-26xx
# min  max   #  ---------- ------- -----  -----  ---------------------------
  50   70    #  EC 0x78    CPU     CPU    ?      CPU
  47   60    #  EC 0x79    miniPCI ?      ?      Between CPU and PCMCIA slot
  43   55    #  EC 0x7A    HDD     ?      ?      PCMCIA slot
  49   68    #  EC 0x7B    GPU     GPU    ?      GPU
  40   50    #  EC 0x7C    BAT     BAT    BAT    BAT (front left of battery)
  45   55    #  EC 0x7D    n/a     n/a    n/a    n/a
  37   47    #  EC 0x7E    BAT     BAT    BAT    BAT (rear right of battery)
  45   55    #  EC 0x7F    n/a     n/a    n/a    n/a
  45   60    #  EC 0xC0    ?       n/a    ?      Between northbridge and DR=
AM
  48   62    #  EC 0xC1    ?       n/a    ?      Southbridge (under miniPCI)
  50   65    #  EC 0xC2    ?       n/a    ?      Power circuitry (under CDC)
  47   60    #  HDAPS      HDAPS   HDAPS  HDAPS  HDAPS readout (same as EC=
=20
0x79)
)


LEVELS=3D(    0      2      4      7)  # Fan speed levels
ANTIPULSE=3D( 0      1      0      0)  # Prevent fan pulsing noise at this =
level
                                     # (reduces frequency of fan RPM update=
s)

OFF_THRESH_DELTA=3D3 # when gets this much cooler than 'min' above, may tur=
n off=20
fan
MIN_THRESH_SHIFT=3D0 # increase min thresholds by this much
MIN_WAIT=3D180 # minimum time (seconds) to spend in a given level before=20
stepping down

IBM_ACPI=3D/proc/acpi/ibm
HDAPS_TEMP=3D/sys/bus/platform/drivers/hdaps/hdaps/temp1
LOGGER=3D/usr/bin/logger=20
INTERVAL=3D3        # sample+refresh interval
SETTLE_TIME=3D6     # wait this many seconds long before applying anti-puls=
ing
RESETTLE_TIME=3D600 # briefly disable anti-pulsing at every N seconds
SUSPEND_TIME=3D5    # seconds to sleep when receiving SIGUSR1

PID_FILE=3D/var/run/tp-fancontrol.pid
QUIET=3Dfalse
DRY_RUN=3Dfalse
DAEMONIZE=3Dfalse
AM_DAEMON=3Dfalse
KILL_DAEMON=3Dfalse
SUSPEND_DAEMON=3Dfalse
SYSLOG=3Dfalse

usage() {
    echo "
Usage: $0 [OPTION]...

Available options:
   -s N   shift up temperature thresholds by N degrees
          (positive for quieter, negative for cooler)
   -t     test mode
   -q     quiet mode
   -d     daemon mode, go into background (implies -q)
   -l     log to syslog
   -k     kill already-running daemon
   -u     tell already-running daemon that the system is being suspended
   -p     pid file location for daemon mode, default: $PID_FILE
"
    exit 1;
}

while getopts 's:qtdlp:kuh' OPT; do
    case "$OPT" in
        s) # shift thresholds
            MIN_THRESH_SHIFT=3D"$OPTARG"
            ;;
        t) # test mode
            DRY_RUN=3Dtrue
            ;;
        q) # quiet mode
            QUIET=3Dtrue
            ;;
        d) # go into background and daemonize
            DAEMONIZE=3Dtrue
            ;;
        l) # log to syslog
            SYSLOG=3Dtrue
            ;;
        p) # different pidfile
            PID_FILE=3D"$OPTARG"
            ;;
        k) # kill daemon
            KILL_DAEMON=3Dtrue
            ;;
        u) # suspend daemon
            SUSPEND_DAEMON=3Dtrue
            ;;
        h) # short help
            usage
            ;;
        \?) # error
            usage
            ;;
    esac
done
[ $OPTIND -gt $# ] || usage  # no non-option args

# no logger found, no syslog capabilities
$SYSLOG && [ ! -x $LOGGER ] && SYSLOG=3Dfalse || :

if $DRY_RUN; then
    echo "$0: Dry run, will not change fan state."
    QUIET=3Dfalse
    DAEMONIZE=3Dfalse
fi

thermometer() { # output list of temperatures
    # Base temperatures from ibm-acpi:
    [ -r $IBM_ACPI/thermal ] || { echo "$0: Cannot read $IBM_ACPI/thermal"=
=20
2>&1 ; exit 1; }
    read X Y < $IBM_ACPI/thermal
    [ "$X" =3D=3D "temperatures:" ] || { echo "$0: Bad temperatures: $X $Y"=
 >&2; =20
exit 1; }
    echo -n "$Y ";
    # Extended temperatures at EC offsets 0xC0 to 0xC2:
    [ -r $IBM_ACPI/ecdump ] || { echo "$0: Cannot read $IBM_ACPI/ecdump" 2>=
&1;=20
exit 1; }
    perl -e 'm/^EC 0xc0: .(..) .(..) .(..) / and print hex($1)." ".hex($2).=
"=20
".hex($3)." " and exit 0 while <>; exit 1' < $IBM_ACPI/ecdump
    # HDAPS temperature (optional):
    ! [ -r $HDAPS_TEMP ] || echo -n "`cat $HDAPS_TEMP` "
    return 0
}

speedometer() { # output fan speed RPM
    sed -n 's/^speed:[ \t]*//p' $IBM_ACPI/fan
}

setlevel() { # set fan speed level
    $DRY_RUN || echo 0x2F $1 > $IBM_ACPI/ecdump
}

getlevel() { # get fan speed level
    perl -e 'm/^EC 0x20: .* .(..)$/ and print $1 and exit 0 while <>; exit =
1'=20
< $IBM_ACPI/ecdump
}

log() {
        $QUIET || echo "> $*"
        ! $SYSLOG || $LOGGER -t "`basename $0`[$$]" "$*"
}

cleanup() { # clean up after work
    $AM_DAEMON && rm -f "$PID_FILE" 2> /dev/null
    log "Shutting down, switching to automatic fan control"
    $DRY_RUN || echo enable > $IBM_ACPI/fan
}

floor_div() {
    echo $(( (($1)+1000*($2))/($2) - 1000 ))
}

init_state() {
    IDX=3D0
    NEW_IDX=3D0
    START_TIME=3D0
    MAX_IDX=3D$(( ${#LEVELS[@]} - 1 ))
    SETTLE_LEFT=3D0
    RESETTLE_LEFT=3D0
    FIRST=3Dtrue
    RESTART=3Dfalse
}

control_fan() {
    # Enable the fan in default mode if anything goes wrong:
    set -e -E -u
    trap "cleanup; exit 2" HUP INT ABRT QUIT SEGV TERM
    trap "cleanup" EXIT
    trap "log 'Got SIGUSR1'; setlevel 0; RESTART=3Dtrue; sleep $SUSPEND_TIM=
E"=20
USR1

    init_state
    log "Starting dynamic fan control"

    # Control loop:
    while true; do
        TEMPS=3D`thermometer`
        $QUIET || SPEED=3D`speedometer`
        $QUIET || ECLEVEL=3D`getlevel`
        NOW=3D`date +%s`

        # Calculate new level index by placing temperatures into Z-regions:
        # Z >=3D 2*I means "must be at index I or higher"
        # Z  =3D 2*I+1 is hysteresis: "don't step down if currently at I+1"
        # hence the Z-regions are, for d=3D(MAX-MIN)/(2*MAX_IDX-1) :
        #   Z=3D0:{-infty..MIN-d) Z=3D1:{MIN-d..MIN) Z=3D2:{MIN..MIN+d} Z=
=3D3:
{MIN+d..MIN+2d} ... Z=3D2*MAX_IDX:{MAX-d, MAX}

        MAX_Z=3D$(( IDX>0 ? ( NOW>START_TIME+MIN_WAIT ? 2*(IDX-1) : 2*IDX )=
 :=20
0 ))
        SENSOR=3D0
        Z_STR=3D"$MAX_Z+"
        TEMP_STR=3D"";
        for TEMP in $TEMPS; do
            [ $((2*SENSOR+2)) -le ${#THRESHOLDS[@]} ] ||
                { echo "Too many sensors, not enough values in THRESHOLDS"=
=20
2>&1; exit 1; }
            if [ $TEMP =3D=3D -128 ]; then
                Z=3D'_'; TEMP=3D'_' # inactive sensor
            else
                MIN=3D$((THRESHOLDS[SENSOR*2] + MIN_THRESH_SHIFT));
                MAX=3D$((THRESHOLDS[SENSOR*2+1]))
                if (( TEMP < MIN - OFF_THRESH_DELTA )); then
                    Z=3D0
                else
                    Z=3D$(( `floor_div $(( (TEMP-MIN)*(2*MAX_IDX-2) ))=20
$((MAX-MIN))` + 2 ))
                fi
                [ $MAX_Z -gt $Z ] || MAX_Z=3D$Z
            fi
            Z_STR=3D"${Z_STR}${Z}"
            TEMP_STR=3D"${TEMP_STR}${TEMP} "
            (( ++SENSOR ))
        done
        [ $SENSOR -gt 0 ] || { echo "No temperatures read" >&2; exit 1; }

        (( (MAX_Z =3D=3D 2*IDX-1) && ++MAX_Z )) # hysteresis
        NEW_IDX=3D$(( MAX_Z/2 ))
        [ $NEW_IDX -le $MAX_IDX ] || NEW_IDX=3D$MAX_IDX

        # Interrupted by a signal?
        if $RESTART; then
                init_state
                log "Resetting state"
                continue
        fi

        # Transition
        $FIRST && OLDLEVEL=3D'?' || OLDLEVEL=3D${LEVELS[$IDX]}
        NEWLEVEL=3D${LEVELS[$NEW_IDX]}
        $QUIET || echo "L=3D$OLDLEVEL->$NEWLEVEL EC=3D$ECLEVEL RPM=3D`print=
f %4s=20
$SPEED` T=3D($TEMP_STR) Z=3D$Z_STR"
        if [ "$OLDLEVEL" !=3D "$NEWLEVEL" ]; then
            START_TIME=3D$NOW
            log "Changing fan level: $OLDLEVEL->$NEWLEVEL  (temps: $TEMP_ST=
R)"
        fi

        setlevel $NEWLEVEL

        sleep $INTERVAL

        # If needed, apply anti-pulsing hack after a settle-down period (an=
d=20
occasionally re-settle):
        if [ ${ANTIPULSE[${NEW_IDX}]} =3D=3D 1 ]; then=20
            if [ $NEWLEVEL !=3D $OLDLEVEL -o $RESETTLE_LEFT -le 0 ]; then #=
=20
start settling?
                SETTLE_LEFT=3D$SETTLE_TIME
                RESETTLE_LEFT=3D$RESETTLE_TIME
            fi
            if [ $SETTLE_LEFT -ge 0 ]; then
                SETTLE_LEFT=3D$((SETTLE_LEFT-INTERVAL))
            else
                setlevel 0x40 # disengage briefly to fool embedded controll=
er
                sleep 0.5
                RESETTLE_LEFT=3D$((RESETTLE_LEFT-INTERVAL))
            fi
        fi

        IDX=3D$NEW_IDX
        FIRST=3Dfalse
    done
}

if $KILL_DAEMON || $SUSPEND_DAEMON; then=20
    if [ -f "$PID_FILE" ]; then
        set -e
        DPID=3D"`cat \"$PID_FILE\"`"=20
        if $KILL_DAEMON; then
                kill "$DPID"
                rm "$PID_FILE"
                $QUIET || echo "Killed process $DPID"
        else # SUSPEND_DAEMON
                kill -USR1 "$DPID"
                $QUIET || echo "Sent SIGUSR1 to $DPID"
        fi
    else
        $QUIET || echo "Daemon not running."
        exit 1
    fi
elif $DAEMONIZE ; then
    if [ -e "$PID_FILE" ]; then
        echo "$0: File $PID_FILE already exists, refusing to run."
        exit 1
    else
        AM_DAEMON=3Dtrue QUIET=3Dtrue control_fan 0<&- 1>&- 2>&- &
        echo $! > "$PID_FILE"
        exit 0
    fi
else
    [ -e "$PID_FILE" ] && echo "WARNING: daemon already running"
    control_fan
fi
[/code]

Am Samstag 25 Februar 2006 06:11 schrieb Guarded Identity:
> Hi,
>
> I think one of the problems you're facing is that kernel's now offer
> internal governors (ondemand, conservative).  Before only userspace
> governors were available.  The internal governors aren't completely as
> flexible as userspace governors like powernowd, or cpufreqd, but I use the
> built in governors, and they work perfectly fine more me.  Honestly, most
> of the time, I'm just at 600MHz, so it's not really that big a deal for m=
e.
>  Ondemand just jumps really rapidly from min to max frequencies.=20
> Conservative does a slower ramping.  You can control these governors a bit
> from the SysFS.  Here's a listing of what's there in my Thinkpad T42:
>
> [ /sys/devices/system/cpu/cpu0/cpufreq]
> $ ls -la
> total 0
> drwxr-xr-x  4 root root    0 2006-02-24 22:45 ./
> drwxr-xr-x  3 root root    0 2006-02-24 08:33 ../
> -r--r--r--  1 root root 4096 2006-02-24 22:45 affected_cpus
> drwxr-xr-x  2 root root    0 2006-02-24 08:33 conservative/
> -r--------  1 root root 4096 2006-02-24 22:45 cpuinfo_cur_freq
> -r--r--r--  1 root root 4096 2006-02-24 22:45 cpuinfo_max_freq
> -r--r--r--  1 root root 4096 2006-02-24 22:45 cpuinfo_min_freq
> -r--r--r--  1 root root 4096 2006-02-24 22:45 scaling_available_frequenci=
es
> -r--r--r--  1 root root 4096 2006-02-24 22:45 scaling_available_governors
> -r--r--r--  1 root root 4096 2006-02-24 22:45 scaling_cur_freq
> -r--r--r--  1 root root 4096 2006-02-24 22:45 scaling_driver
> -rw-r--r--  1 root root 4096 2006-02-24 08:33 scaling_governor
> -rw-r--r--  1 root root 4096 2006-02-24 22:45 scaling_max_freq
> -rw-r--r--  1 root root 4096 2006-02-24 22:45 scaling_min_freq
> drwxr-xr-x  2 root root    0 2006-02-24 08:33 stats/
>
> So really, you don't quite need cpufrequtils if you're okay just directly
> managing these files, but honestly, cpufrequtils makes it pretty easy.
>
>     sudo sh -c "echo conservative > \
>         /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor"
>
> isn't quite as convenient as:
>
>     sudo cpufreq-set -g conservative
>
> Also, cpufrequtils will throw in a nice /etc/init.d/ script that helps set
> up the governor on boot-up.
>
> If you do want to use cpufreqd, powernowd, or some other userspace
> governor, then you're going to set the governor in the kernel to
> "userspace."  It looks like you have all the governors available that I do
> compiled into your kernel:
>
> [ /sys/devices/system/cpu/cpu0/cpufreq]
> $ more scaling_available_governors
> conservative ondemand powersave userspace performance
>
> Setting the governor to something like "ondemand" and also running cpufre=
qd
> will just be a waste of the cpufreqd daemon.  cpufreqd will only be in
> control if you set the kernel to use the "userspace" governor.
>
> Anyway, that's what I know about SpeedStepping.  Hopefully it helps you
> sort things out.
>
> - Sukant
>
> > Hello,
> >
> > i have a problem configuring my CPU-freq-scaling.
> > I do have laptopmode, cpufreqd and cpufrequtils. laptopmode is added to
> > battery runlevel, cpufeqd to default and battery and cpufrequtils to
> > nothing.
> >
> > Do i need both, cpufreqd and utils ? What do i have to do to make
> > speedstepping work. I can change frequency manually bei typing
> > cpufreq-set
> >
> >
> > denkbrett conf.d # cpufreq-info
> > cpufrequtils 0.4: cpufreq-info (C) Dominik Brodowski 2004
> > Report errors and bugs to linux@brodo.de, please.
> > analyzing CPU 0:
> >   driver: centrino
> >   CPUs which need to switch frequency at the same time: 0
> >   hardware limits: 800 MHz - 2.00 GHz
> >   available frequency steps: 2.00 GHz, 1.60 GHz, 1.33 GHz, 1.07 GHz, 800
> > MHz available cpufreq governors: conservative, ondemand, powersave,
> > userspace, performance
> >   current policy: frequency should be within 800 MHz and 800 MHz.
> >                   The governor "ondemand" may decide which speed to use
> >                   within this range.
> >   current CPU frequency is 800 MHz (asserted by call to hardware).
> >
> > is the output in bash, /etc/cpufreqd.conf is set, governor "ondemand" is
> > set in conf.d/cpufrequtils.
> >
> > Problems are: while compiling CPU is still on 800Mhz and when i cut ac,
> > laptopmode is still disabled and no govenor is changed or freq.