Daniels Blog
3Feb/131

Hoher Akkuverbrauch bei Android: surfaceflinger und mediaserver verursachen eine hohe CPU-Last

Auf meinem ewigen Quest die Akkulaufzeit meiner Androidgeräte möglichst gut zu optimieren, bin ich seit einer Zeit immer wieder über zwei Systemprozesse gestolpert, die ohne ersichtlichen Grund an meiner Batterielaufzeit genagt haben: surfaceflinger und mediaserver.

Screenshot_2013-02-03-14-14-29

1. surfaceflinger

surfaceflinger managed den Android-Framebuffer. Dieser wird im Endeffekt benötig um Ausgaben auf dem Bildschirm auszugeben. Leider scheint surfaceflinger seit einigen Androidversionen im Zusammenspiel mit bestimmten Roms fehlerhaft zu sein.

Ein wenig Recherche im Internet brachte mich auf eine funktionierende Lösung: Wenn man Einstellungen -> Display -> "Display automatisch drehen" deaktiviert, verhält sich surfaceflinger sofort wieder normal. Da ich ein Smartphone mit ausschiebbarer Tastatur habe, benötige ich die automatische Drehung nicht wirklich. Ich kann den Screen manuell durch das Öffnen der Tastatur drehen. Androidnutzer ohne Tastatur müssen wohl zur Zeit auf ein Widget zum Drehen des Bildschirmes zurückgreifen oder mit der Energieverschwendung leben.

2. mediaserver

mediaserver war bei mir Stromfresser Nummer 2. Der Prozess kümmert sich um das Bereitstellen von Medien für verschiedene Applikationen und um den Mediascan der SD-Karte. Dieser ist bei mir nach jedem Reboot aber auch unnachvollziehbar im laufenden Betrieb angesprungen. Er frisst sehr viel Batterie, verlangsamt das Telefon stark und ist in meinem Fall unnütz, da er lediglich Bilder und Musikdateien für die internen Android-Applikationen bereitstellt (Galerie, Mediaplayer). Ich nutze als Bildbetrachter "Quickpic" und als Musikplayer "Poweramp". Beide bringen ihre eigenen Sacnroutinen mit, deshalb konnte ich die Scanfunktion des Mediaservers ohne Probleme abschalten.

su
pm disable com.android.providers.media/com.android.providers.media.MediaScannerReceiver

Danach werden interne Androidapps nicht mehr über neue Medien informiert und der Scanner läuft gar nicht mehr.
Um ihn wieder zu aktivieren führt man ein

su
pm enable com.android.providers.media/com.android.providers.media.MediaScannerReceiver

im lokalen Android Terminal aus (zum Beispiel mit der App ConnectBot)

Fazit:
Durch das Bändigen der beiden Prozesse im Zusammenspiel mit den Verändeurngen aus dem oben verlinkten älteren Blogartikel von mir komme ich wieder auf angenehme 1,5% - 2,0% Akkuverbrauch pro Stunde.

18Okt/122

13 Tricks um den Android Akku zu schonen für eine bessere Batterie-Laufzeit

Die Akkulaufzeiten bei Smartphones sind ein Rückschritt. Das gute alte Nokia 3210 hielt locker 5 Tage durch, heute ist man schon froh, wenn das Handy einen Tag schafft. Der große technische Durchbruch für bessere Akkus scheint nicht unmittelbar bevorzustehen, also mußte ich mir selbst helfen. Alle Tricks die ich hier beschreibe sind sicherlich nicht der Königsweg um das Problem zu lösen. Da Stromsparen auch immer einen Komfortverlust bedeutet, muß man individuell entscheiden, welche Maßnahmen sich lohnen und welche nerven.

Um wirklich alle Möglichkeiten des Akkuschonens auszureizen, kommt man leider nicht darum herum, sein Telefon zu rooten oder ein Custom ROM einzuspielen, da viele Einstellungen auf einem "normalen" Androiden gar nicht erst vom Benutzer verändert werden können.

1. Der Akku

Die von der Herstellern mitgelieferten Akkus sind zwar meistens gut und genau auf das entsprechende Device abgestimmt, aber besonders bei preiswerten Geräten wird hier auch gespart. Die Leistung eines Akkus ist so gut wie immer auf dem Akku selbst in Milliamperestunden (mAh) aufgedruckt. Mit einer Suche bei Amazon findet man in der Regel Ersatzakkus für jedes Gerät. Stärkere Akkus für die Geräte sind meist größer als das Originalzubehör, so dass man eine spezielle neue Abdeckhaube für das Handy benötigt. Diese Haube liegt den Akkus bei, macht das Gerät aber dicker, damit der größere Akku Platz findet. Für viele nicht die ideale Lösung, aber eine zuverlässige Möglichkeit, auf jeden Fall eine höhere Laufleistung zu erreichen.

2. CPU-Taktung

