All Things Root, Part I: The Basics

I wanted to talk about something a little more fun. Root. Now, I’m sure many people know what rooting is, but for those that don’t, or for those that want a little more information, here goes. If you already know about rooting, feel free to proceed to All Things Root, Part II: Utilities

What It Is

So. What, exactly, is root? Well, root is the administrator (or superuser) account on Linux and Unix systems–and Android is a Linux based operating system. So, simply put, rooting is merely the acquiring of access to the root account on the phone. In some cases, the process is simple and straightforward. In many cases, unfortunately, it’s a little more tricky, since manufacturers and carriers generally don’t want users getting their sticky fingers on the software (or hardware) innards of the phone. Why? Because rooting allows for the running of privileged commands, such as gaining write-access to system files, accessing and controlling hardware,

How It Works

The main goal is the installation the normally omitted su (superuser) binary (a standard part of Linux), allowing root privileges to be obtained, and usually includes installation of a Superuser app, which simplifies management of root permissions. Typically, it involves employing some sort of exploit in order to accomplish this. Rooting and installing a custom ROM are two different things. Installing a custom ROM requires an unlocked bootloader, which I’ll get to later. You can obtain root without flashing a custom ROM, though occasionally, flashing a rooted system image is part of the rooting process. This is generally a copy of the stock ROM that’s been modified to have root. As mentioned previously, methods of rooting a phone vary considerably. In some cases, it can be an involved process that may require the Android SDK. For popular phones, however, a relatively simple–or even one-click–solution is usually developed. Eventually.

And This Differs From Jailbreaking… How?

The primary reason I’m answering this is because I’ve gotten the question from multiple sources. The truth is, the outcome is more or less the same. The process is rather different, internally, but it doesn’t make a big difference to the user. In both cases, the goal is gaining privileged access. iOS is based on Darwin, which is an Apple-developed Unix operating system, and Android is based on Linux (which is itself based on Unix). Essentially, rooting involves restoring a normal piece of the operating system (su) that has been removed in order to secure it. Apps requiring root can be installed without it, but will be unable to obtain the root permissions. Once that piece is restored, the user can grant those permissions. iOS, on the other hand, was designed with a somewhat different philosophy. As such, jailbreaking involves exploits that allow the kernel to be patched every time the device boots–which is why there’s a distinction between tethered (requiring a connected computer every time the device boots), untethered (not requiring a connected computer), and semi-tethered (requiring a connected computer in order to have root privileges, but will function normally without it) jailbreaks. So Android rooting is slightly more ‘natural’, if you want to think of it that way. However, both involve using exploits in order to gain privileged access, and both allow the user deeper access to the device. So, from a user perspective, I suppose the difference is mostly philosophical.

Huh–What Is It Good For? (Absolutely Everything)

There are many benefits to rooting, even without using a custom ROM. For example, access to the system files means you can remove programs that carriers bundle with the phone. Likewise, you can use apps that write to the system files, such as ad-blocking apps. Apps that require lower-level access to the hardware, such as some tethering apps, overclocking/underclocking apps, or recovery management apps, are also usable. There are some apps that are usable while unrooted, but are enriched by rooting. Finally, rooting is usually the first step in unlocking the bootloader. This allows for flashing custom ROMs, which–let me tell you–opens a whole new world. Now, bear in mind, there are also dangers associated with rooting. Just as rooting gives you deeper access to your phone, so too, can it give malicious apps that access. Consequently, you don’t want to grant just any app root privileges. If you’re careful with what you install and careful with what you allow root access, you should be just as safe rooted as unrooted.

Some Guides To Rooting

Samsung Galaxy S III: Galaxy S3 Root FAQ
Samsung Galaxy S II Skyrocket: Rooting Guide
Motorola Droid 2 Global: Rooting Guide
HTC One X: One-Click Root
HTC Droid Incredible 2: Rooting Guide
HTC Phones (Snapdragon S1-based: Droid Incredible, EVO 4G, Hero, etc): Unrevoked

Backup, Part II & Storage

Storage for phones is growing, but media seems to grow just as fast, and the uses for our phones are likewise increasing. More and more, they’re becoming devices we actually can consume various types of media on. Moreover, in many cases, expandable storage is no longer being included in phones (see iPhones, Nexus phones, HTC One phones), and our lives are increasingly found in the cloud. Consequently, online storage and backup is becoming more and more important.

Dropbox

Dropbox is the classic online sync service. 2GB of free space, with the ability to earn or purchase more. The app is pretty standard, providing the ability to upload and download, but not sync folders from the phone. It does, however, have an camera upload function, which will automatically upload newly taken photographs to a folder in your Dropbox–incidentally, enabling this feature is one of the ways to earn extra space. It also has built-in video streaming for files stored in your Dropbox on ICS or later devices.
Dropbox [link]

