Manually updating an Android rom

As I mentioned in last month’s post Rooting Someone Else’s Droid, I set up my sister-in-law with the rooted rom Cyanogen 7 Release Candidate 4 on her Droid. Unfortunately, recently it started acting buggy on her. One of the things I advised her to do was repair permissions. Another was to make a backup and then install the latest stable rom (which, as of this writing, is Cyanogen 7.0.3).

If anyone else is remotely supporting a rooted Android phone user and would like a screenshot-laden tutorial on the update process, here it is.

The first thing you need to do is download the latest stable rom from the Cyanogen website that is appropriate for your phone model (this assumes you’re using Cyanogen—if you’re using another rom, obviously you’d download the latest version of that other rom). Since you’re upgrading and not install a rooted rom for the first time, you don’t need to download the Google apps zipped file. Also, be sure not to unzip the .zip file after you download it. Just keep it as is.

When it’s downloaded, plug in your phone and copy the .zip file to the top-level directory of your mounted MicroSD card. In other words, it should not be inside of a folder on your phone’s storage.

After you’ve copied it over and turned off USB mass storage, you can begin the backup and update process. Now, I know Rom Manager comes with the ability to backup and update from within the rom, but I recommend the manual way outlined here, because there’s no risk of you trying to update files that are currently in use. There also may be some features that are available for only the paid version (which you may not have) of Rom Manager.

Open up Rom Manager, which you should have already installed if you’re using a Cyanogen rom. Otherwise, you can easily install it off the Android Market.

Select Reboot into Recovery

Tap OK

When your phone reboots, use your little trackball or whatever means you have to move the highlight up and down until you’ve reached backup and restore and then press the trackball or selection button to proceed.

Select Backup

Wait for it to backup. This could take several minutes. Be patient.

Now that you’ve backed up, go ahead and select install zip from sdcard

Select choose zip from sdcard

Find the file. If it’s a Cyanogen rom, it’s usually called update-cm-[version number-phone model]

Confirm with Yes

Wait for the update to install

When it’s done installing, press the Back button to get back to the main menu. Then select reboot system now

Then you’re good! You have an update to the rom, and you also have a backup in case, for some reason, the update is screwy.

Why people get Nexus phones: I rooted my MyTouch 4G after less than one day

Ditching the MyTouch 3G for the MyTouch 4G
My first smartphone was the second Android phone released—the original MyTouch 3G. Not the Fender. Not the 3.5mm headphone jack. The original. From the beginning, it was a pretty crappy phone. I mean it did basic smartphone things but the touch responsiveness was poor (you really had to press into the screen to get it to respond), and the 192 MB of RAM meant it took an extra couple of seconds to do anything. Angry Birds is basically unusable on that phone. So after a year and a half, I’ve been dying to upgrade.

For a while I was considering the MyTouch 4G, the Nexus S, and the (at the time upcoming) Samsung Galaxy S 4G. The Nexus S definitely appealed to me for being pure Google Android. No Zip Whiz bang my head non-Sense overlay. At the same time, it did, in fact, feel like cheap plastic. Its screen was a fingerprint magnet. And it was still 3G speeds, which is not that big a deal now, but as the T-Mobile network keeps growing, (what they call) 4G will be something I want to take advantage of. The Samsung Galaxy S 4G had potential but it also felt a bit light, and it had no flash on the camera and less internal storage than the original Samsung Vibrant.

I had heard quite a few bad things about the MyTouch 4G, too, though. It’s ugly. The speakerphone sucks. The battery life sucks. There’s too much bloatware and trialware. After futzing around, I finally went with the MyTouch 4G. Yes, I know there are crazy dual-core phones right around the corner, but Angry Birds was calling me, and I had to answer. Besides, the MyTouch has 768 MB of RAM. That’s four times what my old phone had.

HTC Sense on the MyTouch 4G: unbearable
I’d tried Swype before on the MyTouch 3G, and I was not enamored with it. It takes too long to drag my finger over every letter. I can use the Android regular autocomplete suggestions after two or three pecked letters, and it’s much faster and takes less concentration. I thought I could just select the regular Android keyboard instead of Swype. I thought Sense may be heavy but I can use ADW Launcher instead. I thought the bloatware is there but I can just not use it. I don’t need to actually remove it. I was wrong on all counts. The version of Android the MyTouch 4G comes with is terrible. I couldn’t stand it.

First of all, the choices of keyboard are Swype, Touch Input, and Dragon Dictation. If you change the keyboard from Swype to Touch Input, you don’t get the regular Android keyboard. Instead you get basically the same Swype keyboard but with no Swype. This keyboard is annoying because the autocomplete suggestions either are not there at all or are selected for you automatically. I don’t want the keyboard telling me which of the suggestions I want. They are suggestions only. I’ll decide for myself which suggestion is best. I tried to install the stock Android keyboard manually, but it would force close every time I tried to actually type something. After Googling, I found that force-close was a common problem.

