Saturday, October 15, 2011

CyanogenMod, you saved my Captivate.

I've decided to start writing a few short blog posts again.  I think my problem with "contributing to the internet" is that it does require a certain sense of confidence in the value of one's thoughts or opinions.  I typically don't think mine are worth sharing, but every now and then I do think "this might help others avoid misery".  This is one of those times.  Oh, Samsung Captivate, it is of you I sing.


If you were, as I was, lured away from the iPhone to the Samsung Captivate (the Galaxy S model for AT&T), I am sorry for what you have had to endure.  Don't let this phone drive you away from Android.  There's a light at the end of this tunnel; it's cyan-colored.

To be fair here, there are some good things about the Captivate.

  1. The screen.  The Super AMOLED screen on the Captivate is beautiful.  Maybe it's because Samsung makes TVs, but they know how to do color, contrast, etc.
  2. Photo and video quality.  The camera is a 5mp camera which takes good pictures (for a phone).  The HD video recording is also really great (for a phone).  It's made it possible to take lots of decent quality, impromptu baby videos and that's really valuable.  The recording app itself is not that great, but the products are nice.
  3. And of course, there's Android.  This phone has definitely done a poor job of "porting" it over, but I do love the Android OS.  I can run Python scripts on my phone, build apps without paying for a developer license, run Samba for sharing files to my desktop, view content in Flash, use the latest & greatest Google apps, etc.  And I believe in open software.

... but there are some things that are not so great:

  1. Performance.  This phone with the official Android builds is SLOW!  The stock phone came with Eclaire (2.1), which was acceptable but missing enough capabilities that it was a little hard to be slow at anything.  Everyone was waiting eagerly for Froyo (2.2).  I ran a "leaked" Froyo for a little bit, but it was horribly slow.  For example, it would take multiple attempts with the swipe pattern to unlock my phone because it was not recognizing touches; answering calls was hit or miss for the same reason.  Swiping between screens was jerky.  Apps would get stuck in unresponsive states.  It was a disaster.  I tried one of the "aftermarket" kernels that did improve speed but at the cost of a battery that only lasted half a day.  I downgraded to Eclaire.  Then official Froyo came out and I upgraded.  It was better than the leaked version, but not a lot.  Less jerky movements, but still lots of applications hanging for a long time.  Games like Need for Speed were jerky while playing.  If I was honest, it was pretty crappy.
  2. Bluetooth.  So probably half of my phone calls are made in the car and I use my car's Bluetooth so that I don't have to be driving dangerously (or illegally) .  Well, the Samsung pairs fine with my car, but it would disconnect after being used for a couple of minutes.  Then it would reconnect.  So imagine driving down the highway at 65mph and your car saying "the bluetooth connection has been lost".  I'm trying to get the phone of out my pocket and yelling "hang on a sec" so that the other party doesn't say anything important that only my nether region could hear. As soon as I get it out of my pocket, the car picks up the link again.  What a piece of crap.
  3. Samsung's Android skin and crapware.  Samsung made some sort of iPhone-like skin.  It's not really all that surprising that Apple is suing them.  Their app list was a cheap knock-off of the iPhone screens.  They provided a bunch of really junky applications that you couldn't uninstall.  The camera and video app worked but were pretty annoying to use. There are ways to work around this and replace some of the stock behaviors with Android (the beauty of Android), but the out-of-the-box OS experience was pretty disheartening.  If I was a less technically savvy or less adventurous user, I'm sure I would have returned this phone within a week.
  4. Abysmal update schedule.  Samsung is way behind with their software updates.  Gingerbread was released in Dec 2010 and still hasn't been released for the Captivate (it's now Oct 2011).
  5. GPS is horrible.  This is probably partly hardware related, but the functionality of the GPS has also been greatly affected by the OS version.  Some versions of the OS have worked better than others (Froyo was an improvement), but it's bad enough that it makes Google Navigation frequently useless (it keeps thinking I've left the route when I haven't, for example).
  6. Locked down by AT&T.  They disabled "Untrusted Sources" for installing apps.   So you can only use the official market.  You can obviously work around this with rooting, but one shouldn't have to void their warranty to install something from Amazon's market or from an open-source google code project.

