Installing CyanogenMod 7 on Your Motorola Milestone

If your Milestone does not auto-mount to /media/milestone (and it probably doesn’t), adjust the first step to account for your path. Additionally, these instructions assume you are using a Linux workstation to install CyanogenMod. If you are using an alternative operating system, you’ll either need to adapt these instructions, or boot a LiveCD.

Set Up Your Path

$ export DEVICE='/media/milestone'

Connect Your Phone to Transfer Files

  1. Connect your phone via USB.
  2. In your notification area, tap “USB connection”.
  3. Select “Memory Card Access”.
  4. Tap “OK”.

Download and Install OpenRecovery

For our device, we use a version of OpenRecovery modified by 89luca89 and Azhad . This is known to work well on the Milestone.

$ wget
$ unzip -d $DEVICE/

Reboot your phone into Bootloader Mode

  1. Power off your phone.
  2. Holding the phone in portrait mode, hold right on the d-pad, and power the phone on.
  3. Connect your phone via USB

You should see the following (your bootloader version may vary):


Battery OK
OK to Program
Transfer Mode:

Flash a Vulnerable Recovery

$ wget
$ wget
$ chmod u+x sbf_flash
$ sudo ./sbf_flash vulnerable_recovery_only_RAMDLD90_78.sbf

If you run into problems with this step, try another USB port.

Reboot into OpenRecovery

  1. Power off your phone.
  2. While holding the camera button, power the phone on.
  3. When presented with an exclamation mark in a triangle, hold the camera button and tap volume-up.
  4. Using the phone in portrait mode, use the d-pad up/down to navigate the menus and “click” to select items.
  5. Select “apply”

Enable  USB Mass Storage Mode in OpenRecovery

  1. From the Main Menu, select “USB Mass Storage Mode”
  2. When you finish transfering files, select “Disable” to return to the Main Menu.

Download CyanogenMod and (Optional) Google Apps

With minor changes, you can use these steps to install any Custom ROM compatible with your device, though the examples here only cover CyanogenMod 6 and 7. Also, while installing Google Apps is (strictly speaking) optional, most users will want to, if only for access to the Android Market. Nearly every guide I’ve seen that does not explicitly include this step generates questions such as “Why can’t I access Market?”.

Option 2: Install CyanogenMod 7.1/- (based on Android 2.3.3 “Gingerbread”)

$ wget
$ mv $DEVICE/OpenRecovery/updates/
$ wget
$ mv $DEVICE/OpenRecovery/updates/

Install CyanogenMod

  1. From OpenRecovery, select “Apply Update”.
  2. Select “”.
  3. Select “Yes”, when prompted to “Confirm installing update package”.

Congratulations and welcome to the new world! If you have made it this far, you are now running CyanogenMod, arguably the most actively-developed community ROM available for Android devices. There are a few more steps you should consider before rebooting, but the bulk of the work is over.

Install Google Apps

  1. From OpenRecovery, select "Apply Update".
  2. Select "".
  3. Select "Yes", when prompted to "Confirm installing update package".
Reconfigure Baseband

  1. From OpenRecovery, select "Change Baseband".
  2. Select "" (or whichever one matches your carrier)
  3. Select "Yes", when prompted to "Confirm installing update package".
Change Keyboard Layout

  1. From OpenRecovery, select "Settings".
  2. Select "Keyboard Layout".
  3. Select "qwerty".
Disable OTA Updates

$ wget

$ mv $DEVICE/OpenRecovery/scripts/

  1. From OpenRecovery, select "Run Script".
  2. Select ""
Block Advertising

  1. From OpenRecovery, select "Menu Utility".
  2. Select "Adblock".
Fix Your Mobile Data Connection

While I have only found this issue with one device, these instructions are here for when it happens to you.

If you are unable to connect to your mobile data service after installing CyanogenMod, don't panic! Specifically, if you can make and receive calls, connect to WiFi, and only your mobile data is unavailable, try the following steps to resolve the issue.

  1. From your home screen, press Menu, select "Settings".
  2. Select "Wireless & networks".
  3. Select "Mobile networks".
  4. Check both "International data roaming" and "National data roaming".
  5. Reboot your phone (or toggle Airplane mode).

Your mobile data service should work now. Interestingly, if you repeat the steps and disable roaming data, the problem does not recur (even after rebooting).

Copyright secured by Digiprove © 2011 Chris Olstrom

Finished reading? Try one of the following:

  • Tell me what you think in the comments!
  • Get the feed, and keep tabs on new content.
  • Write a response on your blog, and post a link in the comments.
Readability - (FRE: 55.1 | FKI: 7.6 | GFI: 9.9)

Windows Phone Marketplace and the GPLv3

There’s a fair bit of buzz over Gareth Halfacree‘s article for thinq_ “Microsoft bans open source from the Marketplace“, which doesn’t give a fair accounting of the situation. I’m not a Microsoft fan by any stretch. I’m an advocate of open source software (as an author, and a user of it), but this time, Microsoft…

What is the Difference Between Proxy Types?

I indicated in another article that proxies come in several flavours. I’ll discuss those here, in order of sophistication. Jump to… SOCKS | HTTP | Virtual Private Network The Web-Based Proxy These are the simplest to deploy, often requiring less work than setting up WordPress (famed for their 5-minute install). With well-regarded software written in…

Purged Content

This is not an error page. The content you are looking for existed, and has been deliberately removed. Given the following: This page does not appear in the archives. Nor can it be found with the site search function. It is also unavailable in the feed. I can safely assume you’re here because you clicked…

On the Creation of Art

A Bit of Background I am something of a compulsive creator, and this has manifested over the years in a variety of formats, though the medium itself is largely unimportant. Rather, the act of creating something is what drives me. In this adventure, I have tried my hand at several art forms, discovering new passions,…

Generating Short URLs

This list compares only short URL services that expose some form of documented API,1 and intentionally omits any URL shorteners employing iFrames. Given the rise of short URLs along with services such as Twitter, these filters keep the list manageable. Tracks: Nothing Custom URLs: Unsupported API Documentation Tracks: Clicks, Location, Conversations, Referrals Custom URLs: Unsupported…

What are Custom URLs?

When we talk about Short URL services, a “Custom URL” is the option to specify part of the shortened URL. Most often this is the latter part of the URL, but it is possible to set up a short URL service1 to use subdomains, or spanning multiple domains. Example:<custom-url> WordPress users may recognize this…

Getting Feedback with Polls & Surveys

What follows is a list1 of free web-based survey tools and other mechanisms for gathering user feedback. Some of the items listed do not appear designed as survey tools, but can serve that purpose (anything that allows you to build a form and capture submissions of that form can serve as a feedback platform). Conditions…

On Limitations and Self Doubt

“Qui audet adipiscitur.” “Who dares, wins.” — Unknown More than one person has suggested I take on too much. Despite the elements of truth in such claims, I hold no intention of stopping. Why? I dislike limitations. Not to say I don’t believe in them, but at any given time I can make a guess as…

Non-Referrals in Affiliate Programs

Traditional affiliate programs segment conversions into two (main) categories: Originating from an affiliate, which trigger compensation to the linked account. Everything else, where that compensation is gravy for the business. The simple reality is that purchases without referrals are more profitable, at least in the context of that single transaction. How then, do we handle…

What Is a Proxy, and How Do I Use One?

“If the freedom of speech is taken away then dumb and silent we may be led, like sheep to the slaughter.” — George Washington What the hell is a proxy, and why do I want one? Proxies are best described as relays. You send a request *through* it, and receive them back in much the…