So, you have a Motorola Droid and you've been hearing about all sorts of interesting things that you can do with it, things that aren't necessarily "approved" by our friendly overlords at Verizon. Maybe you're thinking about installing that CyanogenMod thing you keep hearing so much about, but you don't know exactly where to look for guidance and you keep finding a bunch of junk info online that isn't particularly helpful. I hope this guide will help.

Most of the "guides" for rooting the Droid involve manually downgrading from 2.1 to the older 2.0.1 (including radio baseband downgrade), then rooting from within 2.0.1, then flashing a newer system and radio baseband to get back up to 2.1. This is silly, in my opinion. A much better method is to directly flash a rooted "stock" 2.1 image onto the phone with no baseband changes, and then install the alternative 2.1-based build of your choice in a smoothly automated fashion from within the rooted-stock 2.1. So, let's do that.

I have made a few useful notes on the Android system architecture and on CyanogenMod, which I've included at the end. If you're a person that thrives on in-depth "big picture" information, skip to the end and read those bits, then come back and proceed.

The Very Short Story of what we'll accomplish:

  1. Overwrite stock system with modified stock system using RSD Lite.
  2. Install modified su for full superuser (root) permissions using SPRecovery.
  3. Install Clockwork Recovery using RomManager.
  4. Install CyanogenMod in an automated fashion using RomManager and Clockwork Recovery.
  5. … steal underpants?
  6. Profit!

Without further ado… here is Porter's Guide for Root and CyanogenMod on the Motorola Droid.

  • Note:  This guide is loosely based on radar3d's "How-To Root your stock 2.1 Droid" guide on DroidMod, but I've simplified it significantly and added a bunch of CyanogenMod-specific info, and in the process hopefully improved the readability. Thanks to radar3d for the original info. The link has some screenshots that may be helpful to you, so refer to it if needed.
  • Note:  This assumes use of Microsoft Windows for the first steps, because RSDlite (the Motorola service utility) only runs on Windows currently. Everything else in the guide is platform-agnostic. I'm a die-hard Ubuntu user on the desktop, so using Windows was painful for me too. Solidarity, folks… we'll get through this somehow!
  • Note:  This will wipe your phone, so you will need to reinstall your apps. Sorry. You have good backup options available once you're running CyanogenMod, but you really don't on standard Android. So make a list, or use AppBrain and copy the list from there, if it's important to you.
     

Step 1:  Preparation