ADW Launcher allowed my home screen to look relatively normal, but the app drawer and all the system settings interfaces still looked overly bubbly and cartoony.

And the bloatware was extremely excessive, to the point where I would have to basically have an iPhone-like home screen littered with all my app icons, since sifting through all the app icons in the drawer and skipping over the bloatware would take too much scrolling. Never mind that it was difficult to scroll left or right without accidentally activating one of the icons I was trying to scroll past.

Also, the so-called “Genius button” is basically useless and slow. I just wanted my normal search button back.

If I didn’t know anything about rooting, I’d have just returned the phone for a refund. This OS was godawful.

The rooting process: harder than before
When I rooted the MyTouch 3G, it was easy to find instructions that worked, and the instructions weren’t that intimidating. Not so this time. I spent a good chunk of the night and then the next morning doing trial and error and a lot of Google searching to figure out what really worked. The instructions on the Cyanogen wiki left me trying to adb and being told permission was denied. The Android SDK didn’t include adb at all initially. Some rooting instructions said to use Visionary to temproot. Others said specifically not to.

For the curious among you, here’s what actually worked for me. I’m using Ubuntu Linux, but similar instructions probably apply for Windows and Mac OS X.

Download the Android SDK and make sure adb is installed
Go to the Android SDK website and download the appropriate SDK. I’m using Ubuntu so I downloaded the Linux one. There is one for Windows and one for Mac. I also installed Java. Specifically, I installed the sun-java6-plugin package, but I’m not sure if one of its dependencies was all I needed.

Then I right-clicked the SDK download and selected Extract here. Using the terminal, I changed to the tools subdirectory and did ./android and chose to update all and that installed adb. Once I did that, I was able to ./adb whatever commands I needed.

Prepare your phone
Install Android Terminal Emulator, ROM Manager, and VISIONary.

Make sure USB debugging is on. Turn off the fastboot option in settings.

Download gfree and extract its contents into the android-sdk-***/platform-tools/ directory.

Doing the actual rooting
The full instructions (including a whole bunch of disclaimers and instructions for unrooting later) are on Xda Developers. Here are the highlights, though.

  1. Plug your phone into your computer.
  2. Using the Android SDK and adb, run the command
    adb push gfree /data/local

    (I had to actually run

    ./adb push gfree /data/local

    to get it to work).

  3. Unplug your phone.
  4. On your phone, run VISIONary to gain temporary root. To verify this worked, scroll through your list of apps. The SuperUser app should be in that list.
  5. On your phone, open the Android Terminal Emulator application and type

    to get root privileges.

  6. After confirming root privileges is okay, type
    cd /data/local

    and then

    chmod 777 gfree

    and finally

    ./gfree -f
  7. After a bunch of terminal output, it should be done.
  8. Turn off your phone. Then while holding the volume down button, power up again. Double-check that s=off and the bootloader version is 0.86.0000. If so, it worked! You’re rooted.
  9. Reboot and run VISIONary with temporary root but check to set the system to r/w afterwards. If that works, then run VISIONary to set permanent root.

Install the Cyanogen rooted ROM

  1. Download the latest Cyanogen ROM (for me, that was Cyanogen 7.0.0 RC 1). Optionally, also download the corresponding Google proprietary apps. Put these in the top-level directory of your phone’s MicroSD card.
  2. Launch up the ROM Manager application.
  3. Click to install the ClockworkMod Recovery.
  4. Once that’s successfully installed, click to reboot into ClockworkMod Recovery.
  5. Once booted into recovery mode, select Wipe data/factory reset. Then select Wipe cache partition. Then Install zip from sdcard and select the Cyanogen ROM. Then Install zip from sdcard and select the Google Apps if you want them.
  6. Finally, select Reboot system now to boot into the Cyanogen rooted ROM.

Gingerbread is sweet
Now I get the appeal of the Nexus phones. Maybe the Nexus S doesn’t have cutting edge hardware specs. Maybe the plastic feels a little cheap. Maybe it’s tough to see the screen in the sunlight. Maybe it’s a fingerprint magnet. But the vanilla Android is much easier to use than HTC Sense + Swype + bloatware. I’ve got my normal keyboard back. I’ve got not too many extra applications. The “Genius button” has changed back to a normal search button.

Thank you, Cyanogen team! I donated to you only once, but I’ve gotten more than my money’s worth back.

Found a great theme for Cyanogen Android mod

After having rooted (or “jailbroken”) my T-Mobile MyTouch 3G, for a while I was using Cyanogen’s Android mod until it got the cease-and-desist letter from Google. At that point, Cyanogen began working on a legally conservative version of his mod, and I wanted something to use in the meantime, so I switched to Dwang’s donut mod. Dwang’s mod is super speedy and great. Unfortunately, it is good only for the short-term… until Google sends Dwang a cease-and-desist letter.