Box

Box is another online storage service, providing 5GB of free space. Much like Dropbox, you can upload or download files. There is no photo or folder sync capability for Box.
Box [link]

SugarSync

Yet another syncing service offering 5GB of storage, SugarSync distinguishes itself by offering a much more sophisticated app. You can view other devices you have registered, and it provides the ability to sync photos, videos, and folders. There is also the option to take a picture directly from within the app, and have it upload.
SugarSync [link]

Google Drive

Formerly Google Docs, it was rebranded and given the ability to store non-document files, providing 5GB of free space. The app includes built-in editors for documents and spreadsheets.
Google Drive [link]

Flickr

Everyone should know Flickr. Unsurprisingly, Flckr gives you the ability to take/upload/share photos, with effects and filters. Nothing special here in terms of sync or storage, just a dedicated app for the service. I never really used it much, but I figured I’d include it here for completeness
Flickr [link]

Google+

Google+ is included here because it offers the ability to automatically upload any pictures or videos that you take, and to take pictures for upload from within the app. It’s… y’know. An app for Google+, so it’s got contact sync and sharing capabilities and the like.
Google+ [link]

Backup, Part I

Most everyone knows the heartache of losing data in some form or another. Physical or digital, a hard drive crash or a housefire, there are things that no one wants to lose. Memories. Journals. Photos. Even a high score in a game. Backups are important.

Android has some built-in backup and restore functionality. Users can choose to disable this, but in most cases, it’s enabled by default–Google backs up some settings (such as stored wi-fi passwords), apps and app data to its own servers. Upon signing into your account on a new phone or a cleanly wiped phone, these are restored, with the intent of creating a relatively seamless experience. It works well enough, and

Android is largely centered around Google’s own offerings, such as Gmail, Google Maps, and Google Drive/Docs. The cloud is where Google excels. To a large extent, if you are Google-centric, there may be relatively little you’d need to back up, since most of your information is already stored in the cloud. Sign into your Google account, and your contacts, calendar, and gmail are synced (these and other things can be individually enabled and disabled for multiple accounts).

That being said, a phone is also a phone, and there are other things that one might want to back up, such as SMS/MMS messages or call logs. Moreover, you may want to have local backups in case you end up stranded somewhere without data coverage or wi-fi access. Sometimes, the backup/restore that’s baked in may prove insufficient. That’s where backup utilities come in.

Titanium Backup

Titanium Backup is the most well-known backup utility for Android. It’s versatile, solid, and will back up apps, app data, settings, and system data. It’s very powerful, and not only provides extensive backup/restore capabilities (multiple histories, multiple data profiles, batch, uninstallation, and scheduling), it also provides many other capabilities, such as syncing to popular online storage services (currently Dropbox, Box, and Google Drive), disabling/freezing apps, and movement of apps. The free version is very powerful, but for optimum performance and features, Titanium Backup Pro is a steal at less than $7. This was my first ever purchase from Google’s Play Store, and it’s been worth every penny many times over.
Titanium Backup [link] Pro [link]

SMS Backup+

For extensive users of Google’s services, SMS Backup+ is a very useful tool. It allows for backup of SMS messages, MMS messages, and call logs to your Google account, either manually or automatically. It also allows for restoration of SMS messages and call logs from the backup to your phone, should you lose them. It requires enabling of IMAP access to your gmail account, and you can customize the labels that are applied to the backups. Selective backup/restore is also available. While I use both this and the next item, this is my favored method of backing up the phone aspects of my phone. Since it syncs with your gmail, you benefit from Google’s excellent search, and furthermore, it continues to break down the divides between types of communication. Mail, chats, texts, and calls are all in one place, labeled and searchable. If you use Google Voice as well, even if only for voicemail (as I do), your voicemails can be there as well. There are a number of similar apps out there, this just happens to be the one I use.
SMS Backup+ [link]

SMS Backup & Restore

If you prefer local copies of SMS messages, SMS Backup & Restore provides solid options. It provides backup, restoration, viewing, and searching of SMS messages–automatic or manual, to the local storage or microSD card. The backups are stored in xml format, and may be split up or use a single archival file. Like SMS Backup+, you can perform selective backup/restore. It does not provide MMS or call log backup/restoration, but for most people, its capabilities are more than sufficient.
SMS Backup & Restore [link]

ROM Manager

