AAO110 LINPUS Bios 3308 Lüftersteuerung mit acer_ec.pl




Hardware des Aspire One A110

AAO110 LINPUS Bios 3308 Lüftersteuerung mit acer_ec.pl

Beitragvon ccegla52 » Mo 29. Dez 2008, 18:19

Hi,

ich habe nach Anleitung 39151476nx21895/aspire-one-a110-f4/bios-v3304-und-neues-acerfand-script-endlich-ruhe-im-kasten-t423.html versucht den Lüfter zusteuern. Ich habe auch eine acerfand.conf eingerichtet.
Der Lüfter läuft deutlich leise, aber immer noch recht laut.
Die in der Anleitung genannten Perlbefehle (modifiziert nach BIOS nach Anleitung) funktionieren ganz gut:

# perl acer:ec.pl := 0x55 1f >>> maximale Lüfterdrehzahl
# perl acer:ec.pl := 0x55 20 >>> für 5 Sekunden aus dann maximale Drehzahl
# perl acer:ec.pl := 0x55 0 >>> Autobetrieb geringe jedoch noch deutlich hörbare Lüfterbewegung.

Weiß jemand wie ich in der Auto-Einstellung den Lüfter ganz aus bekommen? Das Perlscript scheint für die BIOS-Version 3309 gebaut zu sein?

Gruß Cegla
ccegla@t-online.de
Gruß Christian
ccegla@t-online.de
ccegla52
 
Beiträge: 5
Registriert: Mo 29. Dez 2008, 18:02

von Anzeige » Mo 29. Dez 2008, 18:19

Anzeige
 

Re: AAO110 LINPUS Bios 3308 Lüftersteuerung mit acer_ec.pl

Beitragvon ccegla52 » Di 30. Dez 2008, 20:04

Natürlich ist das mit " in der Auto-Einstellung den Lüfter ganz aus bekommen? " Quatsch. Ich will den Kerl bis 60 Grad aus haben und dann auf viertel bis halber Kraft laufen lassen (ab 70 Grad kann er dann voll drehen).

Die acerfand habe ich wir folgt geändert (Fettschrift). Ich glaube jedoch dass auch andere Bereiche geändert werden müssen (Fett- und Kursivschrift).

Kann mir jemand helfen?

Gruß Christian

Auszug aus Acerfand Version 0.4
.................
info "acerfand $ACERFAND_VERSION starting"

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

ME=$(readlink -f $0)

BIOS_VERSION_3109="v0.3109"
BIOS_VERSION_3114="v0.3114"
BIOS_VERSION_3304="v0.3304"
BIOS_VERSION_3305="v0.3305"
BIOS_VERSION_3305="v0.3308"


BIOS_VERSION_DEFAULT=$BIOS_VERSION_3308

getBiosVersion() {
DMIDECODE=$(which dmidecode)
if [ -z $DMIDECODE ] ; then
info "Can't find dmidecode. Assuming bios $BIOS_VERSION_DEFAULT"
BIOS_VERSION=$BIOS_VERSION_DEFAULT
else
BIOS_VERSION=$($DMIDECODE -s bios-version)
info "Detected bios version $BIOS_VERSION"
fi
}

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

getBiosVersion

case "$BIOS_VERSION" in
"${BIOS_VERSION_3304}" | "${BIOS_VERSION_3308}")
R_FAN=55
R_TEMP=58
FAN_CMD_OFF=20
FAN_CMD_AUTO=00
RAW_FAN_STATE_OFF="0xaf"
;;
"${BIOS_VERSION_3114}" | "${BIOS_VERSION_3109}")
R_FAN=55
R_TEMP=58
FAN_CMD_OFF=1f
FAN_CMD_AUTO=00
RAW_FAN_STATE_OFF="0x1f"
;;
*)
err "Unsupported bios version ${BIOS_VERSION} found. Aborting."
exit 1
;;
esac

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" == "$RAW_FAN_STATE_OFF" ]; then
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 &
Gruß Christian
ccegla@t-online.de
ccegla52
 
Beiträge: 5
Registriert: Mo 29. Dez 2008, 18:02

Re: AAO110 LINPUS Bios 3308 Lüftersteuerung mit acer_ec.pl

Beitragvon franco_bez » Mi 31. Dez 2008, 09:36

ccegla52 hat geschrieben:Natürlich ist das mit " in der Auto-Einstellung den Lüfter ganz aus bekommen? " Quatsch. Ich will den Kerl bis 60 Grad aus haben und dann auf viertel bis halber Kraft laufen lassen (ab 70 Grad kann er dann voll drehen).


Ob das mit "viertel bis halber Kraft" geht weiß ich nicht.