Step 2:  Loading Stock 2.1 (with root)

  1. Connect the Droid via USB to prompt the drivers to load. Once fully connected/loaded (for Windows' benefit), disconnect again and power off the Droid.
  2. Open RSDlite and select the sbf file you downloaded.
  3. With the Droid keyboard open, hold the Up direction on the d-pad and connect the USB cable. The phone should power on by itself.
  4. Continue holding the D-pad until you see
    Battery ok
    OK to program
    USB
  5. Then in RSDlite, you should be able to see the Droid in the connected devices list that occupies the bottom half of the interface. If not, check the settings, I had to switch the DeviceId mode to "First Come First Serve" for it to detect and use my Droid properly. Also, you should be able to see populated information in both the "device" and "file" panes on the left and right of the top half of the interface.
  6. Click Start and the new 2.1 image will transfer to the phone. The phone will then reboot on its own.
  7. Close out of RSDlite once the phone reboots, and IGNORE the dire warnings about your device catching on fire if you close the window. RSDlite just gets confused for some reason when a connected device reboots, it's nothing to worry about. Also, don't worry about backups now, we will do that soon.
  8. Rename that 20100429h_update.zip file that you downloaded to update.zip and place it on the root of your MicroSD card. Once installed, this will give us superuser permissions, aka "root".
  9. Turn off the Droid and then reboot while holding the x button on the keyboard until SPRecovery starts.
  10. Scroll down and select Install. Then click Allow update.zip from sdcard. Then click Apply update.zip from sdcard. The options may have changed slightly in the new SPRecovery, but you get the idea. Select Reboot to continue.
     

Step 3:  Installing RomManager, flashing ClockworkMod Recovery, and upgrading to CyanogenMod
(this is where we fully diverge from the guide that I linked earlier)

  1. Add your primary Google Account to the phone per the normal method – this is so we can get into the Market. There's a manual way to do this install, but the Market makes it much simpler so we'll do it that way.
  2. Definitely turn on WiFi, don't rely on the 3G network… there's lots of data coming shortly.
  3. Search for RomManager on the market (vendor is "ClockworkMod") and install it. Don't worry about the Premium version now, that's just a license anyway… though you will probably feel compelled to purchase/donate later!
  4. Open RomManager and flash the latest ClockworkMod Recovery (very first menu option). This is a more advanced recovery-partition utility than the SPRecovery you used earlier, and replaces it. RomManager may prompt you to do this automatically.
  5. Now click on Download ROM. Then click CyanogenMod. Select the latest, which at the moment is 5.0.8 but may be 5.0.8.1 etc by the time you do this. Make sure you check the box for Google Apps when prompted. CyanogenMod and the Google Apps package will begin downloading to your SD card in the background.
  6. IMPORTANT STEP!! - RomManager will prompt you automatically once the ROM is downloaded. Make SURE you check both the BACKUP and WIPE options. Backup is important for you in case of any trouble, it will store in the universal Nandroid format. The Wipe is important for system health… leftover cruft from your previous (stock) system can cause really bizarre errors and behavior, so do yourself a favor and wipe when installing.
  7. The system will reboot into Clockwork Recovery automatically and begin automatic backup of the system to the SDcard in Nandroid format. Nandroid is a universal format that can be used to restore your system to pre-CM form using any of the various recovery tools available.
  8. After the backup, Clockwork will automatically install the CyanogenMod system and will reboot.

Congratulations! You now have CyanogenMod on a Motorola Droid.
 

Step 4:  Post-Install Stuff:

  • RomManager - CyanogenMod comes with RomManager preinstalled but it is rarely the fully current version. Always go to Market and download the latest one as the first step after install. This will bring RomManager current and prompt to reflash Clockwork Recovery again, which is necessary to tie the two together for seamless operation.
  • Kernel Stuff - To maximize performance and battery life, even for very conservative users, I recommend the use of the optional bekit low voltage kernels combined with the SetCPU utility to manage the behavior of the native linux clock governor. The bekit kernels are easily installed using RomManager, they're found under Download ROM -> CyanogenMod -> bekit Kernels. I happen to use the bekit 800mhz 5-slot Low Voltage kernel, myself, though you may have good results with one of the others. Every Droid is apparently slightly different in terms of what it can be overclocked to reliably, and at what voltage, but I've been led to believe that the 800mhz low voltage 5-slot version works well on all of them, so it's quite safe.
    The SetCPU utility can be purchased from the Market (about $2 I think?) or can be downloaded for free for manual install from the XDA Developers forums. You'll need a file manager utility like Astro to install it manually, or use adb from the command line if you know how. It's worth mentioning that you shouldn't install a high-clock kernel and try to depend on SetCPU to keep the speed down for you, because when you attach the phone to a full-current wall charger the kernel will automatically bump to autoclocking between the highest three speeds available.
  • Radio Baseband - There are new radio baseband versions available (from Verizon Froyo tester phones) that work well for CyanogenMod 5.0.8+, and will be required for Froyo anyway. The standard radio baseband on Droid 2.1 is C_01.3E.03P. You can upgrade via RomManager to the latest, but you will need to do it in two steps, first to C_01.41.00R and then to C_01.43.01P. Don't be alarmed if one of the install packages gives you an error, it's just a packaging thing from another project. Installing the newest baseband improves connection stability and voice quality, but will require you to reactivate the phone with Verizon each time (by calling *228, then option 1).
  • Launchers - The stock launcher (GUI shell, gives you the home screens) in CyanogenMod 5.0.8 is called ADW, which is a separate project that's available as an installable launcher for other builds, including stock. It is essentially a fully customizable version of the stock launcher, allowing you to customize the number of home screens and gives all sorts of fine control over specific UI behavior. There are other launchers that have significant merit (such as LauncherPro, which I was using on CM builds prior to 5.0.8) but now that ADW is fully integrated in CM it's really a no-brainer.
  • Tethering - Wireless Tether used to be integrated by in CM default, but since the developer is improving the tool all the time, and it runs as a standalone app anyway, it's now available as a free app on the Market. Install it and enjoy. USB and BT tethering is integrated into CM as part of the system but there's a small bug with permissions on the feature that won't be fixed until 5.0.8.1. Instead, you can install the "app" version of the feature directly using the .apk from the developer's project site. It works perfectly and provides native USB "ethernet" emulation, which will be detected and used automatically on most PC platforms. Turn on "Unknown Sources" in the Settings -> Applications menu and install using a file manager (like Astro) or from the command line using adb. Both Wireless and Wired tether apps provide full NAT and DHCP for connected devices.

I'm sure there's more, but I can't think of it at the moment. Let me know if you have any questions! And best of luck.
- Porter

 

APPENDIX:

Brief notes on Android system architecture:

This bit was important for me to understand so I figure it might be useful for you as well. Android has a rather interesting system architecture, involving a fairly standard linux filesystem structure on the primary system partition (as one would expect) as well as a hidden recovery partition that contains a full original copy of the base system for critical-recovery purposes. The "userspace" filesystem view is locked to the user's home folder, it's essentially a fairly standard linux chroot jail that functions as the "contents of the phone" from the user's point of view. Basically, what you see on the phone's memory from the normal run state is the contents of your Home folder. On the Motorola Droid the SDcard itself is actually used as the user's Home folder, but on other phones (like the HTC Incredible, for example) the user Home is on internal storage and the SDcard is treated simply as removable storage. Up-level from the user folder, there is the rest of the system partition (root filesystem space) which is normally both invisible to the user and read-only. You can see the full filesystem from some File Explorer apps, but you can't modify it.

There is a "recovery" boot mode, that is analogous to a BIOS-level system restore app. The recovery mode can restore the Android system completely from the recovery partition in the event of a major problem, or optionally can overwrite the recovery partition and/or system partition from a downloaded update. This is essentially how OTA upgrades work, the system update utility (in the Settings menu) compares the OTA-available image to the hidden recovery image, and downloads the new version to the SDcard if applicable. System updates are always saved to the root of the user's home folder (sdcard on the Droid) as "update.zip", which you'll also see used repeatedly for manual loading of just about anything you can think of to the phone. The stock 2.1 system only allows fully signed update.zip images, but the modded 2.1 system we will load allows unsigned images to be loaded freely, which is the critical thing. The recovery mode app itself can (and should) be replaced by significantly more capable alternatives that do a variety of backup and recovery tasks, such as SPRecovery (older) or Clockwork Recovery (newer). There are also other options out there, but those are the two most commonly used.

There is an important command-line utility called adb that is included in the downloadable Android SDK. It allows you to do all sorts of interesting things with attached Android devices, but most importantly for most users it provides direct shell access to the device in similar fashion to ssh. There are plenty of guides online for configuring and using adb should you feel the need. The Android SDK is freely available for Windows, Mac and Linux.

Brief notes on CyanogenMod:

Unlike many of the "alternative rom" software mods that are common in the mobile device space generally, CyanogenMod is not a hacked manufacturer-sourced or carrier-sourced ROM. It is not the product of a "leak", or of stolen/pirated IP, or anything else that could be construed as improper or even undesirable. In fact, it is not the product of any kind of amateurish hackery whatsoever. Instead, the Cyanogen team approached Android using the same philosophy as building a custom linux distribution in the traditional fashion, as a fork of the upstream project. Their objective is to produce a very "standard" open-source build of the Android OS, without any flashy or unnecessary cruft. They do include some additional optimizations and significant features over standard Android, but generally the aim is to provide a feature-complete Android system in a state that would be completely appropriate as a default build on any carrier's device.

CyanogenMod is entirely based on and built from the open Android sources (from source.android.com). They sync with the upstream codebase on a regular basis (much more regularly than the manufacturers) and where appropriate they contribute their optimizations and fixes back upstream to Android. To stay fully licensing-compliant, the Google Experience apps are provided as a separate installable package and are completely unmolested. The default kernel in CyanogenMod is a highly optimized "bekit" Android kernel, built by Brint Kriebel, who is coincidentally one of the primary developers for Ubuntu.

Any way you slice it, this is not the bullshit ROM hackery we've all come to know and expect on mobile devices, for example from the usual knuckleheads on HowardForums. This is responsible development done in the open with a proper git repository and full community code vetting. Their shit rocks. They've fully replaced (and in my opinion, significantly improved upon) the development and platform customization done thus far by Motorola and HTC on their own builds, and they integrated them together into a universal build that runs on both platforms. That's not a small accomplishment.