Ein großer Verbraucher neben dem Bildschirm ist die CPU bei Smartphones. Hier fallen besonders Apps und Services ins Gewicht, die im Hintergrund arbeiten und die CPU belasten, gerade wenn das Smartphone im Standby ist und eigentlich gar nicht vom Benutzer gebraucht wird. Man wundert sich am dann Abend, dass das Gerät schon wieder fast leer ist, obwohl man es gar nicht benutzt hat. Die Prozesse im Hintergrund haben den ganzen Tag irgendetwas getan und den Akku so leergesaugt.

Die Beste Möglichkeit um das Problem zu beheben wäre natürlich die Prozesse zu bändigen. Mit einer dynmaischen CPU-Taktung kann man den Verbrauch aber zumindest deckeln, wenn das Gerät im Standby ist.

Die Geschwindigkeit mit der eine CPU maximal rechnen darf, kann in fast allen Smartphones geregelt werden. Normalerweise macht das System dies selbst - je nach voreingestellter Herstellerkonfiguration. Diese kann akkuschonend oder sehr belastend sein. Als Benutzer hat man jedoch bei einem gerooteten Gerät die Möglichkeit, das Verhalten selbst zu steuern. Zum Beispiel mit der App "CPU Tuner" . Hier kann man eine Regel erstellen, die bewirkt, dass der Prozessor bei ausgeschaltetem Bildschirm auf Minimalleistung heruntertaktet und beim Einschalten des Bildschirms wieder auf maximale Leistung taktet. So können wildgelaufene Prozesse nur noch mit geringer Geschwindigkeit am Akku nagen. Das ist jedoch bestenfalls ein Notnagel. Besser ist es, zu wissen welche Prozesse auf dem Telefon laufen müssen und die restlichen zu deaktivieren. Ein übler Nachteil diser Methode ist es, dass das Telefon nach dem Aktivieren des Screens nicht sofort schnell reagiert. Besonders wenn man auf ein schnelles Interface und auf die sofortige Annahme von eingehenden Gesprächen wert legt, ist eine zu niedrige CPU-Taktung im Standy ein No-Go.

3. Laufende Programme und Dienste

Eindeutig das Hauptproblem für eine schlechte Laufleistung sind im Hintergrund laufende Dienste und Apps. Leider hat die Offenheit von Android das System in eine ähnliche Lage gebracht wie damals Windows XP. Applikationen dürfen sich nach Belieben selbst starten zu den unterschiedlichsten Gelegenheiten. Dies kann durch "nicht root" Benutzer nicht konfiguriert werden. Die einzige Möglichkeit die Apps daran zu hindern ist, sie zu deinstallieren.

Oft wird versucht dem Problem mit "Taskkillern" Herr zu werden. Diese beenden alle oder ausgewählte laufende Apps. Da Apps und Dienste jedoch selbst neu starten können, helfen "Taskkiller" nicht. Im Gegenteil. Durch den CPU-intensiven Neustart nach dem Beenden durch den Taskkiller saugen sie noch einmal zusätzlich am Akku und verschlimmern das Problem.

Dazu kommt das Problem von laufenden Systemdiensten. Besonders bei gebrandeten Herstellertelefonen werden häufig zusätzlich zum offiziellen Android aus dem AOSP Dienste installiert. Zum Beispiel für den Musikshop des Herstellers, Herstellerdienste für Social Networks und viele weitre Anpassungen, die man unter Umständen gar nicht braucht, die sich aber ungeniert am Akku bedienen.

4. Unnötige Apps entfernen

Da man meistens gar nicht weiss, welche Dinge so im Hintergrund laufen, sollte man dies zuerst untersuchen. Ich habe das mit der App "System Panel" getan. Sie bietet einen Historymodus, der konstant protokolliert, welche App wie viel CPU-Leistung benötigt. Hier sollte man nach 2-3 Tagen aussagekräftige Ergebnisse finden. Auf meinem bereits optimierten Telefon sieht es so aus: Nun ist man in Besitz einer Liste von allen Apps und Services, die in den letzten Tagen Strom verbraucht haben. Vielleicht findet man hier bereits normale Apps, die man gar nicht benötigt. Diese kann man jetzt mit Android-Bordmitteln deinstallieren.

5. Unnötige Dienste entfernen

Schwieriger wird es mit den Systemdiensten. diese sind über das normale Deinstallationsinterface nicht erreichbar und es kann zu Problemen kommen, wenn man die falschen Dienste entfernt. Zusätzlich sind manche Dienste auch noch kryptisch benannt, so dass man nicht sicher sein kann, wofür ein Dienst überhaupt zuständig ist. Hier muß man leider selbst recherchieren. Ein guter Anlaufpunkt ist das XDA-Forum. Hier findet sich zu fast jedem Handymodell ein Thread, der die Dienste näher beschreibt und nach Nutzererfahrungen mitteilt, welche gefahrlos deaktiviert werden können.

Hat man die überflüssigen Dienste (es sind lediglich einzelne Dateien im Dateisystem des Smartphones) mit einem Dateisystem-Filemanager wie zum Beispiel Root Explorer entfernt, hat man schon eine Menge für den Akku getan.