Chances are, if you’re rooted, you’re familiar with ROM Manager. It is not, lestrictly speaking, a backup utility in and of itself. It was, however, created by Koush (Koushik Dutta), the author of Clockwork Mod Recovery, the most widely used custom recovery image for rooted/unlocked phones. More importantly, it interfaces with CWM to provide simple flashing of ROMs and backup/restoration management for nandroid images. That is–more or less a complete image of the the phone at a given time. Now, there are anecdotal reports of occasional issues with backups/restorations/flashes when ROM Manager is used instead of using the recovery interface. Personally, these days, I don’t use it for anything other than flashing a recovery image. However, it’s a good multipurpose app with backup, restoration, and flashing uses. I flashed my first (and many subsequent) ROM with it. It’s worth installing, especially for those new to flashing. There is a premium version available that has a few more features, and provides access to more ROMs than the standard version.
ROM Manager [link] Premium [link]

Notes

I’ll be covering cloud based and local storage later, including things such as photo or file sync. I do, however, use ADB, ES File Explorer, an Android Terminal Emulator, and/or MTP/CTP/UMS to tinker with files, especially in the /system partition.

Launchers

I figure that launchers are as good a place as any to start. Launchers–or home apps–are the everyday face of Android. It’s important to have a good one, since it’s the primary way you’ll interact with your phone. Manufacturer skins, such as Sense, TouchWiz, and Blur all have custom launchers, with varying features and degrees of user friendliness. Note that the status bar, notification drawer, and associated interface elements are not part of the launcher, but part of the framework/ROM. Launchers can be interchanged, but those elements will remain as part of your ROM.

Now, many people get used to the launcher that comes with the skin that manufacturers put on the phone. If you like it, great–if it ain’t broke, you don’t need to fix it. There are, however, other options out there, and trying them is (generally) free. Moreover, if you root/unlock and start installing other ROMs on your phone, you may opt to go with an AOSP ROM, instead of a Sense/TouchWiz/Blur ROM. If you do, you may end up with something like Trebuchet, the CM9/10 launcher, which is based on Google’s AOSP launcher, with some additional features. This is all well and good, but the options on the AOSP/Trebuchet launchers are a bit lacking, in my book. One nice thing about Android is that it’s modular, so you can change out many of the components. Launcher, keyboard, browser, mapping, SMS/MMS, the list goes on and on. This also means that if you start using a 3rd party launcher, you can often change ROMs and still use the same launcher, and get the same experience. Most of them even allow you to back up and restore your settings, so you don’t have to go through the hassle of individually changing each of the settings to get things just so. On to the

It used to be that there were many launchers worth mentioning. ADW.Launcher (and ADW.Launcher EX, its paid counterpart), Launcher Pro, GO Launcher EX, etc. All of these are very decent, but based on older versions of Android. If you’re running Gingerbread (2.3) or earlier, then they’re still worth mentioning. They’re all viable options (I favored ADW EX, personally). Now, however, it seems to me that there are currently only two worth mentioning for most phones: Nova Launcher and Apex Launcher. They’re very similar–Both of them only support ICS (4.0) and newer versions of Android, and both have paid versions (Nova Launcher Prime and Apex Launcher Pro), costing about $4, to add premium features. They’re very customizable and offer many features, even in the free versions. A few of the features, such as adding widgets from the app drawer, requires that the phone be rooted, but by and large, it’s not necessary. Some of the key features are listed below.

Free:

  • Homescreen: number, grid size, interface elements
  • App drawer: grid size, groups, drawer style, hidden apps
  • Dock customization: size, number, appearance
  • Gestures, such as swiping up/down or pinching in/out
  • Icons, folders, transition effects, infinite scroll
  • Backup/restore of configurations and desktop setup
  • Theme support

Paid:

  • 1×1 widgets in the dock
  • Unread count notifications
  • Overlapping widgets
  • Additional gestures, transitions, and drawer configurations
  • Batch operations

Nova Launcher is slightly more fully featured, such as customization of animation speeds (which, when increased, makes the phone feel faster–at least to me) and a few more customizable gestures. Apex Launcher, however, has slightly nicer interface. It’s a little cleaner, and the homescreen management system is more reminiscent of HTC’s Sense interface. It supports fling-to-delete and locking the desktop to prevent accidental changes. I haven’t experienced any noticeable difference in performance, but this may vary depending on the phone, ROM, kernel, settings, and other factors. Either way, you’re getting an excellent launcher based on Google’s AOSP, with excellent performance and wonderful features and customization. I’ve purchased and used both enthusiastically. Currently, due to the aforementioned perceived speed increase, I use Nova, but it’s a close call, and I have both of them installed and up-to-date. Redundant? Mostly. Occasionally, however, having more than one launcher installed can be useful, and there’s no harm–they coexist peacefully. Recently, a broken update to Apex Launcher caused it continuously force-close. I should note that this was solved within hours, and things like that are bound to happen occasionally, so it should not be viewed as a reflection of the quality of Apex,  but it nevertheless demonstrates that there are occasions where multiple home apps could prove be useful.
Nova Launcher [link] Prime [link]
Apex Launcher [link] Pro [link]