So after Cyanogen released a stable version of the Google-compliant rooted Android mod, I wanted to give it a shot. It isn’t quite as speedy as Dwang’s mod, but it’s usable, and I like that no lawsuit is going to suddenly bring it to an end (it has long-term sustainability).

So I then went on a quest to find a good theme for this new version of Cyanogen’s mod. I tried out a Ubuntu theme and a Hero theme, and I looked at a bunch of other themes that appeared to be too gaudy for me.

Finally, I stumbled upon the Little Big Planet theme. I remember my wife playing this game on the PS3. At the time I thought the little sack guy was cute in a demented sort of way. So I flashed the theme, and I like it. For those of you who are curious (and who do not want to create a login for the XDA Developers forum just to see screenshots), here is what the theme icons look like:

I think I can live with this theme for a while.

Why I’m not a fan of Google’s cease-and-desist letter to Cyanogen

Those of you who follow my blog or are Ubuntu Forums members may know that I often come to the defense of Google. There is a lot of Google-bashing out there. It seems to now be the cool thing to do. I almost laughed out loud when there were blog posts framing the Apple rejection of the Google Voice app as “David and Goliath” with Google being the Goliath!

I generally like Google because Google generally favors open source and open standards, and even does quite a bit of funding for open source. They have not, in the past, engaged in any of the vendor lock-in practices that Microsoft and Apple have. It is annoying if you have a Hotmail account and can’t use a regular email client like Thunderbird with it. It’s annoying if you can’t install a Google Voice app because Apple tells you what can and cannot be installed on your iPhone (and, unlike in Android, the iPhone doesn’t have an override option to say “I understand the risks of installing this third-party unapproved app but just want to do it anyway”).

I have a rooted Android phone. The term rooted in this case is a bit misleading. It isn’t a regular Android installation that has somehow been modified to allow me root access (so I can install apps like wifi tethering). It actually is a special rooted Android ROM I had to replace my regular Android installation with.

The folks who make these ROMs are volunteers who just want to make the most of what Google has advertised as an open platform. One of the most famous is a developer who goes by the nickname Cyanogen. I tried a few ROMS and Cyanogen’s was definitely the best.

He thought he was being careful. He thought (I’m paraphrasing here), “Well, I’ve modified the open source components of Android. The Google proprietary binaries (YouTube app, Google Maps app, GMail app, etc.) I haven’t modified. I’m redistributing these only to people who already have Google-branded phones. It shouldn’t be a problem.”

Well, apparently, he was wrong. Google thought it was a big problem, despite the fact that only a few tens of thousands of people were using Cyanogen’s ROM. Google sent him a cease-and-desist letter, claiming he did not have the right to redistribute Google’s proprietary apps in a modified ROM.

Is Google within its legal right to do this? Certainly.

Is this a good idea for Google to do this? Absolutely not. Here are the reasons why:

  • If you look at the billions of people in the world and the millions of Android phone users, only a comparatively small number of people were using Cyanogen’s ROM. This cease-and-desist letter actually brings only more publicity to ROMs (which will continue to exist but now will have to go underground).
  • Google is pissing off the very people who have been the most vocal proponents of Android. These are people who can not only help develop the platform software-wise but can advocate for friends and family to buy Android phones in lieu of iPhones or Blackberries.
  • Even though what Cyanogen was doing may have been legally wrong, it was morally right. He was not stealing money from Google or hurting Google’s business model. Google does sell those “free” apps to phone manufacturers. But Cyanogen was creating the mod specifically for phones that had regular Google Android on them anyway.
  • The real clincher for me is the fact that Google Android has been touted by Google as open source. Yes, technically the OS itself (which is based on a Linux kernel) is open source, but Cyanogen and some other ROM developers have pointed out that the way Android is, it’s basically useless without the core apps (Android Market, Google Contacts syncing, etc.).

My hope is that, for Google PR’s sake, Google undertakes the following follow-up actions:

  • Offer Cyanogen a job working for Google Android
  • Work on releasing a barebones Android framework that is completely open source but also at least basically functional.
  • Provide a way for Android users to actually root their phones without replacing the standard OS with a custom ROM. The wifi tethering app, for example, is hosted by Google. Well, what good is the wifi tethering app from Google if it can’t be used? What good is an “open source” operating system if it requires proprietary components to function?

I haven’t completely turned against Google. I do think they’re still doing a lot of good work, and they’re still more open than Microsoft and Apple. Nevertheless, this incident has left a sour taste in my mouth, and I can’t really enthusiastically recommend Android phones to people now. I like Android still personally. But it no longer has the same open source appeal it used to. So if a friend or family member asks if she should get an iPhone, I’m just going to have to say “Why not?”