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




Ottobre 29, 2008 a 11:09 pm
pensa che io uso sempre conservative.. ondemand è violento XD
comunque gran bel post
Ottobre 30, 2008 a 12:00 am
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”
Ottobre 30, 2008 a 12:07 am
Ok, quando avrai risistemato le idee magari mettilo anche nel nostro wiki..
Ottobre 30, 2008 a 12:08 pm
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…)
Ottobre 30, 2008 a 5:14 pm
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..
Ottobre 30, 2008 a 5:20 pm
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.
Novembre 14, 2008 a 10:54 am
Grazie mille per questo post! Mi è utilissimo per gestire il risparmio energetico sul mio eeepc 900!
Ciau
Marco
Dicembre 4, 2008 a 12:05 pm
[...] Asus A8SC-4P107C: risparmio energetico. Parte II Ecco una seconda parte di quanto spiegato, in quella che ora, è diventata la prima parte. [...]
Dicembre 28, 2008 a 10:47 am
[...] 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 [...]
Gennaio 24, 2009 a 9:44 am
[...] daemontmpfs: ramdisk perfettacustom Kernel e webcam (UVC, uvcvideo)LXDE, laptop, shutdownLXDEAsus A8SC-4P107C: risparmio energeticoControllare salute hard diskXP, vista, seven e [...]
Gennaio 28, 2009 a 4:36 pm
“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è.
Gennaio 28, 2009 a 5:37 pm
@Babets
orco boia, non ci avevo pensato. Magari ne parliamo in chan o sul forum
Gennaio 29, 2009 a 1:41 pm
Apri un topic nella sezione aur del forum che poi vediamo che cosa ne viene fuori
Maggio 24, 2009 a 9:54 am
[...] A8SC-4P107C: risparmio energetico, [...]