Rooting My HTC G1

Why root?

I recently decided that I would "root" my T-Mobile G1 phone, thereby bypassing the normal security restrictions that keep me from accessing the Linux core of the Android operation system. For me, the main reason I decided to root was the limited amount of space to install applications on the G1. I had already begun uninstalling apps to make room for more and I believe the limited amount of free space caused the Android operating system to obsessively clear the cache. The small amount of cache and the process of clearing it seemed to make my phone slower than when I first purchased it. After doing some research, I found that with most custom Android ROMS, I could move the applications to the microSD card to free up the internal flash storage. Rooting also allows you to run applications like Wireless Tether for Root Users or Backup for root users.

Another nice benefit of rooting my phone was that the custom Android ROM I was going to try, CyanogenMod, increased the clock speed of the processor from 384 MHz to 528 MHz. This is not technically overclocking however, because the processor was designed to run at this speed and was most likely underclocked to increase the battery life and to prevent damage that may be caused by overheating. While I was generally pleased with Android, I felt it ran slower on the G1 than it should. When I found out that T-Mobile's Android was running slower than what was stated in the phone's technical specifications, I felt cheated.


Things to know before you root

Please note that I have included a glossary of terms at the end of this article.

Rooting your phone will almost certainly void your warranty and possibly ruin your phone permanently (also known as bricking your phone). While the process is fairly simple, if you do manage to screw up your phone you will be on your own to find out how to fix it from forums like xda-developers.

This is *not* writing a guide on how to root your phone, but rather only information about the process I have picked up from my research. Please look up a guide that is specific to your phone as the rooting process may be different for you. That said, I used a rooting guide on Android And Me. Here are a few tips that should apply to rooting any phone:

  • Backup all of your data first - you will need to wipe your phone as part of the process
  • Read the instructions twice, at the very least
  • Make sure the ROM you want to try is compatible with your phone
  • Download the files over a reliable internet connection and verify the checksums if you know how
  • Make sure your battery is fully charged
  • You will most likely want to do a factory reset (wipe) before flashing the new ROM (can be done from CyanogenMod Recovery)


The dangers of SPLs

SPL stands for Secondary Program Loader, which when combined with the IPL gives you a complete bootloader capable of launching an operating system like Android or running diagnostic tools. As far as I have been able to determine, the SPL is specific only to HTC phones and is not directly related to Android. As far as I can tell, it may be possible for a ROM to include a SPL (even though I have not seen this so far), so be careful to ensure that the custom ROM you want to use is compatible with your phone. On HTC phones, there are basically two types of SPLs: soft which is software based and resides on the external storage and can co-exist with the original one on the phone and hard which permanently replaces the one installed in NAND memory. To my knowledge, all SPLs on Google Android phones are of the hard variety, but someone went and confused things by naming one of the custom SPLs "HardSPL".

Flashing a different SPL can free up more space on your internal flash memory or it can give you additional functionality, such as the ability to restore flash nand dumps. There are at least four different SPLs for Android phones: the original HTC SPL, Engineering SPL, HardSPL, and Danger SPL. The original HTC SPL that comes on the phone has a sort of rainbow red-green-blue look. The Engineering SPL was released on the ADP1 and supported the fastboot protocol that allows users to flash NAND dumps. HardSPL is a hacker modified version of the Engineering SPL that can flash NBH files without checking the carrier ID. Danger SPL was created by Haykuro to repartition the internal flash memory to allow the HTC Hero ROMs to fit on the HTC Dream, but is otherwise similar to HardSPL (I believe) and can run non-Hero based ROMs. Danger SPL does this by getting rid of the /cache partition that doesn't appear to be used for anything other than OTA updates. Danger SPL requires radio firmware or it will brick your phone.

Now that you know all about SPLs and what they do, you probably don't have to do anything. Flashing a SPL is what most people screw up and there is a very good possibility you will brick your phone if something goes wrong. CyanogenMod worked just fine for me with the original SPL that came with T-Mobile's Android version CRB43, but follow the instructions for rooting your phone and installing your ROM. If you want to attempt to flash a new SPL even though it is not required by your ROM, be sure to do the research to figure out which one you want so you only have to do it once. For more information, check out this general SPL info on the wiki and this Android specific SPL thread.


A radio without music

