Daniels Blog
26Mrz/170

Android – Increase headphones volume in Android 7 Nougat / Lineage OS

Time for bleeding ears:

- Mount /etc read/writeable with your favourite file explorer (Root Explorer can do it for example)
- Locate /etc/mixer_paths.xml
- Open it with your favourite text editor.
- Play with the values for "RX1 Digital Volume" and "RX2 Digital Volume" in the "Headphones" path
- Save
- Reboot
- Check the results

Be careful, it can get very loud and noisy if you push it too far. I guess it might even damage your headphones/ears, so start your tests with a low volume. I set mine to 93 on my bullhead device (Nexus 5x) and it's too loud for some of my MP3 at max volume, still great for most of my others.

veröffentlicht unter: Android keine Kommentare
28Nov/162

Shell commands for hardware management in Android 6 Marshmallow / Cyanogenmod 13

android-shellIf you are using an automation app like Tasker, Llama or Automate, you can toggle / turn on / turn off WIFI, Data, GPS etc. with shell commands. I collected these little sniplets for my own setup. They work on my device (Nexus 5x with Cyanogenmod 13). They should work on other Android 6 devices as well.

Run all shell commands as root.

WIFI

svc wifi enable
svc wifi disable

DATA

svc data enable
svc data disable

GPS

# turn GPS on
settings put secure location_providers_allowed +gps 
# turn GPS off
settings put secure location_providers_allowed -gps 

Flightmode

# Flightmode on
settings put global airplane_mode_on 1
am broadcast -a android.intent.action.AIRPLANE_MODE

# Flightmode off
settings put global airplane_mode_on 0
am broadcast -a android.intent.action.AIRPLANE_MODE

Turn off screen without locking device (emulate power button keypress)

input keyevent 26

Toggle Network mode (2G/3G/4G)
I have been searching for a long time, but there seems to be no direct way to do this.
The best solution I have found requires xposed framework and gravitybox installed.

I found the available network types here:
http://android.stackexchange.com/questions/44347/simple-way-to-toggle-between-2g-and-3g-connection

Identify the right settings for your device:

# Disable your automation app, set networking mode with the preferences in your devices GUI.
# Then run

settings get global preferred_network_mode 

# The currently set network mode number will be shown in shell

Just send the following intent to toggle network mode:

Send Intent [
Action: gravitybox.intent.action.CHANGE_NETWORK_TYPE
Cat: None
Mime Type:
Data:
Extra: networkType:1
Extra:
Package:
Class:
Target: Broadcast Receiver]

networkType enum values are: 
0: WCDMA Preferred 
1: GSM only <-- This would be "2G" on GSM networks
2: WCDMA only <--WCDMA is "3G" on GSM networks. You may know it as HSPA
3: GSM auto (PRL)
4: CDMA auto (PRL)
5: CDMA only <-- This would be "2G" on CDMA networks
6: EvDo only <-- EvDo is "3G" on CDMA networks
7: GSM/CDMA auto (PRL)
8: LTE/CDMA auto (PRL)
9: LTE/GSM auto (PRL)
10: LTE/GSM/CDMA auto (PRL)
11: LTE only
12: "unknown"

Disable captive portal detection
This needs to be set at boottime. It doesn't survive a reboot.

settings put global captive_portal_detection_enabled 0
settings put global captive_portal_server 127.0.0.1

Force a DNS of your choice
Google removed the option to change the DNS for mobile data. (ugly, ugly, ugly)
You can force your device to use your fav DNS with iptables for mobile data:

/system/bin/iptables -t nat -A OUTPUT ! -o wlan0 -p udp --dport 53 -j DNAT --to-destination 213.73.91.35:53

In case you have found a better way to switch network mode, I'd really appreciate your comment 🙂

17Nov/160

Disabling Captive Portal in Android Cyanogenmod 13+ Marshmallow

If you have seen that stupid ! beside your WIFI or MobileData icons in Android, you have discovered the "Captive Portal Detection" which has been added in KitKat or so. It's terribly bugged if you are using a firewall in Android plus if you don't, your device connects to Google every time you go online.