Intro & History

Welcome to my little corner of the dessert-themed world.

I’m a big fan of Android, as might be obvious from the fact that I even bothered to have this blog. The main purpose of this is to provide my friends–and anyone else who happens by–the benefit of my experience. I am by no means an expert. I only joined the ranks of the smartphone endowed two and a half years ago. Not that I wasn’t paying attention before–quite the contrary. I was waiting for a phone I could truly be happy with. I finally found that in the Droid Incredible. I’d been wanting a smartphone for years. Palm devices were obsolete. WinMo phones were clunky and underpowered. I watched with anticipation as the rumors swirled about the first iPhone. I was simultaneously excited and underwhelmed when the first iPhone was unveiled. As I began to realize the direction that Apple would take with the iPhone–locked down, curated, long bound to AT&T, and worst of all, subject to the whims of a brilliant but tyrannical and capricious dictator, my heart sank.

A huge fan of Google from the very beginning, I was cautiously optimistic when Android was announced. From the beginning, however, I could tell it would be a while before I could be really happy with an Android phone. The hardware would have to improve, the software would have to mature, and adoption would have to continue. As an east-coast denizen, technologist, and long-time Verizon subscriber, I wasn’t about to jump ship to any of the other networks, the issues with Verizon interference in devices notwithstanding. With the announcement of the Nexus One, I was excited. Here, finally, was a phone with top of the line-specs, Google branding, and the promise of CDMA versions–only to have my hopes dashed.

Then, the Droid Incredible was announced. A virtual copy of the Nexus One for CDMA, but with solutions to some of the problems that plagued the N1, and the addition of HTC’s Sens. You see, in those days, Android was still coming into its own. Some of the manufacturer skins had purpose and contributions, and Sense was widely regarded as the best option available. I was thrilled. I preordered the Incredible and never regretted it. I did, however, only sign on for a year contract. Android continued to mature, reaching a point where manufacturer skins were tipping the scales into the negative. After a year, I rooted my phone and installed CyanogenMod7 on it, and I never looked back.

I installed nightly builds, I watched gerrit instances and the commits that were going into CM7, I lurked the forums at XDA, and I flashed and flashed and flashed. My Incredible was a champ. It took to Gingerbread like a fish to water, and eventually, to AOKP’s build of ICS–well, more like a dog, but it was stable and beautiful. Even so, I was watching for a new phone that would fill my Incredible’s giant shoes. I wanted something top of the line.

The Galaxy Nexus held much promise, but, like its predecessor, the disinclusion of a microSD card slot was a problem. I really liked the look of HTC’s OneX, too, but again the lack of a microSD card was a dealbreaker–not to mention the fact that it didn’t come to Verizon. Finally, the Galaxy S3 came along. It was almost everything I wanted. LTE. A large 720p screen. MicroSD card slot. High end specs. ICS, and a strong enough and uniform enough front to ensure both updates and community development. I hated TouchWiz, but if I were rooting and installing a custom ROM, that would hardly matter, and likewise, the modularity of Android would allow me to customize the phone in the meantime. I’d’ve liked a SuperAMOLED+ screen or an IPS LCD, rather than a pentile display, and a slightly larger battery would’ve been nice, but those were acceptable concessions. I preordered. When I discovered that the Verizon S3 was going to have a locked bootloader, I almost returned it. Almost. I decided to have faith in the dev community, and eventually was rewarded with a kick in Verizon’s teeth and an unlocked bootloader. I’m grateful to the dev community. And now, I have CM10 (or JB AOKP, depending on the day) on my SGS3.

I don’t have the time and energy to really contribute to development in the programming sense, but I do what I can. I review code, I suggest changes, I debug, I read the threads; I flash nightlies, experimental builds, and kernels; I donate, I buy apps, I keep abreast of the goings-on, and I play. I help my friends and loved ones with their phones and computers. That brings me to this blog. I’m a technologist. It’s how I earn my living, and one of the ways I love to spend my time. In my few years as an Android phone owner, I’ve accumulated a decent amount of experience, and I want to share it. These entries will only be my experiences, my recommendations, my opinions. I’ve got plenty of all of them, so I’m sharing with anyone who cares to read.