Monday, December 26, 2011

Migrating your Droid X to CyanogenMod

I recently migrated from a stock Gingerbread Moto Blur install of Android on my VZW Droid X to CyanogenMod7 (specifically RevNumbers's CM4DX-GB kang, if you happen to care) and found it to be a rather arduous task to carry all of my data and settings to the new ROM.  I was talking to my cousin over Christmas break and she was curious to learn how to go about doing it as she had never installed a custom ROM before and needed step-by-step instructions (as she didn't feel like bricking like I did a good dozen times or so while I was figuring all of this out).  So I figured I would try to compile a step-by-step guide of how to go from stock to CM7 with *almost* everything still intact.

I will start by outlining the process and then going back and filling in the details as I get the chance, so this may be a bit sparse in some steps until I get more time.  I'll probably do a ToC section link block too eventually, but it's late and I'm just throwing this all down before I go to bed.  Also, there are steps in here specific to the Droid X because that's what I have, but some of this information may be useful to other phones as well.

Update your device
NOTE: If you are currently on Froyo and have already rooted your phone, you need to back up your apps and data first, then sbf to a fresh install of Froyo, then continue.  Updating to stock GB from rooted Froyo messes up your ability to root on GB.  If you have never rooted before, these aren't the warnings you're looking for, move along.

To begin with, you want to make sure you are running the most up-to-date version of Android available from Verizon.  The reason for using an official update is that there are some things that cannot be updated (or are more difficult to update) from unofficial sources.  These include the kernel and the baseband (the firmware for your phone's radio), and perhaps other things I don't know about.  You can check what version you are currently running by pressing the Menu key and selecting Settings>About Phone.

As of this posting, the current Android System version available from Verizon for the Droid X is 2.3.3, and the current Baseband version is BP_C_01.09.13P.  If you have these versions, you're set.  Otherwise, hit Check For Updates.  Go ahead and let the update finish and your phone should reboot.

Root your device
Once you're running stock Gingerbread, you can go ahead and root your phone.  Read up on how to do that here (it says it's for the Droid 3, but it works just fine for the Droid X).  NOTE:  DO NOT TRY THIS IF YOU PREVIOUSLY HAD ROOT ON FROYO WHEN YOU UPDATED TO GB.  If this is the case, you will have to sbf before rooting, meaning you won't be able to do a full backup.  Backup what you can, sbf, and then root.

Install useful tools
The 3 most useful applications I have found for dealing with data backup, ROM customization, and other stuff here are ROM Manager, ROM Toolbox, and Titanium Backup.  All 3 of these have free versions and are available in the Android Market.  I suggest purchasing the Pro versions of each, they have additional features and plus you'll be supporting the developers that make this stuff possible.  If you don't want to purchase them all, I would say ROM Toolbox and Titanium Backup are the most worth it.  Regardless, install whichever version you wish but get all 3 apps.

Install ClockworkMod Recovery
Open ROM Manager and click Flash ClockworkMod Recovery. If you're on the Droid X, when it asks you to confirm phone model, you have the choice between Droid X and Droid X (2nd init).  Select the one that says 2nd init.  The other option is currently useless because 2nd-init is required since the bootloader is locked and it won't work without 2nd-init.  If it prompts you for superuser access, say yes and check the box to remember (basically just do this any time you get this prompt as long as you trust the app; the 3 apps I am using in this guide are all trustworthy).

Understanding each type of backup
There are two main backups going on here, a NANDroid backup and a Titanium Backup, then there is the SMS backup.  There is a reason you are doing both of these.  The NANDroid backup is a system image that allows you to restore your entire phone back to the state it was in at the moment you create the backup.  The Titanium backup backs up all of your applications and associated data in a format that you can then reinstall once you have flashed your new ROM.  This allows you to reinstall all of your apps without having to download them all, and also retains all of your data like game saves and such.  Backing up your SMS allows you to keep all of your text messages (but so far there doesn't seem to be a way to back up your MMS, so you'll need to have saved any photos to your SD card manually).  The SMS database in the stock ROM is incompatible with the one that CyanogenMod uses, so you'll have to use a 3rd party backup solution that stores the messages in a separate format.