Since Marshmallow this behaviour can't be disabled permanently. Captive Portal Detection is being reenabled after every boot.
So use your favourite script runner app (Tasker can do it) to run these commands at boot time to disable the crap:

settings put global captive_portal_detection_enabled 0
settings put global captive_portal_server localhost
veröffentlicht unter: Android keine Kommentare
17Nov/160

Changing DNS for mobile data in Cyanogenmod 12+ and Android Kitkat Marshmallow

You need root for this.

In my (probably never ending) mission to remove Google from my Android device, I recently found out, that I missed a very important detail. When using mobile data, the phone gets its IP and DNS information from the cell provider. With recent android versions, the cell providers DNS is sometimes being ignored and Googles DNS server (8.8.8.8) is used instead. This allows Google to mine data on every DNS request done by many Android devices in the world. The DNS setting for mobile data can't be changed in the GUI. There are older shell commands which used to work in KitKat to change the mobile data DNS on Android but they are being silently ignored. If 8.8.8.8 is not set, your cell providers DNS is used which most probably also mines your resolved domains. If you are into privacy, it's always a good idea to use a trustworthy DNS for your connection. It's kinda creepy, that there is no uncomplicated way to change the mobile data DNS in Android.

But there is a hackish solution that works.
You need AFWall for it. As you reached this article I asume, that you are already using it. It's an iptables fireall implementation for Android that allows you to block internet access for certain apps and run custom iptable commands automatically.

- Open Afwall
- Menu
- Set custom script

You can set 2 custom scripts here. One runs after the firewall is being enabled, the other one runs after the firewall is being stopped.

# Enable script
# Route all outgoing traffic with a destination port of 53 (DNS) to another DNS server

IT=/system/bin/iptables
DNS=your.fav.dns.ip
$IT -t nat -A OUTPUT -p tcp --dport 53 -j DNAT --to-destination $DNS:53
$IT -t nat -A OUTPUT -p udp --dport 53 -j DNAT --to-destination $DNS:53
# Disable script
# Remove the 2 rules from the NAT table

IT=/system/bin/iptables
$IT -t nat -D OUTPUT 1
$IT -t nat -D OUTPUT 1

You can check your used DNS server(s) here: https://www.perfect-privacy.com/german/dns-leaktest/

A few more trustworthy DNS servers can be found here (scroll down): https://www.ccc.de/censorship/dns-howto/

Shame on you Google. I have to tinker with iptables to set such a basic thing as a DNS server?
Ugly. Ugly. Ugly.

UPDATE:
The Afwall method didn't work well on my device after some testing. Sometimes I was unable to use DNS at all. Running the iptables rule from any startup script during boot works fine though (Tasker can do it). I changed the script a bit to only affect mobile data DNS because changing it for Wifi as well (in the original script) broke other things in my LAN.

# Enable script
# Route all outgoing traffic going thru rmnet interfaces (androids mobile data interfaces) with a destination port of 53 (DNS) to another DNS server

IT=/system/bin/iptables
DNS=your.fav.dns.ip
$IT -t nat -A OUTPUT -i rmnet+ -p tcp --dport 53 -j DNAT --to-destination $DNS:53
$IT -t nat -A OUTPUT -i rmnet+ -p udp --dport 53 -j DNAT --to-destination $DNS:53
veröffentlicht unter: Android keine Kommentare
27Okt/160

Cleaning up Cyanogenmod 13 Nexus 5x (bullhead)

This is just the backup of my personal crap removal and tweak script for CM13

#!/system/bin/sh

echo "MOUNTING /system r/w"
mount -o rw,remount,rw /system

echo "KILLING CRAP from /system/app"

rm -rf /system/app/NfcNci
rm -rf /system/app/PrintSpooler
rm -rf /system/app/LockClock
rm -rf /system/app/RCSBootstraputil
rm -rf /system/app/RcsImsBootstraputil
rm -rf /system/app/Profiles

echo "KILLING CRAP from /system/priv-app"
rm -rf /system/priv-app/AudioFX
rm -rf /system/priv-app/CellBroadcastReceiver
rm -rf /system/priv-app/CMBugReport
rm -rf /system/priv-app/CNEService
rm -rf /system/priv-app/GCS
rm -rf /system/priv-app/HotwordEnrollment
rm -rf /system/priv-app/LifetimeService
rm -rf /system/priv-app/ManagedProvisioning
rm -rf /system/priv-app/ThemeChooser
rm -rf /system/priv-app/ThemesProvider
rm -rf /system/priv-app/CMBugReport
rm -rf /system/priv-app/OneTimeInitializer

