Lo scopo di questo thread è quello di cercare di migliorare il più possibile l'autonomia del nostro SGS2 a schermo spento, lavorando sulle fonti dei famigerati wakelocks che "svegliano" il nostro apparecchio dal suo stato di deepsleep.
Questi nemici della batteria sono di due tipi:
- Kernel Wakelocks, dovuti all'hardware del telefono;
- Partial Wakelocks, dovuti al software.
L'app BetterBatteryStats (d'ora in poi, BBS) di asksven ci permette di monitorare entrambe le classi di wakelocks, fornendoci, per ogni voce, il numero di occorrenze e la loro durata totale.
Come periodo di riferimento si può scegliere tra le seguenti opzioni:
- since charged (da quando il telefono è stato staccato dalla carica al 100%)
- since unplugged (da quando è stato staccato dal cavo di alimentazione/USB, a prescindere dalla carica)
- since boot (dall'ultimo riavvio)
- custom reference (impostazione personale dell'utente).
Per testare il comportamento del nostro telefono a schermo spento suggerisco di attivare quest'alternativa (soft key sinistro, More, Set Custom Ref), chiudere tutte le app e spegnere lo schermo, non toccando l'apparecchio per almeno un'oretta.
Al risveglio possiamo tirare le somme, riaprendo BBS e lavorando su quei wakelock che hanno tempi prolungati (quando i contatori segnano pochi minuti o secondi è OK).
Nota importante: i wakelock elencati di seguito sono quelli che tipicamente interrompono il deep sleep, chiaro che ce ne sono altri che avvengono a schermo acceso, quando usiamo il telefono.
Videorecensione (in English) di BBS, utile per farsi un'idea dell'interfaccia del programma.
Kernel Wakelocks
* alarm_rtc: scheduler degli allarmi legato al partial wakelock AlarmManager, attiva il telefono per sincronizzazioni e messaggi push. Istruzioni: disattivare la sincronizzazione automatica di applicazioni e widget, oppure settare degli intervalli di tempo abbastanza lunghi.
* deleted_wake_locks: raccoglie dati relativi ad applicazioni disinstallate o disattivate che causavano wakelocks. Istruzioni: in genere basta riavviare il sistema, non è un WL di cui preoccuparsi particolarmente. Se il problema persiste, un wipe cache + wipe dalvik cache dovrebbe risolvere.
* l2_hsic: WL legato all'APN. Istruzioni: da Impostazioni, Reti mobili, Profili ricreare un profilo APN identico a quello usato, lasciando vuoti tutti i campi ad eccezione dei primi due. (thanks to riccardoPolaris & stefal639)
* mmc0_detect, mmc1_detect, mmc2_detect: rilevazione di schede SD. Istruzioni: smontare/montare SD esterna da Impostazioni, Memoria e riavviare il cellulare.
* PowerManagerService: dovrebbe essere il Kernel WL più frequente, dato che il suo scopo è quello di indicizzare i Partial WL. Istruzioni: v. sezione seguente.
* sdio_al, sdio_dmux: questo WL sembra dipendere dal collegamento dati mobile. Istruzioni: attivare la connessione internet Wi-Fi al posto di quella mobile, provare a cambiare il modem.
* suspend_backoff: contatore che si attiva quando il telefono vuole andare in deepsleep, ma un'app glielo impedisce. Istruzioni: tipicamente alti valori di questo WL dipendono dal Wi-Fi. Impostazioni, Wi-Fi, Avanzati, Mantieni Wi-Fi attivo durante la modalità Sleep, Sempre. Se il problema persiste (e quindi il Wi-Fi non c'entra), provare con un wipe cache + wipe dalvik cache.
* vbus_present: dovrebbe avere a che fare con collegamenti via cavo (USB ed alimentatore A/C). Ricordatevi sempre che il telefono non va in deepsleep se è sotto carica.
* wlan_rx, wlan_rx_wake, wlan_wake: risvegli causati da traffico internet (e sincronizzazioni automatiche eventualmente attivate). Istruzioni: disattivare sincronizzazioni, mobile data e Wi-Fi quando non necessari e mettere in modalità aereo quando non serve la linea telefonica.