Create a Nandroid (system image) backup
Note:  The size of a Nandroid backup will vary, but I would suggest having at least 1.5-2GB free on your SD card before attempting this
Once you have flashed ClockworkMod Recovery, click Reboot into Recovery.  Your phone should reboot and you will be in a text based menu.  You navigate the menu with the volume up/down buttons, the camera button to select, and the hardware "back" button to return to the previous menu.  The power button just turns the screen on and off so if you accidentally hit it and the screen goes off, just hit it again and it will come back.  Select backup and restore->backup and then just wait for it to complete.  Once it's done, back out to the main menu and select reboot phone now.

Backup your applications and data
Note:  The size of the backup will vary greatly depending on how many apps you have installed and what you choose to back up.  Again, I suggest having at least 1GB free on your SD card before attempting the backup.
Open Titanium Backup and press the hardware Menu button and select Batch.  At the very least, select Backup all user apps, but you can backup system data if you want too.  You won't be able to restore the system data into an incompatible ROM, but if it gives you peace of mind to have it backed up, go for it.

Backup your text messages
There are many ways to backup SMS messages, but if you use a 3rd party SMS client, it may very likely have the option to back up your messages.  I use GoSMS Pro, and the option is found by pressing the hardware Menu button and going to the Services tab and selecting SMS B&R.

Install CyanogenMod (CM4DX-GB)
Because the Droid X has still not received a stable release of CyanogenMod, you're stuck installing a nightly release.  Also, the mainline CM7 does not support the Gingerbread kernel, so you'll want to install the RevNumbers releases, which do support the GB kernel.  The kernel does not get updated when you install a ROM, so you need to already have the correct kernel installed before you flash the ROM or you will brick your phone.  Open ROM Toolbox (since the RevNumbers Nightlies in ROM Manager are not kept up-to-date) and select ROM Manager (the button inside of ROM Toolbox, not the app named ROM Manager).  Under the ROM list select RevNumbers CM7 Nightlies (you can pick any ROM you want, but I highly suggest CM7, at least for your first ROM).  Pick the newest version and select download.  Wait for the download to finish.  Also download the latest version of Google Apps, or you won't have an Android Market.

Update: For more up-to-date releases of CM4DX-GB, follow this thread, as ROM Toolbox hasn't updated their list in quite awhile.

I'm going to outline how to install the ROM manually, since ROM Toolbox hasn't been working right with automating ClockworkMod Recovery tasks, although they may have fixed that, I don't know...

In the main menu of ROM Toolbox, select Rebooter, then Reboot Recovery, and you should be back to the text menu of ClockworkMod Recovery.  Select Factory Reset/wipe data, then select install update zip.  Choose select zip from sd card and browse to romtoolbox/downloads/RevNumbers and select the zip in that folder (or browse to the location where you downloaded it, if you got an updated release from the forum thread above).  Repeat with romtoolbox/downloads/gapps.  Now reboot your phone and (if all goes well), it should boot into CyanogenMod.  The first boot WILL take a long time, but if it just plain doesn't boot, check out the troubleshooting guide below.

Restore your applications
Install Titanium Backup.  Batch>Restore User Apps (NOT system data)

Restore your text messages
Use the same app you used to back them up in the first place

TROUBLESHOOTING

Unbricking
It's late, I'm getting tired, for now, Google "[your phone model] Gingerbread sbf" to get the files and  probably a guide.  You'll also need an app called RSD Lite, the latest version (AFAIK) is 4.9.  There is a bug in the software resulting in an error, something like invalid file or filename or something I don't remember, but that error is bogus and there is a workaround I'll get around to posting later... bah... should be enough info to get started, so for now goodnight.

Friday, December 2, 2011

Wake up and go love somebody

NOTE: This post is going to diverge sharply from my typical technobabble, but I really felt strongly enough about this that I really needed to put it into words.  If you're looking for my usual geek projects, check back later.


