I've been using Palm PDAs since 98, and I liked PalmOS a lot. Still, after Palm gave up on it I've been thinking about replacing my phone+pda with something slightly more modern: not necessarily because my Centro wasn't sufficient, but because I looked for better networking capabilities. Some months ago I finally did switch to an Android phone. Which I like, too, with one major exception: the automatic assumption that you'll entrust all your personal info to Google and the lack of other options (at least in the basic load-out). I categorically refuse to do that, and am willing to devote pretty much any amount of effort to degoogle my infrastructure - without losing overly much in the way of essential services. This post describes how I got my Android phone pretty much google-free.
less is more
First, a lot of unnecessary software can go. At that time I also ensure that I have full control of my device.
Of course I start things in a clean state. BTW, don't run the setup tool, ever.
root the device
My (secondhand) HTC Desire came with Android 2.3.3 and lots of "HTC Sense" bloatware installed; without superuser rights you can't get rid of any of that (nor do you have any useful control over what your phone does). So the first, essential, step is to root your device and to unlock the boot loader (aka. S-off mode). revolutionary made that a totally painless and quick exercise, and (even more convenient) it worked fine on my Linux box.
get titanium backup
I don't tend to buy much software, but after some trial use I'm absolutely happy to support the guys writing Titanium Backup with the few dollars for a full licence. Titanium is in my opinion the most essential tool for slimming down your droid and keeping it safe and happy.
do a nandroid backup
At that point I took a lowlevel aka nandroid backup: boot into recovery mode (on mine that's fastboot off, shutdown then power on while holding the Volume Down button), then select backup in the revolutionary/clockworkmod menus. This is the initial baseline to fall back to should I brick my phone somehow.
und jetzt: weg mitm speck! (tr: let's diet)
Titanium isn't just a backup tool, but also extremly capable in the area of bloatware removal. If you're unsure about some component, use TB's freeze mode first; if nothing breaks you can tell TB to remove the package. (BTW: on my droid TB needs the setting "app processing mode: auto, indirect" or it gets stuck doing freeze/thaw.)
Here is the list of packages that I nuked on my phone (the names are as shown in TitaniumBackup):
YouTube Twitter Widget Talk Stocks Widget Stocks Setup Wizard Setup QXDM2SD People Widget Peep PC Synchronization My Uploads Music Visualisation Wallpaper Market Updater Market Feedback Agent Market Mail Widget Mail Magic Smoke Wallpaper Location Picker Live Wallpaper Picker Internet HTC Weather Widget HTC Sense Live Wallpaper HTC Message Uploader HTC Media Uploader HTC Location Service HTC Fuction Test Program HTC Checkin Service Home screen tips Google Services Framework Google Partner Setup Google Contacts Sync Google Calendar Sync GMail Friend Stream Widget Friend Stream Footprints Widget Footprints Flickr Facebook for HTC Sense Dialer DCS Utility Component DCS Service com.htc.socialnetwork.provider com.htc.dcs.service.stock com.android.htcprofile Calendar Widget Calendar Calculator Widget Calculator Bookmark Widget App Sharing Android Live Wallpaper Adobe Flash Player
and more is less (at least on my boxes...)
At that point most of the things I don't like are gone, but quite a bit of important functionality needs to be (re)established using decent software.
I hate those virtual keyboards. But fortunately Graffiti (and version 1 even!) exists for Android, and it's free too. Get version 2.0.4 of Graffiti, that's the last ad-free version. The only thing missing (from all versions) are user-definable short cuts. For people like me (who have Graffiti deeply embedded into our brains) using it on Android is oh so sweet.
Firewall and Log ViewerOne issue that you might run into is that lots of accesses will be summarized under 'id 1000', which includes both Google's location spying (bad doggy) and download of the newest A-GPS almanacs (good doggy). My solution is to disallow id 1000 any network access, but to set a custom script for droidwall which allows access to 126.96.36.199, 188.8.131.52 and 184.108.40.206 (those are the A-GPS sources I found in /system/etc/gps.conf).
Now it's time to get Droidwall and restrict the phone from phoning home so much and often. I also installed aLogCat so that I can see what's going on under the hood.
If you're suitably paranoid you might also deploy PDroid Privacy now. I recommend getting the OrBot (TOR client) and ProxyDroid as well.
- PDA means some sort of calendar
The default HTC calendar sucks, so I replaced it with Pimlical Android, which isn't as perfect as DateBk6 (by the same author) but still pretty good. Pimlical doesn't cost a lot and is worth it IMHO. I also experimented with this Business Calendar which is nicer in some areas (e.g. decent widget) but less useful in others. As both of them primarily access the Android calendar storage infrastructure you can use them concurrently. Eventually I decided to invest a bit extra money in an open sync solution for calendar and contacts, in the form of CalDAV- and CardDAV-sync. Together with the unavoidable ContactEditor (see below) that cost me just under €10. On the server side I use Radicale, a nice, free, small (standalone or integrated) CalDAV and CardDAV server written in Python.
Android doesn't come with any useful iCal import tool (as you're supposed to entrust your data directly to Big Brother Google), but this tool here provides such functionality.
- PDA also means finding which contacts to pester/phone...
And just like with calendars, vCards aren't well supported - at least in the HTC contacts applications: any groups that you may have used to organize your contacts are lost on import. Very helpful.
My solution is to throw out all the inflexible crap (incl. the standard dialler) and replace it with the DW Contacts and Phone kit - which also properly understands anniversary and other time info for contacts.
Another related wrinkle: the standard contact enditor doesn't let you edit contacts from (synchronized) external sources, which is why the extra ContactEditor is required.
- Comms: Email, Web, Chat
K-9 Mail is great, it works well with my IMAP servers, it offers GPG integration (when Android-PG is installed). It's a bit of a memory hog when you let it store the mail boxes in RAM; simply select "storage on SD" for your accounts and that issue goes away. In the browser area I went with Dolphin Mini (plus some suitable rules for my web proxy filter to keep it from leaking too much info to its makers). Gestures in DM work very well, and the ability to select the Useragent to send makes accessing badly setup websites much more bearable. At that point I also installed the Duckduckgo search plugin (the old, small version from f-droid.org). Unfortunately you have to select the desired category/search provider every single time (the default is - you guessed it! - Google), but I can live with that wrinkle.
And with me not being overly chatty, the imo.im client works sufficiently well for me: multi-protocol is good, but that it's based on their proxy servers isn't so great.
:-) calculator RPN an have must I
Droid48 emulates the HP-48 series calcs. The link points to the source, finding binary packages (or building your own via the SDK) is left to the reader as an exercise.
Data and Information storage
For my various passphrases and similar secrets I need a bit of an outboard brain, and I've been a happy user of Secret! since just about forever (on PalmOS). It is not overly expensive, and I both know and trust the code (I got my licence donated for contributing a desktop decrypter in perl...).
For general, mundane, organization of stuff on my phone I love Ghost Commander - it's at least as great as Norton Commander was on DOS. The ghost also offers a very good root-mode if you have BusyBox installed (see goodies section). Tip: the bog-standard audio player doesn't have an interface to trigger a rescan of the SD card, so it never picks up stuff that you might have SFTP'd on. But the ghost (menu, application, rescan media) takes care of that problem.
The little text editing I ever do on the droid is mostly done with Paul Mach's TextEdit - very unspectacular but works just fine (except that it only edits files on the SD card). Recent ghosts also have an ok builtin editor. From the offerings of the OpenIntents project I mainly use the OI Shopping list application.
- Navigation without Google and offline, too
All the easily accessible navigation systems for Android use the default Text-to-Speech engine, which requires the datafiles to be installed separately (no idea why...). Here is a link to the Pico TTS Data Installer. Depending on your locale, however, you'll get atrocious pronounciation from the thing (it's buggy and insists on always using en_US). For Australia it's a good idea to install MoreLocale2 and select en_UK. After that preparatory step I installed Navit and am very happy with it - even more so after I got the optimized layout files from 0606.at. Only downside compared to the Google stuff: it's less polished in the area of searching addresses. Big upsides: it works without data connection, it's open source, and it doesn't phone home.
fine tuning and goodies
- Battery Life
setcpu provides a fast way of changing the cpu governor, so that your phone doesn't always (unnecessarily) twiddle its thumbs at max speed. With the ondemand governor my phone spends about 80% of the time at the lowest speed. (You could also access these settings from a terminal, setcpu just makes it more convenient.)
I also use Setting Profiles to automatically switch between auto brightness and minimum depending on the time of day.
- BusyBox, Terminal, SSH and SFTP...
No Unixy device can be considered complete without a Terminal Emulator and a decent shell. Once that the TE is on the box, you should download the appropriate prebuilt BusyBox (for my phone that's the armv6l version), plonk it onto your SD card and use a combo of
busybox --installto get it into
As SSH client I like the IRSSI Connectbot best, and my SCP/SFTP needs are catered for by AndFTP very well.
Plain Android doesn't allow your applications to change the clock - you need root rights for that. In countries/networks where GSM doesn't include the time sync info your only choice is to go for something like clocksync, a very decent NTP client.
The ZXing qr/barcode scanner works very well. GPS Status is a pretty good interface to all your phone's sensors, not just the GPS. The SkEye planetarium is fun to play with outdoors and at night.
SDK and Emulator
I absolutely don't want the Market component on my phone - but certain (free) packages are hard to get hold of from alternative repositories (e.g. the f-droid repo). To work around that I recommend downloading the Android SDK which contains not just a development environment for Android but also a pretty decent Android emulator. I've used that thing a few times to download the packages that I want into this pristine emulated sandbox and then transferred the apk's to my real phone later.