Asus A8SC-4P107C: risparmio energetico

Ottobre 29, 2008

Come al solito darò una spiegazione “fai da te”. In questo caso parlerò del risparmio energetico del mio mitico portatile Asus A8SC-4P107C

Strumenti utilizzati

A parte quelli di utilizzo normale del laptop ho usato i seguenti strumenti:

  • pacchetto cpufreqd e relativo demone (facoltativo);
  • pacchetto acpid e relativo demone;
  • modulo asus_laptop (blacklistando asus-acpi);
  • modulo acpi-cpufreq, cpufreq_ondemand, cpufreq_conservative (gli ultimi due non necessari, messi solo per scrupolo)

Kill switch iwl3945

Dopo aver bestemmiato due giorni di seguito (risolvendo un problema da me creato) ho configurato acpid in modo che possa spegnere il wifi, quando non mi serve (praticamente non gli fa quasi più consumare corrente), usando il tasto apposito del portatile. Con il comando acpi_listen  ho “ascoltato” l’evento causato dal tasto.

Successivamente ho creato il file

/etc/acpi/events/iwl_kill

e impostato in modo che intercetti l’evento ed esegua successivamente lo script /etc/acpi/iwl_kill.sh

event=hotkey ATKD 0000005d
action=/etc/acpi/iwl_kill.sh

Lo script è una puttanata pazzesca scritta da me, infatti funziona solo ed esclusivamente con il mio portatile e con il kernel 2.6.27, oltretutto è strutturato da culo in quanto si potrebbe scrivere in maniera molto ma molto più elegante (ma non avevo voglia di spremere le meningi).

Ora riavviando acpid posso spegnere e accendere la periferica wifi; fortunatamente questo non provoca sbalzi d’umore a wicd che mi avverte solamente o che non ho nessuna rete wifi disponibile o che il segnale è al 0% e quando riattivo il wifi wicd ritorna collegato al mio AP casalingo (o se sono in treno nella linea Calalzo-Padova tenta di collegarsi ai numerosi AP presenti durante il tragitto).

Batteria e rete elettrica

Sempre usando acpid ho configurato due “stati” differenti (e quindi due script):

  • batteria: imposta la luminosità a 3 e imposta lo scaling della cpu su conservative
  • rete: imposta la luminosità a 6 e imposta lo scaling della cpu su ondemand

Si poteva fare a meno di usare cpufreq-set perché basterebbe usare questi accorgimenti
per batteria

echo conservative > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo conservative> > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor

mentre questo per rete

echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo ondemand > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor

Ovviamente intercetto gli eventi, creando due file in /etc/acpi/events, che tengano d’occhio il cambiamento della sorgente di corrente e lancino i miei script appositi (chiamo questi file con lo stesso nome degli script ma non è obbligatorio!)

Questo è batteria

event=battery.*
action=/etc/acpi/batteria.sh

mentre questo rete

event=ac_adapter.*
action=/etc/acpi/rete.sh

Riavviando acpid tutto ok, tutto funziona.

Però se avvio il laptop sta già usando la batteria non, essendo connesso alla rete elettrica, in che stato sono? In quello “normale”, né in batteria né in rete. Questo perché acpid all’avvio non può ascoltare nessun cambiamento dato che non c’è stato, io infatti negli eventi ascolto solo dei cambiamenti: rete elettrica a batteria o viceversa.
Quindi ho preso /etc/rc.local e ho schiaffato questa roba qua, così all’avvio del sistema (o meglio, alla fine dell’esecuzione di tutti i runlevel) metto il portatile nello “stato” o rete o batteria.

Bluetooth

Il bluetooth, anche se non carico i driver, viene comunque tenuto acceso all’avvio. Non serve neanche creare niente per acpid in quanto credo che tutto venga gestito via hardware dal portatile, ciò non toglie che in rc.local possa aggiungere questa riga per disabilitarlo all’inizio (poi posso comunque riaccenderlo con il pulsante apposito).

