Freitag, 25. Mai 2012, 02:14

Du bist nicht angemeldet.



ccegla52

unregistriert

1

Dienstag, 30. Dezember 2008, 20:16

AAO110 Bios 3308 Lüftersteuerung mit acer_ec.pl

Hi, vielleicht kann hier mir jemand helfen? Ich habe im aao-wiki eine Frage zum "acer_ec.pl" Skript eingestellt. Die Sache scheint mir sehr speziell zu sein. Ich habe heute Ubuntu 8.10 aufgespielt, was prima geklappt hat und mir mehr zusagt als Linpus lite. Bleibt derzeit für mich nur noch der etwas nervige Lüfter.

http://www.iphpbb3.com/forum/39151476nx2…_ecpl-t614.html

Gruß Christian
ccegla@t-online.de

basslord

Ubuntufreund

Beiträge: 2 671

Ubuntu: 12.04

Kernel: 3.2.0-24-generic

Desktop: KDE

Architektur: 64-bit

Danksagungen: 1 / 1

  • Private Nachricht senden

2

Mittwoch, 31. Dezember 2008, 14:35

Hi,

habe das Skript bei mir auch mal getestet. Habe BIOS 3309. Das Ergebnis war ziemlich ernüchternd und eine Art "Lüftersirene", d.h. gemäß Intervall (5 sec.) springt der Lüfter auf Vollgas für eine Sekunde und ist dann wieder aus. Nicht so toll. Das Bios soll in der Version ja unterstützt werden, mit einer älteren Bios-Version noch nicht getestet und ich mag es auch nicht zwingend zurücksetzen, nur um das mal zu vergleichen.
Eine Änderung bei den Temperaturen brachte jedenfalls keine Verbesserung bei diesem Verhalten. Und ganz ohne Kontrolle ausschalten möchte ich den Lüfter auch nicht.

Tja, hätte mich zwar auch gefreut, wenn das problemlos geklappt hätte, aber ich empfinde den Lüfter (der bei mir auch nicht so schlecht geregelt ist - sprich er springt eh erst nach einer gewissen Arbeitszeit an) nicht als so störend. Da macht mein Desktop weitaus mehr Lärm.

Gruß
Rodge
"Ohne Musik wäre das Leben ein Irrtum." - Friedrich Nietzsche

ccegla52

unregistriert

3

Dienstag, 27. Januar 2009, 21:14

Lüftersteuerung des AAO 110 über die acer_ec.pl -habe das Problem gelöst - Anpassung der acerfand - BIOS 3308

Hi, hat etwas gedauert,

habe die Variablen vür das BIOS 3308 beim Acer Aspire One 110L. System Ubuntu 8.10 mit abgepasste acerfand von Rachel Greenham Version 0.01. Veränderte werte mit "#" kommentiert. Mehr als flüsterleise. Ohne Last ca. 40 Grad Celsius CPU-Temperatur ausgelesen (Anleitung). Volllasttest fehlt noch.
Gruß Christian

>>>> Acerfand:

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
#!/bin/bash
#
# acerfand - Rudimentary automatic fan control for noisy Acer Aspire One models
#
# Author Rachel Greenham
#
# version 0.01

LOGGER=$(which logger)
if [ ! -x $LOGGER ] ; then
LOGGER="/usr/bin/logger"
fi
if [ ! -x $LOGGER ] ; then
echo "Warning, logger can't be found. Will log to stdout"
unset LOGGER
fi

LOGLEVEL="info"

log() {
if [ ! -z "$LOGGER" ] ; then
$LOGGER -p daemon.$LOGLEVEL -t acerfand "$@"
else
echo "$@"
fi
}

info() {
LOGLEVEL="info"
log "$@"
}

notice() {
LOGLEVEL="notice"
# log "$@"
}

err() {
LOGLEVEL="err"
log "$@"
}

if pgrep acerfand | grep -v $$ > /dev/null; then
info "acerfand already running"
exit 0
fi

ME=$(readlink -f $0)

ACEREC=$(which acer_ec.pl)
if [ -z $ACEREC ] ; then
ACEREC=$(dirname $ME)/acer_ec.pl
fi

if [ ! -r $ACEREC ] ; then
err "acer_ec.pl can't be found"
exit 1
fi

INTERVAL=5
FANOFF=60
FANAUTO=70

if [ -r "/etc/acerfand.conf" ] ; then
source "/etc/acerfand.conf"
fi

R_FAN=55
R_TEMP=58

FAN_CMD_OFF=21 # verändert von 1f auf 21 bei BIOS-Version3308
FAN_CMD_AUTO=0 # verändert von 00 auf 0 bei BIOS-Version3308

FAN_STATE_UNRECOGNIZED=0
FAN_STATE_AUTO=1
FAN_STATE_OFF=2
FAN_STATE_NAMES=("Unrecognized" "Auto" "Off")
FAN_STATE_CMDS=("$FAN_CMD_OFF" "$FAN_CMD_AUTO" "$FAN_CMD_OFF")

acer_ec() {
perl $ACEREC $@
}

getTemp() {
TEMP=$[$(acer_ec ?= $R_TEMP | cut -f 3 -d' ')]
notice "temp: $TEMP"
}

getRawFanState() {
RAW_FAN_STATE=$(acer_ec ?= $R_FAN | cut -f 3 -d' ')
}

getFanState() {
FAN_STATE=$FAN_STATE_UNRECOGNIZED
getRawFanState
if [ "$RAW_FAN_STATE" == "0x21" ]; then # verändert von 0x1f auf 0x21 bei BIOS-Version3308
FAN_STATE=$FAN_STATE_OFF
else
let A="$RAW_FAN_STATE & 0x10" || true
if [ "$A == 0" ] ; then
# ASSUMPTION: All values with nybble 1==0 denote auto
FAN_STATE=$FAN_STATE_AUTO
fi
fi
notice "read fan state ${FAN_STATE_NAMES[$FAN_STATE]}"
}

setFan() {
info "Set fan ${FAN_STATE_NAMES[$1]}"
acer_ec := $R_FAN ${FAN_STATE_CMDS[$1]} > /dev/null
}

govern() {
trap "info exiting;setFan $FAN_STATE_AUTO; exit" INT TERM EXIT
info "Starting to govern acer fan speed. Interval: $INTERVAL, fan-off: $FANOFF, fan-auto: $FANAUTO"
while true; do
getTemp
getFanState
case "$FAN_STATE" in
$FAN_STATE_AUTO)
if [ "$TEMP" -le "$FANOFF" ] ; then
setFan $FAN_STATE_OFF
fi
;;
$FAN_STATE_OFF)
if [ "$TEMP" -ge "$FANAUTO" ] ; then
setFan $FAN_STATE_AUTO
fi
;;
*)
# weird state. Let's turn it off,
# then decide next time around
setFan $FAN_STATE_OFF
;;
esac
sleep $INTERVAL
done
}

set -e

govern &

basslord

Ubuntufreund

Beiträge: 2 671

Ubuntu: 12.04

Kernel: 3.2.0-24-generic

Desktop: KDE

Architektur: 64-bit

Danksagungen: 1 / 1

  • Private Nachricht senden

4

Dienstag, 27. Januar 2009, 21:36

Cool, danke. Werd ich asap mal antesten.

Gruß
Rodge
"Ohne Musik wäre das Leben ein Irrtum." - Friedrich Nietzsche