6. Autostart von Apps verhindern

Nun hat man zwar die Anzahl der Installierten Apps und Prozesse reduzuiert, aber sie können sich nach wie vor selbst starten. Man sollte also die Autostarts für alle Apps die im Protokoll aufgetaucht sind, die aber nicht ständig laufen müssen, deaktivieren. Das geht (leider recht unkomfortabel) mit dem "Gemini App Manager"

Jede App kann sich bei Android an Trigger hängen um einen Autostart auszulösen. Zum Beispiel "starte App, wenn WLAN eingeschaltet wird". Leider müssen alle diese Trigger von Hand per App deaktiviert werden. Das kann bei vielen Apps einige Zeit in Anspruch nehmen. Danach starten die Apps jedoch nur noch, wenn man sie selbst aufruft.

7. Besseres Taskkillen mit Autokiller

Android verwaltet die laufenden und zu killenden Apps selbst. Für diesen Zweck sind im System Grenzwerte festgelegt. (Wenn nicht genügend freier Speicher frei ist, kille nicht benötigte Apps). Der Android "Autokiller" funktioniert sehr gut und tötet intelligent Apps, die schon lange nicht mehr benötigt wurden. Allerdings sind die Standardwerte meistens sehr großzügig eingestellt. Es wird kauf freier Speicher vorgehalten. Das System ist langsam in der Benutzung, da erst aufgeräumt wird, wenn der Nutzer aktiv Speicher benötigt (zum Beispiel beim starten einer App). Dieses Caching Verhalten kann mit dem Tool Autokiller angepasst werden. Es gilt Einstellungen zu finden, die das System schnell machen, aber trotzdem die benötigten Apps leben lassen. Hier spart man Akku und gewinnt gleichzeitig Geschwindigkeit.

8. Aktivierte Hardware

Hier fallen besonders WLAN, GPS und Bluetooth ins Gewicht. Man sollte diese Dienste entweder mit Disziplin selbst deaktivieren, wenn sie nicht benötigt werden oder besser ihre Einstellungen automatisieren. Dazu mehr am Ende dieses Artikels.

9. Genutzte Mobilfunktechnik

Normalerweise befinden sich Smartphones im UMTS-Modus, wenn er verfügbar ist, da dieser schnelleres Internet ermöglicht. Allerdings verbraucht er auch mehr Akku, als der alte GSM-Modus. Die Modi dauernd per Hand zu switchen ist möglich, aber nervig. Auch hier ist eine Automatisierung die bessere Wahl. GSM im Standby erhöht die Akkulaufzeit enorm.

10. Datenverkehr

Viele Smartphones sind ständig online. Jeder Datenverkehr verbraucht Akku. Falls man das Internet nur benötigt, wenn man das Smartphone aktiv benutzt, kann man manuell oder automatisiert das Internet ausschalten. Möchte oder muß man immer online sein, kann man zumindest mit einer Firewall wie Droidwall einzelnen Apps verbieten online zu gehen. Viele gratis Spiele funken den ganzen Tag nach Hause und sollten schon aus Datenschutzgründen daran gehindert werden.

Zusätzlich kann man das Nachladen von Werbung mit einem Adblocker wie Adfree unterbinden.

11. Bildschirmhelligkeit

Der Bildschirm ist der größte Verbraucher, wenn das Gerät aktiv genutzt wird. Hier sollte man mit der Helligkeitseinstellung experimientieren und einen Wert finden, mit dem man dauerhaft leben kann. Ich habe meine Helligkeit auf ca 50% des Maximums heruntergeregelt und hatte nach Gewöhnung keinen Komfortverlust.

12. Vibrationen

Vibrationen sind einzeln nicht tragisch, aber können in Summe auch am Akku nagen. Generell sollte man zu viele Benachrichtungen mit Vibration vermeiden.

13. Automatisierung

Nun ist es an der Zeit das Smartphone ein wenig smarter zu machen. Dienste sollten sich von selbst abschalten, wenn sie nicht mehr benötigt werden. Falls man WIFI, GPS, Bluetooth, etc. nicht manuell dauernd an- und ausschalten möchte empfiehlt sich eine Automatisierungsapp.

Sehr gut geeignet ist hier Llama. Hier kann man selbst Regeln vergeben. Unten im Bild sieht man meine Regel für einen Bildschirm, der gerade ausgeschaltet wurde. Man kann sehr individuell die Stromfresser nach eigenem Gusto in die Schranken weisen. In Verbindung mit Secure Settings wird Llama noch mächtiger. Secure Settings kann manche Einstellungen regeln, auf die LLama nicht zugreifen kann.

 

 

Ergebnis

Mein SONY Experia Mini Pro sk17i (mango)  schafft inzwischen statt knapp einem Tag eine Laufzeit von 2.5 bis 3 Tagen.

(Kamarush Kernel, MiniCMSandwich Lite AOSP ROM, Android 4.0, Sony Ericsson EP500 Akku CBA-0002027 1160mAh)