So as I mentioned in the post I shared from Hackerspace (by umataro42), I had no ideas for today's post until I saw his. And in the immortal words of Carl Weathers, "Now you take this home, throw it in a pot, add some broth, a potato. Baby you've got a stew going." So now I have a post, thanks very much sir!
So I discussed something rooting related ages ago it seems and a few months back I asked if anyone would be interested in learning more about rooting and all that goes with it, there was some interest. I've tried writing a post about that since and it's just been hard to really cover the essentials properly and make time to write it in full. No more! Today you get that post and likely written a bit better since I'm under no real "I have things to do today" constraints for once.
I'm gong to avoid getting into the really technical jargon where possible, but there will be parts where it can't really be helped. If anyone has questions or wants more information or clarification and what have you just speak up in the comments. I know umataro42, Pessimipopatamus and a few others on here are all tinkerers like myself and know this stuff as well as (or better than) I do. And the one amazing thing about the Android developer/tinkering community is that we all love helping one another out whenever possible (provided you are willing to do some homework on your own).
First and foremost, just what is root?
I said root, not Groot!
This is just one of those that I absolutely cannot do justice to, so I'm going to boil it down as best I can for all of you unfamiliar with the term and what goes with it. Think of root like being the Administrator/boss of your phone. Yes, you own your phone and can theoretically do what you want with it. (You're actually very limited by your OEM and carrier in this, which I'll get to addressing in due course in this post.) You are also being artificially limited and restricted. You can do what you think you can, but there's so much more you can do when you root and once you're rooted the possibilities are truly endless. Or as endless as hardware and software limitations allow.
Once you've got root nothing is outside the realm of possibility and in fact what is outside said realm is basically hanging a sign around its neck and a blazing neon lit sign over itself pointing downward and saying, "Hey! Look what you can't do! I dare you to try!" And it's off to the races at that point in the tinkering community, the more a lot of us are told "you can't do this" the stronger the urge is to try and see if we can.
This is root in a nutshell: You can do what you want with your device. Period. The manufacturers and carriers will not be able to stop you.
Why would I want to root my device?
This is one of those questions that is very subjective. Maybe you don't want to at all. Maybe you do. Maybe you don't but only cause you've got no reason to yet. It's really up in the air, but it's very much an "ignorance is bliss" situation. As long as you're not aware of all you can do to your phone and how your actually limited as soon as you take it out of the box you just don't know what you're missing out on.
What you're missing out on is vast and glorious. Much like space and the ocean, minus xenomorphs and Cthulhu and all kinds of things that would likely freak you the hell out.
Everyone reading this likely has a smartphone or a tablet lying around, but for the sake of argument let's focus solely on smartphones (since those are the ones with the greatest artificial limitations).
You've used your phone, you're used to it and all it can do. Are you aware of all it can't though? How many people here pay for a tethering plan? How many people here think, "Well, my Samsung phone is alright, but I do like the look of that stock Nexus device or wouldn't mind some of those Moto X features,"? How many people here hate ads? And so on and so forth. If you're currently doing any of these things or wondering/thinking them then congratulations. You're someone who might be interested in rooting your device.
Starting with that tethering talking point, are you aware that Android out of the box, or better said from the source code behind it, actually allows you to tether freely? It does! The issue is though that carriers can't charge you (an arm and a leg) for the right to use it at that point. So at their behest OEMs working together with the carriers remove that ability. The carriers can then re-enable access for a not so modest fee.
When you're rooted this becomes a non-issue. You can restore Android's native tethering abilities by either installing the appropriate apk, editing or changing a few configuration files or flashing the appropriate zip file (you'll need a custom recovery for this last one).
But maybe tethering isn't your thing and the real issue is you like the look and feel of the latest Samsung Galaxy device but don't really care for the software on it. You like the hardware and all that comes with it (microSD card slot! lol), but find the interface laggy or downright ugly (seriously, how the hell does anyone think TouchWiz is better than stock?).
You'd love to have some of that oh so sweet Nexus-like stock Android goodness, wouldn't you? Yeah, you would. Depending on the implemented method, rooting is the first step towards getting that stock Android experience on your device. Once you're rooted you can very easily flash a custom recovery and wipe that Samsung gunk off your device and flash a custom ROM that gives you the Nexus experience. Or out and out just converting your phone to a Google Play Edition version of the same hardware, which means you will now be on stock Android and any future updates will come to you straight from Google. No more having to wait on the OEM or carrier to dole updates out to you, if they do so at all.
Maybe you're not someone who wants to do either of those things though. Maybe you just want to tweak little things here and there. Maybe you want immersive mode everywhere. Maybe you want to add Quick Reply capabilities to Hangouts. Maybe you want to rid yourself of any and all ads all over your device. Maybe you want to do something like those things but not exactly those things.
I could go on and on about what's possible with root, suffice it to say we'd be here forever and a day if I did so. Like I said, if there's things you want to know then feel free to inquire in the comments. Myself and others will do our best to reply to any queries posed or comments left to that effect.
Onward and upward as they say though.
How can I root my device?
Let me count the ways. No, wait. Ain't nobody got time for that! There are far, far, far too many. Some are device dependent, others will work on almost anything and everything. It is so varied that I can't really boil it down.
But if you're with me so far and you read on and decide that you want to root your device then hit me (and anyone willing to help out) in the comments below and we will do our best to point you in the right track or find methods tailored to your specific device. If you're going to do that be sure to include specifics. Specifically what type of device you have and what carrier you're with, if any. Also, what version of Android it is on, as some root methods work on some versions and not others. You can find this out by going into Settings then About Phone and it should be in there.
A short while back though I wrote about a new method that was released by the (in)famous Geohot. Yeah, the guy who jailbroke the OG iPhone and managed to work some serious magic on the PS3 that led to custom firmware for it eventually. This new method is called towelroot. You can read about it over on the XDA forums. You can also download the appropriate apk needed from the towelroot website, click on that upside down y thing you see there and that'll download it to your device. Installing and running it will hopefully work its magic on your respective devices and then you can do all that cool stuff.
So you've somehow rooted your device and want to get really down and dirty with Android, how can you do that?
This, children, is where the fun really starts. It's also where things can and likely will go wrong. So I cannot stress enough the importance of reading, reading some more and then reading a lot fucking more after that.
If you've never heard of the XDA Developer forums then I highly suggest you head over there right now and take a peek at what you're about to get yourself into. That link leads you to the Portal and that's just a highlight of the latest news and things going on in the tinkering community. Take a gander at that and then decide for yourself if you really want to go down that rabbit hole.
For those who've decided "fuck it" and have taken the plunge, welcome!
In true XDA fashion, I cannot understate enough that YMMV (your mileage may vary) when it comes to tinkering with your device and what you can do and what might happen as you really get into things. Hell, I've been doing this myself for years and I still experience the occasional "oh shit, I fucked up" moment. But, and this is really an important point that I tell all the people who turn to me and ask me to help guide them in all things root related, the key part to any fuck up is not to panic immediately after. DO NOT DO THAT! Almost everything short of an out and out full brick is fixable. Some of you might be reading that and now be thinking the following about even having clicked on this post at all.
But have no fear! We've all been there and done that and like I said, read and read some more and then do some more reading after that. You know that whole "the more you know" thing that gets repeated here and there, it applies here to. Before you start messing with this and that read the forums for your specific device, check out the various Android sites, ask questions of those who've been there and done that. You cannot have enough knowledge and information about any of this and it's always changing and moving forward, so even those of us who "know it all" are constantly having to keep up and learn new things.
But I digress, you've decided to take the plunge and are with me so far. Congratulations! Welcome! Let's discuss some of the fun stuff, shall we?
How do you go about doing all this really fun stuff? The ways vary, but they boil down to a few essentials. ADB and a custom recovery. Those two hold the keys to the kingdom.
What is ADB?
ADB stands for Android Debug Bridge. The long and short of it is that this is how you communicate with your device via command line.
What can you do with ADB? You can flash a custom recovery. You can unlock your bootloader (for those of you with Nexus devices, with the "fastboot oem unlock" command, minus the quotes of course). You can manually install updates to your software. You can flash the latest version of the Android system to your device. Again, this is one of those things were I could go on. The things you can do via ADB are many.
Show us goddamnit, stop telling! Amirite? Well, since I'm missing the cable I need to hook my phone up to my desktop here at work the best I can do is give you a rough idea. So here's two screenshots. One of what you'll see on your screen and one more focused on the important part (with a command sent there and what it displays after, that command being "adb devices", which normally list any devices found that commands can then be sent to).
As you can tell by those screenshots, my Photoshop skills are limited to "fuck you, I can use MS Paint". Can you use ADB? I thought not. So don't judge me on the lack of Photoshop skills!
What was I saying?
Ah yes, so there you have it. That is what you'll basically see when you're using ADB and running commands through it.
Okay, so I need this ADB thing. Where do I get it and how do I set it up?
First off, I'm just gonna say it, you kids these days have it easy. Back in my day we had to do things manually and that was a pain in the ass. (It wasn't, but it wasn't as easy as it is now and it seems like a pain in the ass now. Curse you, laziness!) Also, we walked to school uphill both ways and in the snow. And you had to watch out for dinosaurs. A great many kids were picked off on the way there and home believe you me. Not I obviously, but that's because I don't have to run fast. Just faster than you. [puts on hat and promptly removes it in respect for the fallen] And if my foot happens to lash out and trip some of you so you stumble and fall, well, shit happens. Your sacrifice will be appreciated. : )
The old one involved heading over to the Android developer site and getting the Android SDK and then doing a bunch of extracting and manual setup and this and that and fuck it I'm too lazy to cover all that. Honestly, there are enough tutorials online that I shouldn't have to do it for you. What did I say earlier? Read, read again and then read some more? Apply it here. If you really want to get down and dirty then I expect you to do some homework on your own. I'll point you in the right direction, it's up to you to dig up the drive needed to get to hitting up Google and finding more information. It's out there, oh man is it out there. In spades!
Like I said earlier as well, things move forward and things get easier at times and tougher as well. I personally use toolkits as needed out of sheer laziness. Also because of the "been there, done that" factor. I know my way around ADB, I am allowed to use toolkits. If something gets screwed up, I can fix things manually. I am hesitant when it comes to recommending toolkits to noobs (aka people new to all this) though. If you can't fix things manually if something goes wrong then there's really no reason for you to be doing things the automagically way in the first place. As helpful as the XDA and tinkering community is and can be, it's also expected that you do your part to learn things the hard way and acquire information for yourself. It won't always be given to you, more so when you've shown no effort made on your part to acquire it. That whole "read some more" thing.
On this one front though I've no qualms about saying "use this to make your life easier". It's ADB, it's the tool that does it all. If you use a toolkit to set it up, that's alright in my book. It's actually using ADB that is the part you should really learn to do, so "cheating" to get it setup correctly isn't a big deal.
To that end, I personally use 15 seconds ADB Installer to do the job. (The fact that it is the easiest way to get things setup even on Windows 8.1 makes it that much better.)
The install process couldn't be more straightforward, it ask you questions and you select "y" or "n" (yes and no respectively) as your response. Truth be told, I'll save you some time, you're going to want to say "y" to all of these. That'll get you setup perfectly. Just keep in mind that when you do run the setup you need to right click it and select "Run as Administrator".
Oh snap! Totally forgot, that tool is Windows only. (As it clearly states in the preview, which you and I can see.) If you're on a Mac... fuck you. I don't use Macs. So why would I read up on what you need to get things setup on one. Buy something with Windows on it! I kid, I kid. But seriously, I don't use any Apple computers so you're out of luck as far as me pointing you to where you need to go. The process should be mostly the same, at worst "Google is your friend". Hit up Google Search and get to typing. If you're running Linux, then you know your stuff and I really doubt you need me to guide you on how to do things. (And yes, I've got various Linux distros running on different machines and on Live USBs. So I'm not just "another Windows user" or what have you.)
So you've got it installed and setup, now what?
Now you should probably learn some of the useful commands you'll end up using pretty regularly. Right? Right!
Again, I expect you to do some Googling on your own and all that goes with it. So I won't hold your hand here, but I am more than happy to point you to a good place to start.
Android Central had a piece by Jerry Hildenbrand entitled Ten basic Android terminal commands you should know. That'd be a great place to start.
Didn't you say something about a custom recovery along with ADB?
I did! Thanks for remembering. Yes, you can do some very fun stuff with a custom recovery and getting one onto your phone can be done so through a variety of methods.
I mentioned toolkits, which I'm a fan of and which I don't recommend you jump into without knowing how they do what they do first.
There's also a handful of apps that can do the job for you, provided you are rooted first. There's Rashr - Flash Tool, there's Flashify (a personal favorite), there's TWRP Manager, there's Flash Image GUI and a few others. One important thing worth remembering though is that not a single one of those will work without your device first being rooted.
Depending on your device it might be easier to root it and then install a recovery or vice versa. It really varies depending on the device, also the latter option (installing a recovery first and then rooting) requires unlocking your bootloader in most cases, which requires some ADB use. Hooray for practical firsthand experience!
The long and short of it though is that custom recovery means you can enter a recovery (which is separate from turning on your phone normally and an option most end users rarely see) through the bootloader (either directly or indirectly, it varies by device and method used to enter it) from which you can do a number of things, although the big one in this case that might appeal to more than a few of you is to install a custom ROM (or put another way, change the version of Android/software on your phone completely).
Once you've got a custom recovery installed (either ClockworkMod or TWRP, the latter of which is my preferred recovery and which stands for "Team Win Recovery Project") you'll be given a number of choices from which to select, for the most part they're the same on any and all recoveries.
They are install, wipe, backup, restore, mount, settings, advanced and reboot.
Install is where you go to install a new ROM. You'll move to where the zip file is stored, select it and then choose to install it.
Wipe is where you go to wipe your current ROM. This is something you have to do before installing in almost every single case, with the exception being updates to the same ROM (and even then I'd say wipe it anyway to play things safe).
Backup is where you should always go first. Back things up! You never know when something might go wrong or you might flash a corrupted zip file or what have you. At least with a backup you've got something to fall back to should the worst happen.
Restore is where you go when the worst happens or when you want to put things as they were. Didn't like that new ROM you installed? Hit this up and put back the previous one you were using or even go back to your original stock one.
Mount, settings and advanced are beyond what I think most of you will be using. So I won't discuss them.
Reboot is rather obvious, it reboots your device. Anytime you do any of the four I touched upon and are ready to rock and roll again this is where you're going to go after. It'll restart your device and you'll be up and running again in whatever you've got chosen in no time.
And for those of you with me so far and who happen to have lucked out either unknowingly or knowingly and have Nexus devices, here's the three ADB commands you'll want to know so you can really do things the easy way.
fastboot oem unlock: This one will unlock your bootloader, you've got to be in the bootloader though to run it. Keeping in mind that unlocking your bootloader will wipe your phone. Completely. So anything on it that you want, back up first.
fastboot flash recovery [insert name of recovery, including .img at the end here]: This will install the recovery you've picked out. Easy peasy.
fastboot reboot-bootloader: Once you've installed your recovery, if you want to boot into it right away then you can do so with this command. It'll basically reload your bootloader and you can make your choices from there.
I believe you mentioned unlocking a bootloader a handful of times there, what's that and how do I do it?
Unlocking your bootloader basically frees you up to do the fun stuff. It also wipes your device in the process, which is actually done out of a security concern. With an included bootloader, which may or may not void your warranty (depending on your phone's OEM), you basically have the keys to the kingdom for all the fun stuff.
If you've got a Nexus device then the commands to do this are simple and I've given it above.
If you've got anything else, well it really varies.
In some cases it borders on nigh impossible. (Looking at you Samsung. Although one should never write off the tenacity of the XDA community to get things done. It's happened more than once that we've had bootloaders unlocked one way or another and I have nothing but respect for the people who make it happen.)
In others it can be done via various pages on the OEMs respective websites, with plenty of instructions (including pictures in some cases) on how exactly to go about doing so. (Motorola's can be found here and HTC's can be found here.)
Motorola and HTC can also have their bootloaders unlocked (in some cases) via the SunShine Unlock/S-Off method created by the awesome jcase (among others). jcase and crew, if you guys/gals by chance see this, you all fucking rock!
Alright, I've got a custom recovery. Now what?
So you've done it all so far, huh? Well, look at you.
Now what? Now you have a few options. If you aren't already rooted, for whatever reason, you can always head here and read up on SuperSU (which is basically "root" for your device).
Or if you want to skip reading and get straight to doing you can head here and just download the needed zip file and flash it (via "Install" in your custom recovery, which I discussed earlier).
At that point, assuming you decided to wrote your phone the manual way (which is what I call it when you do it the recovery way), jump back out to your recovery and do a Backup (which, again, I previously mentioned above). This will now be your fallback point should it be needed for whatever reason. You'll have a stock and rooted backup of your current stock setup.
It is at this point where your options really go through the roof. You've got a custom recovery, you can install a custom ROM!
What is a custom ROM and where can I find one, also which one should I get?
You certainly have a lot of damn questions, don't you? Well, a custom ROM is like a custom recovery. It's something non-stock you're going to put on your device, except in this case it replaces the software on your phone. What you see when you turn on your phone, that's Android. Although it might be skinned (cause of the OEM) in some cases.
A custom ROM replaces what you see normally when using your phone with something else entirely. That something else can be glorious if you do your research and choose wisely, just be certain not to choose poorly.
You can find custom ROMs for your specific devices over on those XDA forums I keep mentioning. If you want to just skip to the relevant stuff, copy/paste the following into Google. "xda [insert device manufacturer and model here] android development" or "xda [insert device manufacturer and model here] android original development". Either of those, usually the former in most cases, will take you where you want to go.
As for which "known" ROMs to be on the lookout for there are a few.
CyanogenMod is perhaps the most known of them all, but for purely personal reasons (which I'm happy to discuss if need be) I would not recommend it. (The long and short of it is they went extremely corporate and when they did so they tried to screw over and/or mistreated a number of developers who contributed to the project overall. You don't fuck over the people who helped make you what you are, that's beyond dick and that's largely why I no longer recommend the ROM.)
Paranoid Android is a ROM I wholeheartedly recommend you check out if it's available for your device, either officially or unofficially. It is for the most part second to none and adds a number of unique features that have for the most part been ported to other known and not so known ROMs. These guys/gals do great work and you could certainly do far worse than trying out PA first chance you get.
CarbonROM, SlimKat, PACman are three I'd recommend after either of those first two choices. Beyond that there's just far too many out there to name all the great ones.
Those five though tend to be my go to recommendations for everyone. It's worth mentioning though that you really should read about any and all ROMs available for your given device, sometimes you find gold in the most unlikeliest of places and I've had numerous single developer created ROMs on my various devices that ran smoother and I enjoyed far more than some of the stuff created by "known" teams and developers.
It's also important that you keep something in mind, developers tend to be the guys and gals who prefer high end devices. So if you've got a flagship device (think S3, S4, S5, Note 2, Note 3, Note 4, M7, M8, Moto X, Nexus 5, etc) then you're good, because they do too and they'll develop for those devices. If you've got the free phone that you got when you signed up for a 2-year contract, you have my condolences. The ROMs available for your phone might be a handful to none. Basically, the more popular a phone is the more support it will have. (Although there are a number of developers out there who will develop for a phone they do not have, the catch being in most cases you have to provide them with a fully working version of that phone you want them to develop for. Given the work they do largely for free, it's an acceptable trade off.)
Alright, alright. I'm with you so far. Anything else worth knowing?
Yes, if you're with me so far there is a bit more worth knowing. You know that scene in Fight Club, where they discuss the rules? There is one rule for anything tinkering related.
Do not ask for ETAs.
Don't do that. Don't be one of those people.
Things will come when they come and if you have to wait then too bad, the rest of us do so. Welcome to the club.
Also, as I have stressed numerous times throughout this post: Read, read, read!
More often than not all the information you might want or need will be provided to you in whole, it is your job to do your homework and read all of it. Per the XDA related example that drives even me mad (and I have patience in spades). If the first post of a given thread gives you all the info you need to know, list any potential issues with whatever and so on and so forth and the first thing you do is skip reading it entirely and then ask a stupid question that was answered ahead of time, people are 1. going to think you're an idiot and 2. potentially not reply to you. If you can't be bothered to put in some effort into helping yourself, why should they?
Beyond that, the usual thing applies: Be respectful and courteous to others.
If you need help, ask for it. If someone tries and fails to help you, it happens. Thank them anyway and see what you can dig up elsewhere. And so on and so forth. But by all means, do not be a jerk. I have seen far too many developers up and quit the scene entirely rather than deal with assholes. The community as a whole suffers every time that happens and is made slightly less awesome.
And that's all I got.
So we're done here?
Yes, we are most definitely done here. Have you read up to this sentence? That's a lot of writing and information to read, much less actually think about and write out. I'm two hours away from punching out and sliding down the dinosaur tail. I want to goof off for the remainder of the day, which means bring on your questions, comments and remarks about how awesome I am for providing all this information to you. In fact, let me help you out. Feel free to repost the following.
Anything else, including general attitude and hate can be expressed with the following.
Now, I bid you all adieu, and in the words of a friend of mine, "Have a kitten!"