So, I bought a brand new Samsung Android phone, and it was a huge disappointment due to all the distracting, annoying, and completely useless crapware from Google, Samsung, Vodafone, and even Yahoo, which came pre-loaded with the phone and which I am not allowed to uninstall. I mean, never mind that a certain application is useless; suppose it is in fact very useful; and yet, suppose that despite it being so awesomely useful, I for some reason still want to uninstall it. It is my phone, I should be able to do it, right? But no, the powers that be have decided that I am not allowed to uninstall apps from my own phone. Even when they are not only useless, but actually harmful, since some of them are always running, thus consuming memory, CPU cycles, battery, and communications bandwidth. Some apps can be uninstalled, but many others cannot be uninstalled. They have to stay on the phone. Whether I like them or not.
After this horrible experience I am very seriously considering the possibility that next time I buy a phone it will be an iPhone. But for now, I am stuck with Android, so I am now learning how to root my phone so that I can be somewhat in control of the situation. I am experimenting with my old phone first, a Samsung Galaxy S2. Here are my notes.
1. First of all, make sure that your S2 is updated to the latest version of Android by going to settings -> About device and selecting Software update. Then, come to the same screen and check your Android version. The last time the powers that be bothered to distribute a new android
version to the S2 was in 2012, and it was android version
4.1.2 "Jelly Bean". In the future I will probably be upgrading to some
custom ROM with some newer version of Android, but for now I only care
to root the phone, and that is what this document deals with. So, make sure that your Android version is 4.1.2. If not, then these instructions are not applicable to you.
2. Installing the Samsung USB drivers was unnecessary, since windows had already detected my Samsung phone and downloaded the necessary drivers for it. But just in case, the drivers can be found here: http://developer.samsung.com/android/tools-sdks/Samsung-Andorid-USB-Driver-for-Windows (yes, it says "Andorid". But it works. Go figure. Lamers.) If you have ever installed Samsung Kies, then you already have the drivers, but rumor has it that Kies must not be running during this procedure.
3. Download and run adb-setup-1.4.3.exe from http://forum.xda-developers.com/showthread.php?t=2588979 It copies some files under C:\adb without asking (How lame is that!) and adds that directory to the path. When prompted to install the Google USB drivers, the answer is "No", because the Samsung Galaxy S2 is a Samsung phone, not a Google phone.
4. Go to developer options, turn them on, enable USB debugging, then on the PC run cmd.exe and execute "adb devices". The phone should be listed. In retrospect, I think that installing ADB simply to check the connection makes it a rather unnecessary step for rooting the
phone, but never mind, having adb will certainly come handy for doing other things with the phone once it has been rooted.
5. Download a kernel. The process
of rooting the phone involves replacing the kernel of the system, and
rumors have it that when doing so you have to find the right kernel flavor for
the "build number" of the device. Under Settings -> About device my phone reports its build number as JZO54K.I9100XWLSE.
The JZO54K part seems to be irrelevant, the
I9100XW part says that I have a Samsung Galaxy S2, (if not, then these instructions are inapplicable,) and the LSE part tells which flavor of the kernel is needed. Luckily, the Jaboo kernel that I found on the
interwebz is said to cover many flavors, including LSE. So, visit http://forum.xda-developers.com/galaxy-s2/development-derivatives/kernel-v2-3a-jb-i9100-t2062208 and you will be directed to download a jeboo_kernel_i9100_v2-3a.zip or similar, which is useless, because it is a zip file. So, extract zImage from it, and then use 7zip to create a tar file containing zImage. Luckily, 7zip creates the file in "ustar" format, which is the correct format. Let's call it jeboo_kernel_i9100_v2-3a.tar
6. Disconnect the USB cable from the phone.
7. Boot your phone into "Download Mode" with the following voodoo magic: power-off the phone, (and wait for its final death throe,) then press and hold the [Volume Down] and [Home] buttons together and then press and hold the [Power] button for a few seconds. This should cause a screen to appear, at which point you may release all these buttons. The screen is warning you that what you are about to do is oh-so-scary, and asking you to press [Volume Up] to continue. Press [Volume Up]. The phone enters "Download Mode".
8. Run Odin.
9. Connect the USB cable to the phone, and one of the boxes in Odin under ID:COM will turn yellow, indicating that it found your phone.
10. In Odin, make sure Auto Reboot and F. Reset Time are checked.
11. In Odin, click the PDA button, and select jeboo_kernel_i9100_v2-3a.tar. When done, there should also be a check next to PDA.
12. In Odin, click Start. Odin will flash the jaboo kernel onto the phone, and the phone will restart. Your phone now has ClockworkMod Recovery installed on it, but it is still not rooted.
13. Visit http://d-h.st/9WL and download UPDATE-SuperSU-v1.30.zip.
14. Copy UPDATE-SuperSU-v1.30.zip to your mobile phone.
15. Boot your phone into CWM Recovery mode with the following voodoo magic: power-off the phone, (and wait for its final death throe,) then press and hold the [Volume Up] and [Home] buttons, and then press and hold the [Power] button for several seconds. The "Jaboo Recovery" screen should now appear, at which point you may release the buttons. The screen has instructions on how to navigate using swipes, but you can also use the volume keys to navigate and the power button to make a selection.
16. Select "Install Zip", then navigate and select UPDATE-SuperSU-v1.30.zip. The file will be installed, and you will also see a log describing that everything went fine, undoubtedly.
17. Return to the main menu and select "reboot system now".
At the end of all this, your device is rooted. While booting, a yellow warning triangle will be displayed under the Samsung logo, indicating that you have tampered with the flash storage of the device. If you want to get rid of this triangle, download the "Triangle Away" app from here: http://forum.xda-developers.com/galaxy-s2/orig-development/2014-01-15-triangleaway-v3-26-t1494114 and if you like it, consider buying the app from the Google Play store, thus buying the developer a beer.