My phone was slow. Unbearably slow. Ghost clicks, freezing, applications crashing. I could literally press a name in the Contacts list, get up and get a glass of water, and come back before my phone had finished pulling it up. It was time for a change.
Lately I’d been thinking of getting the Samsung Galaxy S5. After all, my venerable Droid 2 Global (D2G) is already six years old. However, a post on Verizon’s community forums convinced me Verizon had managed to screw up its global interoperability, a key feature for a future phone of mine (must be reasonably travel-proof!).
Accordingly, I began looking at the Nexus 6 (N6) instead. It looks to be truly carrier-independent, top of the line hardware, and tons of LTE/CDMA/GSM support. Only problem, it’s sold out! Also, it’s huge. Like probably won’t fit in all my pockets huge.
So I settled on a solution. If I could update my D2G so that it became usable once more, I’d have a stop-gap until the N6 gets restocked. Plus, in the event that I’m out for a night on the town and the pants pocket can’t fit the N6, I’ll have a fallback in my D2G. And with the baseband hack to band unlock my D2G I could even have an internationally viable second phone (imagine! The “G” in D2G actually meaning something!).
Since this was my first time installing a custom ROM I decided to keep things simple. I skipped the band unlocking (for now ;)) and decided to focus on getting CM7 running on my phone.
Initially I thought I would just factory reset the phone and settle for Verizon’s stock PoopDroid (Gingerpoop?). But even after the factory reset the phone was still unbearably slow. Better, but still slow.
So I decided to say f&$^ it, in for a penny in for a pound. Might as well put CM on it!
This guide covers how to put CyanogenMod 7 on a Droid 2 Global. Specifically, a Verizon Droid 2 Global running Android 2.3.4 Gingerbread, with firmware version 629 (alternatively known as A956).
The specs on my phone pre-CM install were:
System version: 4.5.629.A956.Verizon.en.US
Android version: 2.3.4
Baseband version: N_01.82.00R
As per usual, I take no liability for whatever happens to your device. Proceed at your own risk, and I suggest reading every step in full before you start. Then, when you’re working on a section, re-read all the steps again and google what to do if you mess up at that stage (you should have a way to reverse if things go south!). I’ll include references inline.
A Bit of History
Last I had checked (about three years ago), CM7 was happily running on Gingerbread D2G’s. Then came the dreaded .629 OTA (over the air update). Suddenly D2G bootloaders were locked again and it seemed like no method for installing CM7 would be forthcoming. Eventually a workaround was discovered, though it required intentionally bricking the phone by downgrading to an incompatible firmware before installing CM7 and re-flashing to unbrick the phone. Yikes!
Thankfully in the intervening time someone managed to come up with a solution that did not require bricking the .629 D2G. Many thanks to all the developers, testers, forum administrators, and regular enthusiasts like myself whose help I have drawn on (I will do my best to give individual shoutouts!).
In particular a big shoutout to sd_shadow, whose collection “The Complete Guide to Using Droid 2 Global (a956)” is a godsend (particularly smart to host it as a google doc, shadow!). The remainder of this guide is based on links shadow collected, official CyanogenMod resources, and some nitpicky googling to solve a couple nasty issues with adb (Android Debug Bridge).
First Things First
You will need a D2G running Android 2.3.4 version .629. In this section we’ll cover backing up the phone, factory resetting the phone, rooting the phone, and installing adb on your computer.
Making a Backup and Factory Resetting
To backup my droid I simply connected it to my computer (OSX Macbook) and copied over the contents of the sdcard. This meant applications were not backed up. However, I did back up specific items from applications, like chat histories from LINE. If you want a more complete backup options like Titanium Backup may be for you.
Rooting the D2G .629
Download the .iso and burn to a CD or mount on a bootable USB. If you’re on a Mac just burn it to a CD, I’ve never been able to get Unetbootin to work properly for me. In case that link goes down, I’ve hosted the file here (right-click, save as. Then change file extension from .jpg to .iso) as well.This file is the Droid2_D2G_DX_DX2-RootCD-2012.iso with md5 7baee9c34f6ef7ad0b4fa219ae387c68 at about 54MB. I do not think this CD contains the backup image (SBF) of .629, though this one (219MB, MD5: 579d7d5095fc2560205033456db150a2) might.
I have tested this CD on my phone, and found it to work properly, but I can’t guarantee that it will work for others. Others have also found it to work, but I can’t guarantee you will have the same results.You are welcome to try it, and I hope it is helpful to someone, but as with all modifications, you do so at your own risk.Instructions for using this CD.
Download and burn this image file to CD. (or create bootable USB)
It might be a good idea to do a factory reset before starting this process, but you might be ok without it. My phone had already been rooted, so I had to sbf it back to stock, in order to test the CD, so I have only tried it after a factory reset.
1 Enable USB debugging on the phone,
2 Boot computer off of this CD
3 Hook up phone to computer (phone needs to be on at this point)
4 Start the root process by selecting option 1
5 When it says on the screen that phone needs placed in bootloader, (almost right away, as it only needs to send 1 command before placing in bootloader) power off the phone, and put it in bootloader by holding the up arrow on the keyboard of the phone while powering on.
6 when in bootloader and hooked up to the phone, press enter on the computer to proceed, a preinstall image will be flashed to the phone, providing the exploit that will root the phone.
7 When it has flashed, the phone should reboot. If it hangs when booting, unplug phone, remove battery, replace battery and power back on. When powered on, hook up cable again, and the process will continue (it will immediately reboot again)
8 When the phone reboots, ADB should be root, so it will push the necessary files to the phone, and reboot the phone again. Per Morlok8k, cache should be wiped to avoid bootloop problems, so the phone will be rebooted into Recovery.
9 You will have to press both volume buttons to enter recovery, where you should wipe cache partition and reboot.
If all went well, your phone should be rooted.
if [ -d "<path-to-sdk>/platform-tools" ] ; then
<path-to-sdk>with the location you installed the SDK in. Be sure to begin this with a slash. For me my ~/.bash_profile looks like:
if [ -d "/Users/bobo/Code/android-sdk-macosx/platform-tools" ] ; then
Tip: Having trouble running adb commands? The phone should be connected via a USB cable to the laptop in “Charge only mode” when running adb commands. USB debugging mode (Menu -> Settings -> Apps -> Development) must also be enabled. Otherwise commands are not guaranteed to work!
Installing CyanogenMod 7
With a rooted phone and our laptop setup for adb, it’s time to install CyanogenMod 7! It’s important to note that our version of CM7 we will be installing is an unofficial version. I believe it was first created by someone named RevNumbers. It is now maintained by someone else, either e334 or jianc (see this rootzwiki thread for more).
First, download cm-7-20130831-UNOFFICIAL-droid2we.zip (106.5MB, MD5: 310ad3adfd172fc7805b6fc6faf764c7). Again, I’ve mirrored the file (right-click save as, change .jpg to .zip).
Then, download the google apps bundle if you want to use google related services with your phone (i.e. google account sync, google play store, etc.). I got that apps bundle from the link for CM7 at CyanogenMod’s page (size: 6.4MB, MD5: 1647897d8ac3efb04723d2ad2c361a3f).
Finally, download bootstrap-18.104.22.168-droid2.apk from the CyanogenMod page (size: 2.3MB, md5: c67a11b41f52b617d3656ba80016f003).
Installing Bootstrapper and ClockworkMod Recovery
Now it’s time to install Bootstrapper, which will let you install ClockworkMod Recovery (CWM). CWM is a full featured recovery mode that vastly facilitates installing custom ROMs. Indeed, I tried installing CM7 using the Stock Recovery Mode and it would not work.
This step was probably the trickiest of them all, and require extensive googling on my part. adb refused to push to the correct /system/app/ (the trailing slash is important) location, continually citing a “Permissions denied” or a “Read-only” error. Luckily I found a solution on the Android stackexchange, on which the following is based. Navigate to the folder where you have bootstrap downloaded and follow along.
Type these commands (with explanations given in parentheses)
adb shell (opens up an adb shell into your attached phone)
su (changes prompt from $ to #. Will only work if you successfully rooted)
mount (lists all the mount points. Look for the mount point for /system because you want to adb push the bootstrap zip to /system/app)
exit (drops you from # to $)
exit (exits the adb shell)
We’ll be using the mount command to make the /system location writable so that you can adb push the bootstrap .zip to it. Here is what my mount command looked like:
mount -o remount,rw -t ext3 /dev/block/mmcblk1p21 /system
-0 is the options flag.
remount,rw tells it to remount the partition with read and write capabilities.
-t is the type flag. ext3 is the formatting on this partition.
/dev/block/mmcblk1p21 is the location of the device you want to remount
/system is the mount point
Problem: you can only run this mount command from inside the adb shell, which is a shell local to your phone running through adb. However, you can only copy a file from your computer to the phone if you are not in a shell on your phone (i.e. you have to be in a shell on your computer).
Solution: use adb push to get the bootstrap zip to the /sdcard/ location, then open a shell inside the phone and copy the bootstrap file to the /system/app/ location! Here’s what that looked like for me.
bobos-MacBook:d2g bobo$ adb push -p bootstrap-22.214.171.124-droid2.apk /sdcard/
Transferring: 2457209/2457209 (100%)
2238 KB/s (2457209 bytes in 1.071s)
bobos-MacBook:d2g bobo$ adb shell
# mount -o remount,rw -t ext3 /dev/block/mmcblk1p21 /system
# cp /sdcard/bootstrap-126.96.36.199-droid2.apk /system/app/
# rm bootstrap-188.8.131.52-droid2.apk
rm failed for bootstrap-184.108.40.206-droid2.apk, Read-only file system
# mount -o remount,ro -t ext3 /dev/block/mmcblk1p21 /system
adb push <location_to_file> <location_on_phone> just copies a file from your computer to the phone.
-p tells it to notify you of the percent progress of the transfer.
You’ll see that I fail to delete the bootstrap zip because that partition is currently read-only. I believe using a similar mount strategy could be used to remove it, but I left it be for the time being.
Also, take note of the second mount command, this time with –o remount,ro. What this does is remount the partition as read-only, returning it to its original state.
Getting into ClockworkMod Recovery
These steps are taken from another Rootjunky.com youtube video.
Restart the Droid 2 Global
Go to Apps –> Bootstrapper
Eventually a Superuser Request will pop up on the screen, go ahead and allow Droid 2 Bootstrapper Superuser access with Remember checked
Click Bootsrap Recovery at the top, a modal should pop saying “Success!” Click OK.
Inside ClockworkMod Recovery
These steps are somewhat modeled off the CyanogenMod page on Installing CM from Recovery.
1) Slide out the keyboard and use the left-arrow and right-arrow keys to navigate. Use the enter key to select. Alternatively use volume up and volume down to navigate. The power button no longer selects (like it did in stock recovery mode). Instead it goes ‘back’ a screen. If you use it from the Main Menu it will make the whole screen go black. Just press the power button again to return to hte Main Menu.
5) Select Choose zip from sdcard
6) Select cm-7-20130831-UNOFFICIAL-
7) At the end it should say Install from SD card complete.8) Go back to Main Menu and Reboot
Now I’m Stuck in a Bootloop
Still Stuck in the Bootloop
Restarting Just to See if It Still Works
Holding power down and going to Reboot brings up the following options: Reboot, Recovery, or Bootloader. I select Reboot.
Installing Google Apps Bundle
These steps are from the CyanogenMod page on installing Google Apps.
Congratulations, You Have a Working CM7 D2G!
There are some minor annoyances. For example, the ALT+LOCK key doesn’t work, but you can just double tap the ALT key to do the same thing. My Contacts weren’t syncing properly, but a quick uncheck then recheck of Sync Contacts in Menu > Accounts and Sync fixed it. Likewise I struggled to find the Gmail Notification to turn it off, but found it internal to the Gmail App in Menu > Settings > my_email_addr (under Accounts) > Uncheck Email Notifications.
Perhaps the most interesting option is to manage app permissions, which can be done natively from CM7. Go to Menu -> Settings -> CyanogenMod Settings -> Application and check Permission management to enable it.
To change permissions for a given application go to Menu -> Manage Applications and click on the target application. Scroll down and see a list of permissions with green checkmarks by them. Simply tap any of those permissions for it to be disabled.
The checkmark will stay but the permission will be crossed out. Tap again to re-enable. The app might need to be restarted for the permission change to take effect (I haven’t had the patience to sort this out yet, but it doesn’t seem to work for me. That might be because I’m not restarting apps before testing if denying them network connectivity actually works.)