echo "MUTING CAMERA ETC."
chmod ugo-rwx /system/media/audio/ui/camera_click.ogg
chmod ugo-rwx /system/media/audio/ui/camera_focus.ogg
chmod ugo-rwx /system/media/audio/ui/VideoRecord.ogg
chmod ugo-rwx /system/media/audio/ui/VideoStop.ogg
chmod ugo-rwx /system/media/audio/ui/Lock.ogg

echo "MOUNTING /system r/o"
mount -o ro,remount,ro /system

echo "FIXING Volume"
mount -o rw,remount,rw /
cp /sdcard/mixer_paths.xml /etc
mount -o ro,remount,ro /

echo "DONE"

veröffentlicht unter: Android keine Kommentare
21Mai/161

Increase headphones volume in CyanogenMod 13

Time for bleeding ears:

- Mount /etc read/writeable with your favourite file explorer (Root Explorer can do it for example)
- Locate /etc/mixer_paths.xml
- Open it with your favourite text editor.
- Play with the values for "RX1 Digital Volume" and "RX2 Digital Volume" in the "Headphones" path
- Save
- Reboot
- Check the results

Be careful, it can get very loud and noisy if you push it too far. I set mine to 94 on a serranoltex device (SAMSUNG S4 Mini INT) and it's too loud for some of my MP3 at max volume, still great for most of my others.

15Mrz/150

Increase Headphone Volume in Cyanogenmod 12

Being used to the extremely loud headphone volume of AIWA walkmen from the 1990s, my Android volume was always a bit too low for my ears.

I tried to play around with CMs included "DSP Manager" but it never worked as I expected and I disliked to need an additional app to increase volume on my device.

In Cyanogenmod headphone volumes are configured in /system/etc/snd_soc_msm/snd_soc_msm_2x
(Maybe this will work in every recent Android distribution, no idea though, I am on CM12 Lollipop)

Just edit this file and search for the stanzas called "Headphones" and "PROXY Rx Headphones"

Inside of those you will find "RX# Digital Volume" with a percentage value.

Mine were set to 69.4%. I rose them to 75% and rebooted. Now my ears bleed. Nice.

The settings will be lost after updates so I created a small script to run after updates which will replace the original file with my modified one.

#!/system/bin/sh
# The file on /sdcard is my modified backup
cp /sdcard/snd_soc_msm_2x /system/etc/snd_soc_msm/snd_soc_msm_2x
veröffentlicht unter: Android keine Kommentare
24Nov/140

Android Kernel und weitere Images unter Ubuntu flashen mit adb und fastboot

apt-get install android-tools-fastboot

# USB-Debugging im Handy aktivieren
# Handy per USB connecten

adb devices
# gerÀt sollte angezeigt werden
adb reboot-bootloader

# GerÀt rebootet in Fastboot Mode

fastboot devices
fastboot flash boot filename_of_boot.img
fastboot reboot


# Weitere Images flashen
fastboot flash bootloader bootloader.img
fastboot reload-bootloader

fastboot flash radio radio.img

fastboot flash recovery recovery.img

fastboot flash system system.img

fastboot flash vendor vendor.img

29Jun/142

Using Android without Google – The hard way

I have been trying to get rid of Google completely on my Android phone. As I have made some nice progress I'd like to share what I did and which problems I had to overcome:

