Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: GentooForum.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

25.02.2006, 15:35

Lüftersteuerung reagiert nicht

Ok langsam verzeifel ich doch.

Obwohl meine Temperatur bei 44°C liegt und ich ein Skript laufen habe, dass die Lüfter steuert, läuft der Lüfter durch. Ich habe das Gefühl, dass ich vor lauter konfigurieren irgendwo Sachen falsch eingestellt haben muss.

Meine Situation:
rc-update show :

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
               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


lsmod:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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 snd_pcm_oss,snd_mixer_oss,snd_seq_oss,snd_seq,snd_seq_device,snd_intel8x0,snd_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


/etc/cpufreqd.conf

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# this is a comment
#
# you need: 1 [General] section, 
#           1 or more [Profile] sections
#	          1 or more [Rule] sections
#
# a section ends at the first blank line
#
# [Rule] sample:
#           [Rule]
#           name=sample_rule
#           ac=on                    # (on/off)
#           battery_interval=0-10
#           cpu_interval=30-60
#           programs=xine,mplayer
#           profile=sample_profile
#
# [Profile] sample:
#           [Profile]
#           name=sample_profile
#           minfreq=10%
#           maxfreq=100%
#           policy=performance
#
# see CPUFREQD.CONF(5) manpage for a complete reference

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

[Profile]
name=hi_boost
minfreq=10%
maxfreq=100%
policy=ondemand

[Profile]
name=medium_boost
minfreq=33%
maxfreq=66%
policy=ondemand

[Profile]
name=lo_boost
minfreq=0%
maxfreq=33%
policy=ondemand

[Profile]
name=lo_power
minfreq=0%
maxfreq=33%
policy=powersave

# conservative mode when not AC
[Rule]
name=conservative
ac=off                   # (on/off)
battery_interval=0-100   
cpu_interval=0-40
profile=lo_boost

# need some power
[Rule]
name=lo_cpu_boost
ac=off                   # (on/off)
battery_interval=0-100
cpu_interval=30-80
profile=medium_boost

# need big power (not if battery very low)
[Rule]
name=hi_cpu_boost
ac=off                   # (on/off)
battery_interval=50-100
cpu_interval=70-100
profile=medium_boost

# full power when AC
[Rule]
name=AC_on
ac=on                   # (on/off)
profile=hi_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=dvd_watching
ac=off                   # (on/off)
battery_interval=0-100
programs=xine,mplayer,avidemux
cpu_interval=0-100
profile=hi_boost


/etc/conf.d/cpufrequtils

Quellcode

1
2
3
4
5
6
# /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="userspace"


unter /proc/acpi/ibm/fan steht nur

Quellcode

1
2
3
status:         disabled
speed:          4055
commands:       enable, disable



Wenn noch jemand andere Infos benötigt bitte sagen.

Außerdem bleibt die CPU immer auf 800Mhz, obwohl unter cpufreq-info steht:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
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.


weitere Ausgabe:

Quellcode

1
2
chiefcommander@denkbrett /proc/acpi/ibm $ cpufreqd-set dynamic
No cpufreqd socket found


die Datei, die zur Steuerung der Lüfter benutzt wird ist:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
#!/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 
# "tp-fancontrol -u" during the suspend process.
# 
# 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=( #  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 DRAM
  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 0x79)
)


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

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

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

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

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="$OPTARG"
            ;;
        t) # test mode
            DRY_RUN=true
            ;;
        q) # quiet mode
            QUIET=true
            ;;
        d) # go into background and daemonize
            DAEMONIZE=true
            ;;
        l) # log to syslog
            SYSLOG=true
            ;;
        p) # different pidfile
            PID_FILE="$OPTARG"
            ;;
        k) # kill daemon
            KILL_DAEMON=true
            ;;
        u) # suspend daemon
            SUSPEND_DAEMON=true
            ;;
        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=false || :

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

thermometer() { # output list of temperatures
    # Base temperatures from ibm-acpi:
    [ -r $IBM_ACPI/thermal ] || { echo "$0: Cannot read $IBM_ACPI/thermal" 2>&1 ; exit 1; }
    read X Y < $IBM_ACPI/thermal
    [ "$X" == "temperatures:" ] || { echo "$0: Bad temperatures: $X $Y" >&2;  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; exit 1; }
    perl -e 'm/^EC 0xc0: .(..) .(..) .(..) / and print hex($1)." ".hex($2)." ".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' < $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=0
    NEW_IDX=0
    START_TIME=0
    MAX_IDX=$(( ${#LEVELS[@]} - 1 ))
    SETTLE_LEFT=0
    RESETTLE_LEFT=0
    FIRST=true
    RESTART=false
}

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=true; sleep $SUSPEND_TIME" USR1

    init_state
    log "Starting dynamic fan control"

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

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

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

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

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

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

        setlevel $NEWLEVEL

        sleep $INTERVAL

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

        IDX=$NEW_IDX
        FIRST=false
    done
}

if $KILL_DAEMON || $SUSPEND_DAEMON; then 
    if [ -f "$PID_FILE" ]; then
        set -e
        DPID="`cat "$PID_FILE"`" 
        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=true QUIET=true control_fan 0<&- 1>&- 2>&- &
        echo $! > "$PID_FILE"
        exit 0
    fi
else
    [ -e "$PID_FILE" ] && echo "WARNING: daemon already running"
    control_fan
fi


Im Kernel ist fast alles deaktiviert an Govenormöglichkeiten


so mehr Infos fallen mir jetzt spontan nicht ein. Ich hoffe, es kann jemand was damit anfangen.
Gentoo 2.6.16-r1 @ IBM Thinkpad T43