Ich habe das acerfand script folgerndermaßen geändert:
acerfand hat geschrieben:BIOS_VERSION_3109="v0.3109"
BIOS_VERSION_3114="v0.3114"
BIOS_VERSION_3304="v0.3304"
BIOS_VERSION_3305="v0.3305"
#FRANCO
BIOS_VERSION_3307="v0.3307"
BIOS_VERSION_3308="v0.3308"
BIOS_VERSION_3309="v0.3309"

BIOS_VERSION_DEFAULT=$BIOS_VERSION_3309

getBiosVersion() {
DMIDECODE=$(which dmidecode)
if [ -z $DMIDECODE ] ; then
info "Can't find dmidecode. Assuming bios $BIOS_VERSION_DEFAULT"
BIOS_VERSION=$BIOS_VERSION_DEFAULT
else
BIOS_VERSION=$($DMIDECODE -s bios-version)
info "Detected bios version $BIOS_VERSION"
fi
}

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
#FRANCO
FANOFF=55
FANAUTO=60
#FANOFF=60
#FANAUTO=70

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

getBiosVersion

case "$BIOS_VERSION" in
"${BIOS_VERSION_3304}" | "${BIOS_VERSION_3305}" | "${BIOS_VERSION_3307}" | "${BIOS_VERSION_3308}" | "${BIOS_VERSION_3309}")
R_FAN=55
R_TEMP=58
FAN_CMD_OFF=af
FAN_CMD_AUTO=00
RAW_FAN_STATE_OFF="0xaf"
;;
"${BIOS_VERSION_3114}" | "${BIOS_VERSION_3109}")
R_FAN=55
R_TEMP=58
FAN_CMD_OFF=1f
FAN_CMD_AUTO=00
RAW_FAN_STATE_OFF="0x1f"
;;
*)
err "Unsupported bios version ${BIOS_VERSION} found. Aborting."
exit 1
;;
esac


Wieso Du an den Kommandos drehen willst weiß ich nicht, da die Bytes 0xaf bzw. 0x1f wohl im BIOS als Kommandos zur Lüftersteuerung hinterlegt sind. An den Temperaturen kann man aber schon "drehen".

Speziell wird Dir eine Änderung an den Kommandos für die alten Bios Versionen (3109 und 3114) wohl keinerlei Effekt bringen, da Du ja die 3308er Version einsetzt.

Ciao,
Franco
franco_bez
 
Beiträge: 394
Registriert: Di 12. Aug 2008, 23:10

Re: AAO110 LINPUS Bios 3308 Lüftersteuerung mit acer_ec.pl

Beitragvon anton » Sa 3. Jan 2009, 11:28

Habe mir mit der BIOS-Version 3308 zunächst auch die hervorragende Dämoneneistung von acerfand zerstört. Nach einigem Experimentieren läuft alles (fast) wieder: Statt den Hex-werten 1f muss 21 geschrieben werden.
Noch ungeklärt: Manchmal schaltet sich der Lüfter erst nach nochmaliger Eingabe des Registerwerts 21 aus.
Die Änderung des Perl-Script acerfand gestaltet sich einfach: In zwei Zeilen muss der Eintrag 1f in 21 geändert werden.
Und einen ganz persönlichen Wunsch hätte ich an euch Perl-Programmieren: Die Anzeige der Temperatur in der Task-Leiste. Ach hätte ich doch Perl gelernt...
Warte geduldig
anton
 
Beiträge: 3
Registriert: Mo 22. Dez 2008, 12:04

Re: AAO110 LINPUS Bios 3308 Lüftersteuerung mit acer_ec.pl

Beitragvon ccegla52 » Di 27. Jan 2009, 21:21

Hi, habe Erfolg gehabt. Nach genannte Veränderungen haben beim BIOS 3308 funktioniert. Gruß Christian

acerfand Version 0.01

#!/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 &
Gruß Christian
ccegla@t-online.de
ccegla52
 
Beiträge: 5
Registriert: Mo 29. Dez 2008, 18:02



Ähnliche Beiträge

Probleme mit Lüftersteuerung unter Bios 0.3309
Forum: A110
Autor: sixpeck
Antworten: 1
BIOS Version 3308 verfügbar
Forum: A150
Autor: franco_bez
Antworten: 6
2. interne Festplatte im AAO110
Forum: Mods
Autor: Jannico
Antworten: 5
AAO D250 Lüftersteuerung ?
Forum: D250
Autor: radioactiveman
Antworten: 4
AAO110, WindowsXP & Huawei-Datenmodem
Forum: Windows
Autor: Zapata
Antworten: 2

TAGS

Zurück zu A110

Wer ist online?

0 Mitglieder

cron