HOWTO unlock your Nexus One and turn it into a 3G modem

I've just successfully rooted and flashed two Nexus One phones, so I thought I'd write up the process and give you some guidance in case you're considering doing the same. Once you've rooted and flashed your Google Nexus One Android phone, you can use it as a "tether," sharing its network connection with your laptop and other devices. There are non-rooting ways of doing this, involving installing an app on your computer and a complementary app on your phone, but these seem clunky to me (on the other hand, these apps, such as Proxoid — search the Android Market for it — don't void your warranty, while unlocking your Nexus One does).

Mostly, I followed these instructions, which are very good, but assume a certain level of foreknowledge, and could have been better organized. I've adapted them to create the HOWTO below.

Some notes before we begin:

1. Once you install a jailbroken version of Android, there's a chance you will have you manually update your operating system in future, rather than receiving over-the-air updates from Google.

2. This process wipes your phone. You can back up most of your stuff to your SD card (more on that later), but not everything, and you'll have to spend some time getting everything back the way you like it

3. If you do this wrong, you will brick your phone, rendering it useless. And you will also void the warranty. Be warned.

4. I'm not an expert. This worked for me, it might not work for you. I followed several recipes around the net in order to derive these instructions, but I didn't write the underlying HOWTOs. For all I know, this is an incredibly stupid way of doing this (on the other hand, it worked twice).

OK, with that out of the way, let's start with some prep-work:

1. Back up your apps and data. I used MyBackupPro, which claims that it backs up all your apps and data to your SD. It costs $4.99 in the Market. It took about three minutes to do the backup, and about ten minutes to do the restore. There were some small flaws in the restore:
* Three of my apps (one paid, two free) were not reinstalled and had to be downloaded afresh from the Market
* The wallpaper was incorrectly set, and I had to re-set it by hand
* There was a scary warning that "too many contact deletions" had been requested. However, all my contacts are present on both the phone and in Gmail.

2. Download the necessary files:

* Fastboot is a program that is used to unlock your Android phone's bootloader. You can download it here (a ZIP archive, found here, containing apps for Linux, Mac and Windows). Download and unzip the program. In Linux and MacOS, you need to open a terminal, navigate to the directory containing the uncompressed files (for me, it was "cd ~/Desktop/fastboot") and then run "chmod +x fastboot*". I don't know much about Windows, but it looks like this step isn't necessary for Windows users.

* Download the recovery image (found here, and I recommend looking for yourself to see if the file has been updated since this post). After the file has downloaded, rename it "Recovery.img" and put it in the fastboot directory you created above.

* Download CyanogenMod-5 (found here, and I recommend looking for yourself to see if the file has been updated since this post). This is a new version of the Nexus One firmware. Download it, but do not unzip it. Instead, load it on a mini-SD card (you can use the card that's presently in your phone).

* Download Google AddOn (found here, and I recommend looking for yourself to see if the file has been updated since this post). This contains the Google Apps that ship with the phone (they are not included in CyanogenMod for legal reasons). Load this onto the same mini-SD that you put CyanogenMod on.

3. Unlock your bootloader

* Connect your phone to your computer with the USB cable
* On your Nexus One, go to Settings -> Applications -> Development and tick "USB debugging"
* Shut off your phone
* Holding down the trackball, press the power key. Keep the trackball depressed until you see a text-based menu with three skating androids below it
* Return to the terminal window that you used in step 2 (to run "chmod +x fastboot*"). Type "sudo ./fastboot-linux oem unlock" and enter your password (Mac users will type "sudo ./fastboot-mac oem unlock" — sorry, I don't know what Windows users should do here).
* Your phone will display a screen that informs you that you are about to void your warranty. If you want to go through with this, press Volume Up to select Yes, and then press the Power button to confirm

4. Install the new firmware and OS.

* Your phone will reboot. Skip past all the setup screens. Once you have the home screen, again go to Settings -> Applications -> Development and tick "USB debugging"
* Shut off your phone.
* Holding down the trackball, press the power key. Keep the trackball depressed until you see a text-based menu with three skating androids below it
* Return to the terminal window from step 3. Type "sudo ./fastboot-linux flash recovery Recovery.img" (Mac users will type "sudo ./fastboot-mac flash recovery Recovery.img" — sorry, I don't know what Windows users should do here)
* A moment later, the command prompt will return to the terminal, indicating that the firmware has been flashed
* Press the power button once. The highlighted blue text should now say HBOOT. If that doesn't work, try holding the trackball and Volume Down buttons while you press the Power button
* Using the trackball, scroll down to "wipe" and press the trackball to select it and again to confirm. Wait until the wipe is complete
* Using the trackball, scroll down to "Flash zip from sdcard", and press the trackball
* Using the trackball, select the CyanogenMod update from the list; it will be a zip file that begins "update-cm". Press the trackball again to confirm. Wait until the flash is complete
* Scroll down to "Flash zip from sdcard", and press the trackball again
* Now select the Google Addon file; it will be a zip file that begins "gapps-passion", and press the trackball again to confirm. Wait until the flash is complete
* Now use the the trackball select the first option (Reboot system now) and reboot the phone

5. Reinstall your data and apps

* Your phone will reboot into a factory-default-like setting. Set it up as normal, with your Google username and password. Once it is set up, return to the Market and download a fresh copy of MyBackupPro
* Once MyBackupPro is installed, recover your apps and then your data and reboot the phone again
* At this stage, my phone was more or less as it had been when I started. All told, the exercise took about 30 minutes. I then spent another five minutes recovering the apps that the backup missed

6. Tether your computer

* Connect your computer to your phone using the USB cable
* Go to Settings -> Wireless & networks and check off "Internet tethering"
* My laptop's OS (Ubuntu Linux Karmic Koala) immediately recognized that the phone was connected and supplying Internet access. It configured itself. I disconnected the power on my DSL router to ensure that the only place the network service could be coming from was the phone and confirmed that my browser, mailer and ssh all worked over its 3G connection. I don't know what's involved in getting this to work on the Mac or Windows.