OS I removed my stock version of Android and replaced it with Cyanogen Mod (http://www.cyanogenmod.org/) CM doesn't ship the Google Services, you have to install them manualy afterwards. I didn't do that, so most of Google was gone already. This produced a lot of problems, because Google Play isn't available plus the Maps Framework is used by many 3rd party apps.

Appstore The biggest showstopper is the missig appstore. I installed F-Droid (https://f-droid.org/) which is a nice appstore that provides open-source apps only. This provided me with some apps i use regualry (Twitter-client and some others) but is in no way a replacement for Google Play. Now I had to decide if I wanted to trust other 3rd party appstores or not. I decided to don't. Amazon has it's own "trustworthy" appstore, but apps are patched and crippled. didn't want to have that. Decided to download needed apps with another Android device. After that I grab them from /data/app on the other device with Root Explorer (https://play.google.com/store/apps/details?id=com.speedsoftware.rootexplorer&hl=de) and sync them to my real device with Owncloud. This ugly process basicly made me use less apps on my phone because it's such a hassle to get them on it. I got used to it after some time and reduced my app selection to a sane minimum.

Contacts, Mail and Calendar sync I setup an installation of Horde Groupware (http://www.horde.org) on my personal server. Horde features "Microsoft Active Sync" compatibility. On Android, I just had to add an Active Sync Account to sync all my stuff to my own server. Works perfectly.

Maps Framework Many apps that embed a Google Map somewhere use the "Google Maps Framework" which comes with Google Maps. A specific app I use often depends on the framework. The app won't start without the framework, even I don't need the embedded maps inside. Luckyly some guy from XDA wrote a script that simulates an installed Maps framework without it being there actually. (Couldn't find link, too long ago)

Maps Checked out many mapping applications based on OpenStreetMaps. MapFactor worked best for me (https://play.google.com/store/apps/details?id=com.mapfactor.navigator&hl=de). It's not as good as Google Maps but it works.

Browser Andorid browser that ships with Android has builtin Google-Search. I replaced it with Lightning (https://play.google.com/store/apps/details?id=acr.browser.barebones), a small and quick open souce browser which can be configured to use many different search engines. I set it to Startpage.

Music My PlayStore license for Poweramp didn't work on my devices without Google Licensing Services, provided by Play (a problem with many pay-apps, not all though). Luckily the dev offers a version, bound to an e-mail account. I re-bought the software.

That's basicly it. I'll sniff the traffic of my phone, if I find the time, to verfiy I really got rid of Google on my phone. (I bet i forgot something)

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)

26Apr/128

Android Kontakte und Kalender ohne Google syncen mit Horde 4

Ich wollte meine persönlichen Daten nie Google geben und habe deswegen unter Android bisher auf das Syncen von Kalender und Adressbuch verzichtet. Als Notlösung habe ich regelmĂ€ssige Backups mit My Backup Pro angefertigt. Schön war das allerdings nicht. Da ich inzwischen auch ein Android-Tablet besitze wurde syncen noch wichtiger. Zum GlĂŒck lĂ€sst sich das inzwischen komplett mit Open Source Software bewerkstelligen, falls die Android-GerĂ€te "Microsoft Active Sync" unterstĂŒtzen. Mit dieser Sync-Methode kann man seinen Androiden normalerweise an ein Exchange-Konto anbinden. Die kostenlose Groupware Horde bietet seit Version 4 allerdings auch einen kompatiblen ActiveSync-Server an. Damit steht der Android Synchronisation ĂŒber mehrere Devices mit dem eigenen Server nichts mehr im Wege.

Grundvoraussetung ist ein eigener Linux-Server mit Apache und MySQL.

ZunÀchst muss Horde 4 installiert werden:

# Die Paketierung von Horde 4 lĂ€uft ĂŒber PEAR
apt-get install pear

# PEAR auf den neuesten Stand bringen
pear upgrade pear

# Den Horde-Channel dem lokalen Pear bekannt machen
pear channel-discover pear.horde.org

# Horde Installationsverzeichnis konfigurieren
pear install horde/horde_role
pear run-scripts horde/horde_role

# Hier wird nach einem Installationsverzeichnis fĂŒr Horde 4 gefragt.
# In meinem Beispiel ist es /var/www/horde4

# Horde installieren
pear install -a -B horde/webmail

# Horde Konfiguration umbenennen, um Horde zu aktivieren
cd /var/www/horde4/config
cp ./conf.php.dist ./conf.php

# Dem Webserver Rechte auf alle Horde-Files geben
chown -R www-data /var/www/horde4

Datenbank fĂŒr Horde in MySQL anlegen:

Horde benötigt eine Datenbank in MySQL. In meinem Beispiel habe ich fĂŒr Horde mit PHPMyAdmin den Benutzer "horde4" und die Datenbank "horde4" angelegt.

Horde ĂŒber den Webbrowser konfigurieren:

Horde kann nun ĂŒber den Webbrowser konfiguriert werden. Dazu öffnet man im Browser http://www.meinserver.de/horde4 . Da noch nicht konfiguriert wurde, welche Authentifizierung Horde nutzt, wird man direkt als Administrator der Installation eingeloggt.

Datenbank konfigurieren:
(Administration -> Konfiguration -> Horde -> Database)

Hier die Daten zur angelegten MySQL Datenbank eintragen:

Horde Authentifizierung konfigurieren:

Horde benötigt ein Backend um den Benutzernamen und das Passwort zu ĂŒberprĂŒfen. Horde bietet dafĂŒr viele verschiedene Möglichkeiten an. Der Einfachheit halber kann man hier das Password-File benutzen (/etc/passwd). Der User muss dann nur im lokalen System angelegt werden:

adduser horde_user

(Administration -> Konfiguration -> Horde -> Authentication)

Datenbanktabellen fĂŒr Horde anlegen:

Horde konnte bisher die eigenen Datenbanktabellen in MySQL noch nicht anlegen, da wir ihm eben erst die MySQL-Benutzerdaten mitgeteilt haben. Um die Tabellen anzulegen besucht man die Hauptseite der Konfiguration und wÀhlt "Alle DB-Schemata aktualisieren", bis das Ganze so aussieht:

(Administration -> Konfiguration)

Ab sofort sollte man sich in Horde mit dem Benutzer "horde_user" und dem beim adduser-Kommando gewÀhlten Passwort einloggen können.

Apache konfigurieren

Damit Android an Horde syncen kann, muss noch ein Alias in die Apache-Konfiguration eingetragen werden:

#/etc/apache2/httpd.conf
Alias /Microsoft-Server-ActiveSync /var/www/horde4/rpc.php

Das ist notwendig, da Active-Sync Clients automatisiert die URL /Microsoft-Server-ActiveSync aufrufen, wenn sie mit ihrem Server connecten. Horde hĂ€ndelt die Synchronisation allerdings ĂŒber die Datei rpc.php

Danach muss Apache seine Konfiguration neu laden lassen:

/etc/init.d apache2 reload

Wenn alles geklappt hat, sollte man nun auf seinem Androiden Sync-Konten einrichten können:

Mit diesem Setup Synce ich erfolgreich zwischen Horde, einem Sony Ericsson Xperia Mini Pro und einem Samsung Galaxy Tab.

Fallstricke:

  • Ich hatte zunĂ€chst mit doppelten Kontakten und KalendereintrĂ€gen zu kĂ€mpfen. Am Besten exportiert man zunĂ€chst alle Kontakte und den Kalender aus dem Handy und importiert sie in Horde. Danach löscht man alle Daten auf dem Handy und lĂ€sst sie von Horde wieder in das angelegte Active-Sync-Konto auf dem handy schieben. Horde bietet viele verschiedene Möglichkeiten an Daten zu importieren. (Organisieren -> Kalender -> Import/Export) und (Organisieren -> Adressbuch -> Import/Export). Den Kalender bekommt man zum Beispiel aus Android gut mit der App "iCal Import/Export" heraus. Mein SONY bot fĂŒr den Export der Kontakte selbst die Möglichkeit an, diese in ein VCard-File zu exportieren. Aber auch hier gibt es sicher eine geeignete Lösung bei Google Play.
  • Die Horde Authentifizierung per /etc/passwd sollte wie oben beschrieben funktionieren. Ich habe sie allerdings nur der Einfachheit halber fĂŒr dieses Howto gewĂ€hlt und nicht getestet, da ich selbst Horde an meinem IMAP-Server authentifiziere.
  • Als ich angefangen habe die Syncerei zu testen, funktionierte es zuerst nur mit meinem Tablet und nicht mit dem Handy. Nach 1 Stunde frickeln war der Fehler gefunden: Android synct nicht, wenn der interne Speicher zu voll ist. Nachdem ich ein paar Apps auf die SD-Karte verschoben hatte, ging es sofort.