I read a very thought provoking blog post today that was very well articulated on a very serious issue that I have seen time and time again among people in my own church family and in churches across the nation.  To anyone who might not know me or my beliefs, I am and have my whole life been a Christian.  One of the biggest problems I have heard from my non-Christian friends that they have had with Christians is that of feeling unwelcome.  The concept of so-called 'tolerance' is a touchy subject for many Christians, and it is one that many simply reject outright.  I admit, for a long time I did the same.  The belief that there is only one way to Heaven is a very intolerant one indeed.  But the problem with that response is that it lumps people together based solely on their actions, and that isn't what we as Christians are supposed to be doing.

A saying I've heard a lot growing up in church is "love the sinner, hate the sin".  Well let me just come right out and say this, that mindset is completely and utterly wrong.  We are called to love the sinner and that's it.  Their sin is between them and God, and it's none of our darn business.  Jesus himself spoke out against this when he asked, "Why do you look at the speck of sawdust in your brother’s eye and pay no attention to the plank in your own eye? (Mt 7:3, NIV)".  And yet time and time again, I see people turned away from the church because their lifestyle is found to be "unacceptable".  The real hot button issue these days is homosexuality, but I've seen it happen in response to everything from drug addiction to wearing "goth" apparel.  In fact, anything that could be construed as "different" seems to be grounds for exclusion.

But why is it that we feel that people must change themselves before coming to church, especially since we put no more effort in enacting that same change than to browbeat those we feel need it.  The fact of the matter is, I have no power to change who you are or what you do, nor do I have some moral obligation to try.  If you are looking for change in your life, I can personally attest to God's ability to enact that change in a willing heart, but the fact is that we have free will.  If God himself isn't going to overrule your free will to be and do whatever you choose, who am I to think that I should do otherwise?

As a Christian, my calling is to spread God's love to all His people.  It's that simple; I am to love the people I come into contact with on a daily basis.  Whether or not I like them is irrelevant, whether or not I agree with them is irrelevant, my assignment is still the same.  So when I see people tearing each other down in the name of God, it makes me very sad, because they have obviously never known Him.  To see signs and bumper stickers proclaiming "God hates fags" or similar sentiments just makes me wonder how it is that people who claim to be Christians can be so WRONG.  Yes, I said it, THEY ARE WRONG.  Every one of us is just as messed up as anyone else, so to single out someone else for exclusion because they are "different" is just plain WRONG.

As bold a statement as that may sound to some, one need look no farther than Jesus's own actions during his time here on Earth to see just what the heart of God feels.  Time and time again, Jesus spoke and acted kindly towards those that society had cast out.  Prostitutes, tax collectors (if you think the IRS is bad, tax collectors of Jesus's day may Bernie Madoff look like a petty crook), the worst of the worst and what did he do?  He sat down and ate dinner with them.  He didn't preach at them, didn't list off all the things in their lives that they needed to fix up before he could be seen with them.  No, he ate with them.  As they were.  In fact, the only people Jesus ever got angry with were the religious leaders and his own disciples.  His anger at the religious leaders was because of the way they completely misrepresented the God they claimed to serve and instead used His name for their own personal gain.  In common colloquialism, you could say they "talked the talk, but didn't walk the walk."  And boy, did they talk big.

Jesus's anger at his disciples was different, however.  He was often angry with them, but out of the kind of loving correction that they needed in order to be sure that they remained steadfast in their eventual roles of carrying the torch of Christ's message after His death and resurrection.  His rebukes were given out of discipline and correction, as a father disciplines his child so they learn right from wrong.  And that is the rebuke I bring today, to fellow Christians out there.  My God is a God of love, not hate.  He is a God of life, not of death.  If you feel otherwise, you are WRONG.  It is not my place to correct those who don't even know or follow the teachings of Christ, that would just be foolish of me to expect someone else to live up to a standard they never chose for themselves.  But those of you that have chosen to claim yourself as a follower of Christ, with that claim comes the responsibility to actually follow it.  Christianity is not to be served a la carte, you must take the combo meal whole.  Love your neighbor as yourself.  It is a simple and perfectly clear command.  Jesus even went so far as to define who that neighbor is.  And not only that but we are to love even our enemies.

So basically, that pretty sums up the whole purpose of Christianity, and we're doing a pretty lousy job at it.  So go outside and love somebody today.  Find somebody you don't want to love and do it anyway.

If you would like to read the blog that sparked this train of thought, check out I'm Christian, unless you're gay