On the whole, I would say that the negatives outweighed the positives quite significantly.  So if you had any less self-discipline-- or faster automatic windows in your car -- your Captivate is probably in a river or the ditch alongside some stretch of highway.  I'm sure you don't regret that decision.  If you do still have your Captivate, though, I have some good news: CyanogenMod.
CyanogenMod is an open-source, aftermarket firmware for numerous smartphones; and as of version 7.1.0, the Samsung Captivate is on the list of supported phones.  (In theory the official ROMs are also open-source, since they have to be by [GPL] license, but they are not developed as open-source projects.)  CyanogenMod was not trivial to install (more below) but was well worth it.  It is a huge improvement and basically makes this feel like a new, and vastly superior phone.  (I've been running this for around a month now.)
  • The Bluetooth now works.  I was worried since I assumed it uses the BlueZ Linux BT stack, which doesn't have the best reputation, but it works flawlessly in my car.  No more rummaging in my pocket, while yelling at the person on the other end.
  • The camera/video recorder app is vastly superior to Samsung's.
  • I have the latest (Gingerbread) version of the Android OS, with all the improvements that brings (not least of which is a much better keyboard).
  • Performance is fantastic.  Feels twice as fast as stock Froyo build.  No more jerky unlocking or call answering; no more jerkiness in Need for Speed car racing :)
  • CyanogenMod uses ADWLauncher as it's "skin" which is  also vastly superior to Samsung's.
  • No more crap applications I can't delete.
  • GPS seems to work better than any other OS/version I've tried.  It is still slow to lock on to exact position, but seems to track correctly and not randomly jump a few neighborhoods over.  It is definitely usable now.
  • Lots of developer-friendly features.  Obviously things like "Unsigned Sources" can be enabled.  There's also tethering and a while lot more. I haven't scratched the surface of this yet.
  • Battery life did not degrade. I would have expected that a phone that runs much faster would suck down battery faster, but I get the same battery life as before (which admittedly is only a day of few calls and moderate network use).
The downside is that you'll void your warranty.  Of course, at this point Samsung's warranty is likely expired for me and even it it was still active, it was only going to guarantee me the crappy performance, poor hardware support, and inferior OS spin of the stock system.  Yeah, that was a pretty easy decision.


Getting it installed is not hard if you have some patience, a strong stomach (you may need to descend into the bowels of the internet or wade through troll-infested forums for help or obscure workarounds). If things go wrong, it may help to have some understanding of Linux systems, but you're going to be following some forum steps either way.  There is a good installation guide on Cyanogen's wiki; follow that and it may just work for you without a hitch.  Basically you will need to install a new kernel which supports ClockworkMod Recovery using Heimdall, then install ClockworkMod Recovery itself, and finally install the CyanogenMod ROM using ClockworkMod recovery application.  So you will first have a stock-ish system running on ClockworkMod Recovery before you then install CyanogenMod.  The beauty of this is that ClockworkMod will let you backup your current ROM completely in case something goes wrong.  Before you start you'll also want to make sure your apps (and their data) are all backed up.  I use Titanium Backup; it does this well.

I had one significant problem following the instructions.  If you are running (stock) Froyo, as I was, you will need to ensure that your "recovery" application is downgraded to version 2e.  The 3e recovery utility will only run/install signed packages, which prevented me from getting the ClockworkMod Recovery boot loader installed.  This thread may help.  Or Google for "2e recovery Captivate" and wade through the results.  When I originally had this problem I was able to find a thread where someone had posted just the 2e recovery utility, and I was able to overwrite the utility through the phone (needed root and a file utility that supported remounting partitions rw -- I told you this wasn't for weak stomachs) -- I'm not able to find that thread right now.  I was happy that I didn't have to boot into Windows to do any of the upgrade steps (I'm running Ubuntu 64-bit).

Anyway, hopefully this proves useful to someone.  If you haven't already thrown away your Captivate, don't; rescue it with CyanogenMod!