You may see people talking about the phone's radio when you look up information on rooting. They are not talking about a FM radio that plays music but rather the chips that control the wireless functions of the phone (3G, wifi, bluetooth, GPS). Usually when most people mention it, they are actually talking about the firmware that controls these chips. Different ROMs and recovery partitions may require a specific version of the radio firmware to function properly. There is the possibility that you may brick your phone if you try a different version than required. Radio firmware updates can give the phone improved cell reception, call clarity, and better battery life and may be included inside OTA updates (and presumably custom ROMS as well). Luckily for me, CyanogenMod requires the same version of the radio firmware ( as what was already on my phone from T-Mobile's Android version CRB43, so I didn't have to do anything.


The process of rooting

I used a process known as 1-click root, where you run a program on your phone that uses Bluetooth to exploit a Linux kernel vulnerability that allows you to run anything as root. The precompiled .apk Android app does all of this for you and includes CyanogenMod Recovery 1.4, which then allows you to flash a custom ROM. There is a six minute video on Youtube where you can watch the entire process. After CyanogenMod Recovery was installed, I turned off the phone, held the Home and pressed the Power button to boot into recovery mode, and chose the "wipe data/factory reset" option. I then chose "apply any zip from sd" to flash CyanogenMod to my phone and rebooted into glory. The first boot does take a long time, but be patient and do not mess with it, it will come up eventually.

Before I rooted, I used an application to back up all of my apps to my microSD card, so I began the process of reinstalling them. After I was done, I found out that when you install an application in that way, it does not show up in the Android Market so you won't be notified of updates. Since I wasn't planning on hopping from one ROM to another, I decided to reinstall them all from the Android Market. I also installed the CM Updated that will automatically check for and install new updates to CyanogenMod since I could no longer receive OTA updates. I have since received several CyanogenMod updates and they have all installed successfully.



CyanogenMod comes with code that will automatically put your applications on an ext2, ext3, or ext4 partition, so I ordered an 8GB microSD card with USB reader off of I then used GParted to create a 512MB ext3 partition for my applications and made the rest a fat32 partition for files. I copied the files from my old 1GB microSD card that came with the G1 and then put the 8GB card in my phone. Nothing really seemed to happen and I still only had 9MB free on my phone. I figured that the phone needed to be rebooted because it couldn't transfer the applications while they were in use, and this turned out to be correct.

You can also create a Linux swap partition on your SD card that Android can use as virtual memory, but it will reduce the life of your SD card due to memory wear. I personally didn't do this because I don't want my SD card to crap out on me, especially since I now have all of my applications installed on it and my phone is most likely unusable without it.


Final thoughts

Overall, I am quite happy with speed boost and increased storage space for apps. The fact that I have some parts of Donut before it is released is only icing on the cake, or in this case sprinkles on the cupcake. The power widget is nice and so is the "app fuel gauge" which tells you what applications are using the battery the most. The only real worry I have is Cyanogen will quit updating his custom ROM and I will have to do all of this again. Hopefully by that time I will qualify for an new Android phone that will have one of the 1GHz Snapdragon processors and plenty of internal memory thereby taking away the main reasons I wanted to root in the first place.




Glossary of terms

  • ADP1 - Android Dev Phone 1, the first SIM and hardware unlocked phone based on the HTC Dream that is targeted to developers and sold by Google.
  • Brick - To render your phone unbootable or otherwise useless for anything other than a paperweight.
  • Donut - A code branch of the Android operating system that follows version 1.5 Cupcake.
  • Firmware - Software that controls hardware. Pretty much the Linux device drivers that run underneath Android.
  • Flash Memory - There are two types: internal flash memory called NAND that is built into the phone and external flash memory which is the microSD card.
  • HTC Dream - The HTC codename for the phone that became the T-Mobile G1 and the ADP1.
  • IPL - Initial Program Loader. The first part of the bootloader that loads the Android operating system and initializes the phone's hardware.
  • NAND - The internal flash memory that holds the Android operating system and data.
  • OTA - Over The Air. T-Mobile sends Android updates over their wireless network, but you will not receive them if you are using a custom ROM.
  • Radio - The chips that control the wireless (3G, wifi, bluetooth, GPS). Typically used to describe the firmware that controls these chips.
  • ROM - A precompiled version of the Android operating system that can be flashed to a phone.
  • SPL - Secondary Program Loader. The second part of the bootloader that loads the Android operating system and initializes the phone's hardware.