Tuesday, 31 May 2011
Update: DroidWall out, AFWall+ in. Unlike DroidWall, AFWall+ doesn't leak on boot.
DroidWall is an Android firewall that usually does its job. But not always.
When you boot your phone, there is a brief period in which blocked apps can go online before DroidWall wakes up and starts blocking them. My network log shows that some apps indeed manage to go online even though I blocked them in DroidWall. This may cause unwanted updates or worse.
My Windows firewall (Comodo) makes sure that no data can go in or out before the firewall itself is up and running. DroidWall should do the same. A firewall should not leak. Never.
Does anyone know a way to force DroidWall to start blocking unwanted traffic when I boot my phone without giving apps a chance to sneak traffic through in the seconds between booting my phone and DroidWall getting out of bed? Of course there is a workaround: rename your access points with an app like ApnDroid before you shut down your phone, but then you have to switch your data connection back on by hand after your phone has finished booting. If your phone crashes you don't get a chance for that before you reboot, in which case the only way to close the data gap is to take your SIM card out and stay out of WiFi range.
Would there be a better method? A method that simply denies apps permission to switch your internet connection on behind your back? Or a way to force Android to start DroidWall before any other apps are allowed to run? Please leave a comment or hit the email link on the bottom of this page.
• DroidWall (Google code)
• DroidWall (Android Market)
Update: DroidWall out, AFWall+ in. Unlike DroidWall, AFWall+ doesn't leak on boot.
Thursday, 26 May 2011
An old Android problem is that it doesn't give you any control over what apps are allowed to do, and what not. You can't grant an app some permissions, but deny others. When you accept the list of permissions upon installing an app you're writing a blank check.
You can wrestle a bit of control back by tuning internet access control with DroidWall, and block access to advertising banner farms with AdFree. But what about other permissions, such as reading your address book or your messages?
Denying access to contacts and messages is essential for apps that break if you don't give them internet access. For example, a music streaming app obviously needs to go online, but that doesn't mean you want it to read your emails or snoop in your contacts list. You probably don't want to share your location with apps and advertisers either.
Privacy Settings Manager promised to fix that, but didn't deliver yet. Permissions Denied works, but only on some phones. And now there is a new permissions manager: LBE Privacy Guard.
LBE Privacy Guard runs in the background, and pops up an alert whenever an app tries to do something that may violate your privacy or cost you money. Permissions that you can control:
- sending SMSs;
- making phone calls;
- reading your SMSs;
- reading your contacts;
- reading your call logs;
- getting your location (by GPS or from networks);
- identify your phone by IMEI, IMSI, phone number, or SIM card ID;
- internet access.
You can grant or deny permissions, and for most permission requests it's up to you whether your answer is remembered or whether you're asked again next time. But there's no prompt for internet access or phone identification, only an allow/deny switch in the settings screen.
The internet permission switch in LBE Privacy Guard is an all or nothing setting. If you want to allow access by WiFi but not by mobile data (or vice versa) you'll need DroidWall.
LBE Privacy Guard will only let you allow or deny permissions. It won't let you feed spoofed contacts or a fake location to an app, which is what Privacy Settings Manager is supposed to do when it's ready. LBE Privacy Guard should include a spoofing feature, because some apps break if they don't get the permissions they want, even though you may have very good reasons not to give them what they ask for.
When LBE Privacy Guard stops or starts (which it sometimes does when you change app permissions) it shuts down all sorts of background processes. This may stop your widgets from auto-updating: my clock and battery widget froze after an LBE Privacy Guard restart. My Quick Settings icon and SetVSel indicator also disappeared from the notification bar, and GO Launcher also shut down together with LBE. Only my launcher restarted by itself, I had to restart everything else myself. This is a bug that definitely needs to get fixed.
Like all privacy and internet control apps, LBE Privacy Guard requires root access. It wants internet permission too, but you can force it to stay offline with DroidWall.
• LBE Privacy Guard (Android Market)
• LBE Privacy Guard (xda developers)
Saturday, 14 May 2011
There are plenty of widgets to toggle GPS on and off with a single tap. But what about the other location service? Getting your location from cell towers and WiFi networks also eats up your battery, and it lets Google track all your movements.
I toggle GPS with Dazzle. Of course Powerbar and Widgetsoid also work, and there are many more widgets to control GPS.
But managing network location still requires a trip to the settings menu. There's no widget for one click network location toggling. Sure, Google's warning popup (we'll track you even if you're not running location aware apps) may get in the way of a one click solution, but I'm sure that can be automated with a bit of code.
Any coders out there willing to give it a shot?
Thursday, 12 May 2011
I've downloaded and installed dozens of apps from the Android Market and elsewhere. You'd think that by doing so I would have added lots of functions and bells and whistles to my phone, but...
...swiping through my app drawer it dawned on me that most of my downloaded apps don't really add anything new.
Instead, they repair flaws in Android and the stock apps that came with it.
Obviously apps like Z4Root and Superuser are in this category. They don't add anything to Android but merely open up something that was in there to begin with. A simple "switch on root access" option in the settings menu would have done the job. Just add a bit of legalese along the lines of "if something breaks you're on your own" to scare off those who don't know what they're doing.
And then I have:
Adobe Reader, Jota Text Editor, Olive Office.
I wouldn't need those if the version of QuickOffice that Motorola hammered into my phone could make plain text files in addition to DOCs, if it could read PDF files like any modern office suite should, and if it wouldn't try to sell me the same editing capabilities that Olive gives me for free.
AndroZip, Crypto, ES File Explorer & ES Bookmark Manager, Root Explorer.
The stock file manager that came with my phone takes ages to launch, thinks that ZIP is the only compression format, doesn't understand why some files on pocketable and stealable devices shouldn't be open to everybody, and it wrongly believes that all paying customers are too dumb to trust with access to system files. That's why I need five apps to do what the stock app should have done.
Update: now that ES File Explorer can edit files on internal memory I don't need Root Explorer anymore.
Alarms Solo, ClockSync, Timers4Me, Ultimate Stopwatch.
The stock alarm clock is unreliable. Especially when my phone is charging, because then the alarm clock stops making noise after a few seconds for no apparent reason. Miss the alarm once and it won't give you a second chance. The automatic network time sync option in Android never worked for me either. I wouldn't need Timers4Me if the stock Alarm & Timer app would come with an option to save presets. And since the stock clock has a countdown timer, how hard can it be to teach it how to count up?
Calendar Snooze, Jorte, Smooth Calendar,
Four apps to patch the shortcomings of Google's own calendar app and its widget. The stock app plays calendar alarms only once so they're easily missed. I need Calendar Snooze to make sure calendar alarms keep ringing until I stop 'em myself. The stock calendar widget was designed by someone who thought: "how can I waste as much screen space as possible by filling it with as little useful information as possible." The only reason I had Jorte installed is that it lets me cram more useful info into a tiny 2x1 widget than any other app (The Smooth Calendar widget is almost as good as Jorte). Most calendar apps (including Jorte and the stock calendar) won't let you set custom reminder times. I need
Go Launcher EX, Home Switcher.
There are many alternative launchers out there, and for a good reason. The stock launcher won't let you do basic things like resize widgets, change the icon grid size on your home screens, or make folders in the app drawer. Did the makers of the default app drawer really believe a scrolling screen with a hundred icons is useful for anything?
For some reason the stock contacts app won't let me select multiple contacts, so if I want to delete a bunch of people without getting blue fingers from excess tapping I need this third party workaround.
CSipSimple, Nimbuzz, imo.
Gingerbread comes with a native SIP stack. Unfortunately it's not available for those stuck on previous versions. And why does the stock chat app only work with a single instant messaging network? You don't use separate web browsers for .com, .net, and .org either, do you?
Google is the world champion of data analysis, so their call log should be able to tell you how many minutes and messages you've burned today, last week, this month, or since your last phone bill. All the info is there, but your phone won't tell you unless you force it out.
GPS Status, Location Cache, Locus & Locus add-on Map Tweak, Navigon.
The location settings screen won't let you do much more than switch GPS and network location on and off. It won't even show what info it collects behind your back to send to Google. Speaking of Google, their maps are excellent, but useless if you travel abroad and pay a fortune for international data roaming. Sure, Google Maps can cache routes to some extent, but that just doesn't cut it. Until someone ports Nokia's Ovi Maps to Android I'm stuck with apps like Navigon for true offline navigation and patched versions of Locus for a quick offline peek at the map. The only thing in favor of Google Maps for Android is that those poor iPhone victims get even less than we do.
My phone came with a native email app. Correction: it came with two native email apps. One for all mail, and another one for Gmail. Why Gmail deserves its own stand-alone app is beyond me, but I'm sure the bean counters at Google HQ have a good reason. Either way, both stock apps are no match for K-9.
Just because an app asks me for permission to go online, read my address book, see my location, and look into my boxers doesn't mean I'm gonna let it. The stock app manager may let me view permissions, but it won't let me edit them. That's where
Player Pro, QueueTube, RockPlayer.
The music app that came with my phone was filled to the brim with bloatware, but it wouldn't let me sort music by the genre tag or folder. YouTube refuses to play when sent to the background: if you want to listen to a music video you're forced to watch it. All of it. And why the stock video player chokes on so many movie formats and won't support additional codecs...
My phone came with a calculator out of the box. It even came with an "advanced" panel. Unfortunately it wasn't even remotely close to being advanced.
Skyfire, Dolphin Mini & HD.
There are many reasons why you wouldn't want to use a proxy-based browser like Skyfire. Especially when it makes even the smallest site eat up a truckload of data. But if your phone manufacturer didn't bother to update your phone's software to Froyo or beyond you'll need to jump through hoops to get a little bit of Flash on your phone. If I wanted a Flashless phone I could have shopped at Apple. The stock browser hides my tabs in the menu, and won't reflow text to fit my screen. That's why I had to go out fishing and catch me a Dolphin.
What's the point of a Wi-Fi settings screen if it's short on Wi-Fi settings?
ApnDroid, QuickSettings, WidgetSoid.
Sometimes you just have to be sure that when you switch off mobile data, it stays switched off. International roaming charges, anyone? You could delete or rename your access points by hand to keep your phone bill tamed, but that's just so 2009!
You go through all the settings screens, disable every auto-sync and auto-update feature that comes with an off switch, tell each and every app that it can only go online when spoken too, but all to no avail. Whenever they sniff an open connection all sorts of apps and services will snoop around online without any grasp of the meaning of the word "no." Some apps are very hard of hearing. They go online whenever they feel like it without any need to do so. Even the stock apps are guilty, and so is the operating system itself! That's why you need a firewall that works in both directions. Sometimes you just need to teach your apps that no means no.
MyBackup Root or MyBackup Pro (and Titanium).
Google's core business is data. So shouldn't Android come with a stock app to reliably and completely back up and restore your data? All of it? Whenever I sync my contacts back and forth to Gmail some info gets lost or garbled up. Especially names are handled badly: two first names sync back as a first and a middle name. And just see what happens when you sync "Al's Pizza (open 'till midnight)" back to your phone. It won't come back under A. MyBackup restores my contact details exactly how I entered them. It preserves the time stamps on my SMSs too, which you'll learn to appreciate if you send and receive messages from every time zone under the sun. Sometimes updating an app breaks it, but Android doesn't have an option to roll back to the previous version unless you root your phone. Once rooted, MyBackup can backup and restore your apps and settings. Titanium does it even better. But wouldn't it be nice if the Android Market would come with its own rollback feature?
Yes, my phone came with an app called 3G mobile hotspot. No, it didn't work. Wireless Tether requires root access, but it does what the default app does not.
I could have made this list much longer. A stock gallery app that won't let you reverse the sort order of your pictures, a camera that needs either root or a replacement app to get rid of the shutter sound, a stock SMS app that gives you bogus delivery reports and doesn't export or backup or do line breaks... there are plenty of reasons to download apps that don't add anything but only fix things.
Mind you, it wouldn't be fair to put all the blame on Google. Just think of the bloatware that companies like Motorola install on their phones and the things you have to do to keep junk like MotoBlur out of the way. And Symbian, iOS, WinMo etcetera are just as guilty as Android.
Most of the apps in this list are free. Some cost a euro or two. Navigon is expensive, especially in Europe.
These apps need root access: Root Explorer (duh!), ClockSync (yes really), Location Cache, Permissions Denied, DroidWall, MyBackup, and Titanium.
OK, one more for the road. I'm looking for an app that can backup and restore my widgets. Any suggestions? Then click the email link at the bottom of this page please.
Sunday, 8 May 2011
You are not getting the maximum power and battery life out of your phone.
Your phone was taught to underachieve
At factory settings your Motorola Defy is underclocked and overvolted, which means that it runs slower than it should and drinks too much battery juice (even so it performs well and has a good battery life compared to other Android phones). Some people believe that the Defy was deliberately crippled for commercial reasons: Motorola didn't want to jeopardise sales of more expensive models by making the Defy too attractive. Nobody knows if this rumor is true or false. Either way, there is a tradeoff between performance and battery life, and Motorola erred on the side of caution. A phone that crashes because it runs too fast at too low a voltage causes a lot of expensive work for customer service. A phone that drains the battery a bit faster while running a bit slower won't send its users back to the stores to demand a fix, as long as it performs within the advertised specifications.
And the specs are too conservative. Your phone can run longer and faster.
To understand why, let's dig into the numbers.
Speed, voltage, and battery trade-offs
Motorola set the three CPU speed/voltage combinations for the Defy at:
1) 300 MHz at VSel1 = 33;
2) 600 MHz at VSel2 = 48;
3) 800 MHz at VSel3 = 58;
at a threshold of 86%.
The threshold determines when the processor steps up to a higher speed. By default, it switches to high speed if it runs at 86% capacity, and slows to a lower gear when the usage drops.
Higher speed (more MHz) requires a higher voltage, which is why the VSel (Voltage Select) goes up. VSel is related to voltage according to:
V = 0.0125*VSel + 0.6.
So at the lowest default VSel (33), your phone runs at 1.0125 V. At the highest default VSel (58) it runs at 1.325 V.
The power consumed by the processor increases in a linear fashion with the clock speed (twice the speed is twice the power), but quadratically with the voltage: twice the volts means four times more power.
The display and the radios eat up most of your battery. Turning down the brightness and switching off GPS, Wi-Fi and mobile data when not in use improves battery life more than undervolting your processor.
However, you can squeeze a few more hours out of a battery charge if you undervolt your CPU, and overclocking may make some apps run a little smoother. Just don't expect miracles, and be prepared for errors and crashes when you push the wrong buttons.
Room for improvement
The main battery saver is a low VSel1 (the lowest voltage at the lowest speed), because your phone runs at this speed most of the time. Underclocking VSel1 is not a good idea, because below the default 300 MHz it takes noticably longer before your phone responds to an incoming call in standby mode. Reducing VSel1 too much makes your phone hang or reboot when it's idle, but you can reduce VSel1 within reason to increase standby time. If you cut VSel1 from 33 to 20 the processor uses 40% less power most of the time, which can make the difference between your phone lasting a full day or blacking out before you get a chance to plug it in. (There are more ways to stretch your battery without dumbing down your smartphone.)
Lowering the intermediate voltage at medium speed (600 MHz by default) saves a bit of juice when you're playing with your phone a lot, because VSel2 is the typical setting when you're using your phone. If you use your phone as an mp3 player on a long trip you may notice the difference.
Your phone rarely runs at top speed. It spikes at VSel3 occassionally, but even with QueueTube streaming, Wi-Fi Ruler scanning, GPS Status looking for satellites, and Dolphin HD loading pages in the background my processor spent most of the time at 600 MHz instead of the default maximum (800 MHz) or my custom 1 GHz.
Overclocking may make a difference if you're playing resource-hungry games or watch badly encoded videos. Just don't overdo it, because the voltage required to run at more than 1 GHz makes your phone produce more heat, reduces battery life, and may even shorten the life of your hardware. Try to keep the maximum VSel below or at the default maximum, and don't let the temperature increase beyond 35°C for too long unless you live in a very hot place. High temperatures won't kill your phone at once, but they will kill your processor and battery slowly. Batteries may be cheap, but a dead processor will turn out very expensive. Especially when the manufacturer finds out you've messed with the settings and voids your warranty.
So what settings should you use?
Workout schedule for your phone
There is no one-size-fits-all answer. Processor performance varies, even if they're from the same batch. Your optimum settings depend on your phone, whether it runs Eclair or Froyo, how you use it, where you use it. A phone in a hot jeans pocket doesn't dissipate heat as fast as a phone in a cool handbag, and shooting video is more demanding than listening to podcasts. You'll have to find the best settings for your phone by trial and error.
Start by lowering VSel1 in small steps and check if your phone runs stable for a while under real world conditions. The stability test that's built in SetVsel is a rough indication, but also test stability by running a couple of streaming video apps over 3G together with other power-hungry apps, because seemless switching between speeds is not the same as an artificial stress test at constant voltage. If your phone starts rebooting by itself, increase the VSel by a safe margin.
There's no point trying to push the numbers to the max, because the power used by your CPU is just a small part of the big picture. Tweak the next VSel after you have the first one tuned. Don't change all at once, because then you don't know which one is wrong if your phone becomes unstable. Tweak your VSels one at a time.
Remember: undervolting won't damage your phone. Pushing the voltage too high may fry your CPU and kill your battery. I wouldn't push my Defy beyond 1000 MHz unless I can make it run at a very low voltage.
Judging from reported values at which Motorola Defy (most of them on Eclair, some on Froyo) phones ran without issues (see below for details), the safe ranges seem to be:
- 300 MHz, VSel1 24-33
(some people report stable systems as low as VSel1 14);
- 600 MHz, VSel2 31-48;
(some people report stable systems as low as VSel2 27);
- 800 MHz, VSel3 41-58.
(some people report stable systems as low as VSel3 39);
- 1000 MHz, VSel3 45-74.
(above VSel3 58 your phone may get really warm).
I started with 300/24, 600/34, 1000/52. When that ran OK for a couple of days I knocked the voltage down in bits and pieces. I now keep my phone running at 300/16, 600/28, 1000/52, with the threshold at the original 86%. My phone runs smoothly, passes the stability test (check the bottom of the SetVsel screen) with flying colors, and the battery lasts noticably longer than with the default settings.
Of course that doesn't necessarily mean these settings will work for you, because every CPU is different. The only way to find out is by trial and error. Push your VSels down in small steps, one at a time, until your phone fails the stability test or starts rebooting by itself. Then go back to the last "safe" setting and continue with the next VSel.
If you like to take risks and don't mind your phone getting hot:
- 1100 MHz, VSel3 55-66;
- 1200 MHz, VSel3 60-75.
SetVsel has two options to let your phone go on a diet when your battery runs low. The first option is to limit your phone to VSel2 when the battery level drops below a set percentage (e.g.30%), the other method is setting the threshold to 99% when the battery runs low. New versions of SetVsel may come with new tricks to squeeze some extra time out of dry batteries.
SetVsel can show your processor status in the notification bar if you check the speed icon box. Don't panic if the reported speed is different from what you entered into the program. SetVsel polls the processor speed more often than the notification refreshes, so the numbers indicate average speeds.
The "apply at boot" option is best left alone. If your phone runs well you won't reboot it very often anyway, and if it crashes a lot you'll probably need to try different voltages and reduce the maximum speed.
Go get it
• SetVsel (Android Market)
• SetVsel (xda forum)
SetVsel was designed for the Motorola Defy, but it also works on the Droid X and the Milestone. It may work on other phones, but your best bet is to search the market for "overclock" or "undervolt" and pick an app tailored for your device. Read the comments in the market to check if it works on your phone model. Checking out forums like xda before you start messing with the voltage is a good idea too.
Other apps to overclock and undervolt:
• Milestone Overclock (Android Market) (not only for the Milestone)
• Milestone Overclock (xda forum)
• Milestone Overclock (Google Code)
• SetCPU (xda forum, free version)
Note: all overclock/undervolt apps require that your phone is rooted.
The safe ranges were estimated by searching Google for "Motorola Defy undervolt" and taking the speed-VSel combinations reported as being stable or unstable. The full list of values used:
reported as stable:
300/15 ? ?, 300/15 500/34 600/38, 300/14 550/26 800/38, 300/16 550/27 800/39, 300/16 600/28 800/39, 300/18 600/33 800/43, 300/20 600/32 800/50, 300/26 600/32 800/44, 300/26 600/33 800/39, 300/24 600/34 900/44, 300/28 600/38 900/46, 300/28 600/38 900/48, 300/18 600/30 1000/52, 300/18 600/38 1000/52 86%, 300/20 600/28 1000/54, 300/20 600/30 1000/48, 300/20 600/30 1000/52 80%, 300/20 600/34 1000/52, 300/22 600/32 1000/52, 300/22 600/32 1000/52, 300/24 600/34 1000/52, 300/24 600/36 1000/56 80%, 300/26 600/32 1000/56, 300/26 600/34 1000/54, 300/30 600/48 1000/58, 300/30 600/48 1000/58, 300/33 600/48 1000/52 92%, 300/33 600/48 1000/58, 300/16 600/27 1100/58, 300/19 600/29 1100/54, 300/26 600/34 1100/58 60%, 300/28 600/44 1100/58, 300/28 600/44 1100/62, 300/30 600/40 1100/58, 300/30 600/44 1100/60, 300/15 600/25 1200/60, 300/20 600/32 1200/63, 300/24 600/34 1200/62 80%, 300/30 666/46 1000/58, 300/17 700/35 1100/57, 300/28 700/52 1100/62, 300/30 700/46 1100/58, 300/16 700/33 1200/60 90%, 300/16 700/34 1200/63, 300/30 700/48 1200/68 86%, 300/30 700/48 1200/68 92%, 300/28 800/46 1200/60, 300/28 800/46 1200/60 76%, 300/25 900/56 1100/66, ? 900/40 ?, ? ? 900/46, ? ? 1000/45, ? ? 1000/50, ? ? 1000/56, ? ? 1000/56, ? ? 1000/56, ? ? 1000/58, ? ? 1000/60, ? ? 1000/74, ? ? 1100/55, ? ? 1100/56, ? ? 1100/58 70%, ? ? 1100/58, ? ? 1100/59, ? ? 1100/64, ? ? 1200/64, ? ? 1200/65, ? ? 1200/66, ? ? 1200/68, 300/33 600/48 800/58 1200/68
reported as unstable:
300/13 ? ?, 300/20 ? ?, 300/20 600/30 800/40, ? ? 900/46, ? ? 1000/56, ? ? 1000/60, ? ? 1100/53, ? ? 1100/54, 300/26 600/40 1100/58, ? ? 1200/60, ? ? 1200/66, ? ? 1350/76
Saturday, 7 May 2011
edit: Google Earth for Eclair is back in the market (13 July 2011)
Google Earth is a great app. Unfortunately the update to version 2.01 broke Google Earth on many phones, resulting in many complaints in the Android Market.
Google found an easy way to fix the issue: the world according to Google is no longer available on the market if you run Android 2.1 (Eclair). You'll need at least 2.2 (Froyo) to wander the earth.
If you still run Eclair and Earth is still working for you, then do NOT try to update the app. If you already updated and you can't get back to earth, try to restore the app from a backup (you made a backup, didn't you?), or download an old copy from one of the many sites and forums with unofficial apps. Google promised to fix the Eclair version, but they didn't deliver yet.
• Google Earth (official) on the Android Market
• Google Earth (v1.2.2) on Google
edit: Google Earth for Eclair is back in the market (13 July 2011)