Some back story: My old phone was a Windows Mobile 4 device I upgraded to 5 with a pirated ROM. Nothing pisses me off more than a company (TMobile) saying they have to sell you a new phone when the original manufacturer (HTC) says the phone will work with Windows Mobile 5. Of course, it’s not about that. HTC makes the phone, and the carrier gets to load the OS, so simply because something can actually work doesn’t mean it will be pushed out by the carrier. In the Android’s case, they can and do push out updates to the OS on the phone if the manufacturer wants to certify it but they preserve the carriers restrictions. The model is fundamentally different in the fact that the carrier no longer does anything with the OS. Anyway, long story short the keyboard was shot and required heavy mashing to type, the stylus was long since gone and the screen had visible wear marks when turned off. The USB on the bottom was broken, and the phone required a daily reboot. The OS was crap to start with and even the stock ROM I flashed it with (plain vanilla WM5) was starting to do weird stuff and run slowly. The SD card port didn’t work reliably. The earpiece part of the handset died, and I fixed it by taking the phone apart and reseating all the hardware, then my kid bit the earpiece and killed that so everyone was on speakerphone. The final straw was it wouldn’t load my contacts or camera phone pics. Go on vacation, get a new phone!
I replaced it with a MyTouch 3G Slide. There’s a few problems with this. One, the phone is weirdly bulky. It feels like a last-gen device. Like my old phone. But two is the keyboard has a weirdly beveled keypad. The result is there’s a lot of space between each key, so it’s tough to type on unless you hit the key dead on. I found myself wishing for my old keyboard. I also found myself using the on screen keyboard or dictation mode a lot more. Since TMobile gives you a two week handshake to figure out if you want the phone or not, I quickly started using my wifes phone (Samsung Galaxy S) and realized not only is it faster, not only is the ROM more stock, but the on screen keyboard was big enough for my fingers. To add insult to injury, the 3G Touch isn’t a stock Android ROM. It’s got a custom lock screen, custom phone screen, custom keyboard, and you can’t do things like live backgrounds or change the font. The address book is a disaster also. It appears more organized at first until you realize that it’s hiding contacts automatically. The MyTouch also has almost zero application support since the hardware doesn’t look like anything else on the android phone market. That last one is really the killer, everyone has cool stuff out for the Samsung SGS-XXX line of phones, but the unique blend of hardware and ROM put the 3G Touch Myslide in left field far enough it’s got terrible support. I strongly advise against buying a 3G Touch. Concerned about the flash? Don’t be – the Samsung’s camera has a night mode which combined with anti-shake being enabled takes perfectly good photos.
The first question anyone asks is “Why root a phone?”
Two reasons: Get rid of the Cats Fucking movie (AVATAR) and generally clean up the phone – diary, fastwriter, gogo in flight interweb, telenav (why you would put a pay-to-play GPS app on a google phone is beyond me), etc – and secondly to also re-enable tethering. T-Mobile has those wifi cards that put your laptop on a 3G network, but Android has native tethering they saw fit to remove. What is tethering? It makes your phone into a wifi router things can connect to, and the gateway is whatever cellular data mode is available. T-Mobile obviously doesn’t want to give the unlimited data plan people (myself) this feature out of box so we’ll add yet another service to the plan. Generally crap like that pisses me off. If you check in the market, there’s tethering apps, but they work in ad-hoc mode and they run in userspace. The userspace is setup to be fully preemptable by the foreground application, so your background app (which needs to provide not only TCP support but also caching since the speed is so damned slow) is going to not work well, at all. The tethering is a default in the stock android ROM so re-enabling it doesn’t hurt the phone at all. It was designed to do that.
The first thing anyone is going to try to do is remove icons from the desktop by using longclick and drag it to the trashcan. This doesn’t work for the pre-installed stuff. The AVATAR icon is particularly annoying since, if you’re like me, the first thing you did was dump the movie to your home computer and format the card for a free 2GB extra storage for videos and pictures. If you’re a Linux box, you can mount both the 16GB internal drive and the 2GB SD card at once, windows users will have to play with “debugging over USB” to see both of these. (Don’t ask me how, I use Linux). The AVATAR icon will persist even with AVATAR not there, so now you’ve got that stupid blue cat on your desktop and it does nothing. There’s nothing to click on in manage applications under settings so you can’t get rid of the broken icon. WHAT NOW?
An important note: Any discussion about rooting the phone further in this post applies to the Samsung Vibrant (Samsung Galaxy S). You can hunt around the links for your particular phone if you’re interested in doing this but don’t put Vibrant stuff on your particular phone unless it’s a vibrant. Theres pre-compiled binaries here and they may or may not work on your phone. Do your homework, you’ve been warned. These links are good for Android 2.1.
The first link is pretty easy to follow. Download the zip, name the zip with the special name, reboot while holding down the “system factory reset” (which is really just pressing ESC or backspace at the GRUB screen for you linux people), and apply the update. These are all zip files, so you can open them and ensure there’s nothing you don’t want in there. In the case of the SGH-959 rootkit, it’s three precompiled binaries and precious little else. After applying this it does take a while to unpack it, so don’t flip out when it spends a good minute on the “S” screen. Remember, everything is JIT on this phone. The first time you run it, it takes forever. When you update the system, not only is it precompiled binaries and JIT code, but you can’t get to the system until it lays it out. Resist the urge to pull the battery. Also once Android 2.2 gets pushed out, this won’t work. I would defer that update until you get another rootkit. I have an RFC out to google and the development community asking if these are statically linked or not. If they’re statically linked, they will survive the Android 2.2 update. If they’re not, expect to have these quietly uninstalled or simply not work.
Now that you’ve got it, click on the superuser ninja and set it to always prompt you for superuser. Remember, while it seems like you’re adding functionality, this comes at the cost of security. You must protect root access from applications. If it seems like the app shouldn’t be asking for it, you don’t let the app run as superuser.
Now that you’ve got a rooted phone, you want a snapshot. Hop into the Market (if you don’t have a market icon, you’re using the phone before it’s fully unpacked), and look for ROM MANAGER by ClockworkMod. Install it. There’s a free version and a paid version. The paid version is fully insane and lets you run pretty much any Android build on your particular device. However, I just installed the free one because I’m just looking to make an image which has my goodies. The first backup will fail, don’t panic, just select “reboot phone” with the volume controls and hit power to reboot. Scroll down to “Manage and Restore backups” and select the one that failed, delete it. Notice on the first line that “Current Recovery” and “Last Recovery” should say ClockworkMod 22.214.171.124. Tell it “Backup Current ROM”. Give it a name like “Stock Rooted”. The phone will reboot and mess around for about 15 minutes. Now you’ve got a stock, rooted image you can restore to when/if Android 2.2 trashes your phone or you uninstall too much crap.
Now you want the wireless tether. Download the ZIP and put it on the root of your phones storage (the 16GB one, not the 2GB one). Hop back into ROM Recovery (clockwork) and click “reboot into recovery”. You’ll see the GRUB screen fly by and you’ll end up in the “menu + log” screen in clockwork. Note that they make flashing here a PITA so you don’t accidentally flash your phone by butt-dialing. Use volume up and down to select “install ZIP from SD card” (this is misleading because it’s the phones internal SD, nonremovable). Click POWER. Click CHOOSE ZIP. Select the ZIP. You’ll get to a screen that says something like “Do you want to do this” with about 20 NO options and one YES. Select YES. It’ll chug a bit and return you to the menu. The bottom of the screen should have the log text indicating a success. Menu out to the main screen and choose “reboot phone”. Again, wait 10 minutes while the phone gets raped by dickwolves or whatever it’s doing and it’ll come up. Don’t pull the battery. Under Settings, Wireless, you now have Mobile AP which lets your phone act as a router. Things will connect to it as a wireless AP, and they get routed to the web over 3G. This is a proper AP, it’s not ad-hoc, which means you can actually secure it. Ad hoc means you’re providing wireless services to anyone in wifi range.
Now you can delete the old backup and make a new one, or not.
To clean out the crap we’re going to install Titanium Backup. It will download and ask for root rights. You want to let it apply them and choose “remember”, the program will not function with it. The very first thing you do is click Problems? and choose “Yes, Do It”. This puts busybox on your host, which is like a lightweight LSB system. The busybox that seems to come with a lot of the rootkits is POSIX busybox, not GNU busybox. If this means nothing to you, you probably don’t need a rooted phone. If you know your tar options, this will vex you endlessly until you get the Titanium Backup busybox. Just trust me, you want it. Now click BACKUP/RESTORE on the top middle button, and tada, all the apps. Scroll down to AVATAR (for instance), click on it, choose UN-INSTALL. Do not uninstall any input or google utilities, your phone will not work and it will barf errors. In case this happens, jump back into clockwork and restore the backup. You have now gotten the AVATAR icon off your desktop. However, applications and application data are two different things. If you hop into settings, applications, manage applications, you’ll see something like com.android.movie.avatar. It won’t have a pretty icon or a nice name, so it’ll be obvious. Click on it and uninstall it from here too.
This is a good place to take a final look at the MyTouch (slide and not slide) from TMobile. The phone sucks. The ROM is terrible. When you get it, the phone reboots endlessly applying updates so you can… use the update manager to update it. However it doesn’t tell you this is what it’s doing. It just reboots. Over and over and over again until there’s a popup saying “Oh, there’s an update to droid, would you like to waste a half hour downloading it and another 15 minutes applying it?” Now do that twice, since it comes with Android 2.0. Also lose all your settings because it’s a fresh reload. Oh, and expect to have to update all the apps too since you click on something and it’s 10 versions behind the market. There’s nothing redeeming about the stock phone. If you go into the applications menu to manage applications, not only does it not present you with all the preinstalled crap, not only can you not turn on the live wallpapers, tether or fix the address book but the applications don’t have pretty names. They’re all listed as com.android.google.maps and similar. It makes actually managing the device a real PITA. The fault lays entirely with T-Mobile.
At this point you should understand how rooting your phone works, and how to remove the crap. Enjoy your rooted device.