Occhio

  • Come ho già scritto i miei script fanno schifo, si potrebbero migliorare
  • Riguardo al punto sopra chi usa *buntu si trova già una marea di script pronti all’uso (ma non avevo voglia di fare copia incolla)
  • Come ho già scritto è una soluzione fai da te, non ho trovato un power-manager decente che faccia come dico io
  • Per fare il fico uso zsh nei miei script (e anche come shell standard) invece che sh o bash
  • Uso ondemand anche quando connesso alla rete elettrica: perché consumare di più quando non serve?

Da leggere

http://www.gentoo.org/doc/it/power-management-guide.xml

http://wiki.archlinux.org/index.php/Cpufrequtils

14 Risposte a “Asus A8SC-4P107C: risparmio energetico”

  1. simo91 Dice:

    pensa che io uso sempre conservative.. ondemand è violento XD

    comunque gran bel post :)

  2. ugaciaka Dice:

    anzi, mi sono anche dimenticato di dire che volendo si può fare uno script unico rete-batteria.sh, infatti quando si intercetta qualsiasi evento si può passare %e allo script e da lì con istruzioni condizionali sapere quale evento lo ha chiamato e cosa deve eseguire (basta vedere come funziona handler.sh per capirci, che è di default e che ho “eliminato”). Sarebbe più carino fare così…ma non ne avevo voglia…ehehehe…

    PS se e quando avrò voglia rimetterò a posto gli script e farò una cosa un po’ più decente. Oltre le cose che ho già detto mettere un log (che non so come funziona), gestione delle eccezioni e via dicendo

    PPS zsh è retrocompatibile con bash se si usano le stesse “cose”

  3. simo91 Dice:

    Ok, quando avrai risistemato le idee magari mettilo anche nel nostro wiki.. ;)

  4. ugaciaka Dice:

    se vuoi degli script che vanno quasi su tutto prendi quelli di ubuntu, credo basti copiare la directory /etc/acpi e quella dove si trovano gli script (su ubuntu ne hanno messa una che se non ricordo male è /etc/acpi-support o una roba del genere…)

  5. simo91 Dice:

    Ok appena ho voglia mi diverto un pò con virtualbox ;) poi magari il wiki lo faccio io.. non tutti hanno voglia/possibilità di andare in ubuntu a copiare degli script..

  6. ugaciaka Dice:

    basta aprire una .iso di ubuntu con loop, non occorre neanche masterizzare!

    mount -o loop -t iso9660 /home/simo91/file.iso /mnt/iso

    Ben venga il wiki, io non proprio sono negato nello scrivere wiki quindi lascio a chi vuole e sopratutto reputa interessante quanto ho scritto trasformarlo e ampliarlo per renderlo una guida degna del wiki di arch.

  7. [XAVI] Dice:

    Grazie mille per questo post! Mi è utilissimo per gestire il risparmio energetico sul mio eeepc 900!

    Ciau

    Marco


  8. [...] Asus A8SC-4P107C: risparmio energetico. Parte II Ecco una seconda parte di quanto spiegato, in quella che ora, è diventata la prima parte. [...]


  9. [...] energetico. Parte III Eccomi qua con la terza parte ed ultima parte iniziata con questi post: Asus A8SC-4P107C: risparmio energetico. Parte I Asus A8SC-4P107C: risparmio energetico. Parte [...]


  10. [...] daemontmpfs: ramdisk perfettacustom Kernel e webcam (UVC, uvcvideo)LXDE, laptop, shutdownLXDEAsus A8SC-4P107C: risparmio energeticoControllare salute hard diskXP, vista, seven e [...]

  11. Babets Dice:

    “Riguardo al punto sopra chi usa *buntu si trova già una marea di script pronti all’uso (ma non avevo voglia di fare copia incolla)”
    Mi è venuto in mente una cosa, ma non si potrebbe fare un pacchetto da mettere in aur con tutti gli script di cui fai riferimento di ubu che possono sempre tornare utili? :)
    Penso basti cercare il pacchetto in packages.ubuntu.com no?
    Qualcosa bisognerà adattare di sicuro ma vabbè.

  12. ugaciaka Dice:

    @Babets
    orco boia, non ci avevo pensato. Magari ne parliamo in chan o sul forum

  13. Babets Dice:

    Apri un topic nella sezione aur del forum che poi vediamo che cosa ne viene fuori :)


  14. [...] A8SC-4P107C: risparmio energetico, [...]


Lascia un commento