• android
  • cyanogenmod
  • Technology

Old LG Optimus S (LS670) seems new again with Cyanogenmod

The wife has an older LG Optimus S (LS670) (late 2010 vintage) which she got when we first signed up for Ting.com service (phone service based on Sprint run by the Tucows folks in Canada and their pricing is great compared to the major carriers). Its an old phone as android phones go, only sporting a 600MHz ARMv6 processor, but it works. The major problem with this phone, as with all android devices is that the OEMs tend to abandon them after about a year and users never see another update (until they root and throw on a custom ROM). To add to that, the Optimus S came with an incredibly small amount of available internal memory which was mostly just wasted on useless Sprint apps which couldn't be removed, and over time as Google's apps grew in size (and number) it became a challenge just to keep the thing running at all. Yes we've discussed getting something newer but she really doesn't want much more than basic phone functionality, and personally having used a Palm pilot for years I couldn't see how something which is so incredibly more capable than that could possibly be less useful. I've been saying that I'd root the Optimus and put a custom ROM on it for a while and since we're home for the holidays it seemed a good time.

tmp_Screenshot_2013-12-25-08-08-39~01~01249016012

The best guide I could find for this phone was posted by RazzMaTazz back in April of 2012. First just look up which baseband (cellular radio driver) you're running in Settings | About Phone. We had ZVJ which is pretty much the latest firmware which made it more difficult. The only way to root the LG Optimus is by reverting back to a previous official stock baseband firmware (ZVD), running a crack against that and then you have a choice to either use a ROM which will work with that baseband, or use a method to go back to ZVJ (and not lose your root) and then use a custom ROM made for that baseband. The author actually recommends doing that (using a ROM based on ZVJ) but by the time I had gotten the Optimus rooted I wasn't really in any frame of mind to mess around - I wanted to just get something working again.

As it turned out I just happened to have gotten a newish Windows laptop for work recently (running Windows 7) so I decided to root using the Windows method. Having recently rooted and put Cyanogenmod on my ASUS transformer from my MacBook which runs Ubuntu, I would otherwise have probably used that machine which already has adb set up on it. In Windows to be able to be able to move files back and forth to the phone you'll need to install the LG driver first. I did manage to locate that on LG's standard support page after drilling down through the menus for our specific phone (LS670 grey). I found it on the software update tab as "Step 1: USB DRIVER for Windows".

The whole plan depends on getting this phone with ZVJ firmware back to a stock ZVD baseband firmware so you'll need a stock ZVD ROM to move over to the phone. I found a link to that on this page which just points over to the software downloads page on the Sprint site. Its named update.zip - just keep it that way. Assuming the driver is installed OK, when the phone is plugged into the computer you can select (in the phone) to enable USB file sharing (just pull down the top tab with the USB icons on it). At this point you should be able to browse to the phone in your file manager from the PC (in my case the window poppup up). Copy the zip file (the ROM) right to that directory (don't put it into a subdirectory).

Now safely eject the phone from Windows, unplug the USB cable, and power the phone off.

Boot the device back up while holding in the power + volume down + Home buttons to enter the "stock recovery menu". When that finally loads up, navigate using the Volume buttons to "apply sdcard:update.zip", then hit the Menu button. After the software installs, select to "wipe data / factory reset" (again, confirm with Menu button). This doesn't wipe files on your SDcard, but it does blow away your account and sets you back to fresh android install. Pictures and files shouldn't be touched. Now select to reboot.

This is where I started to get frustrated. For whatever reason when the phone started up again with stock ZVD firmware, android was complaining about "android.process.acore has stopped" every few seconds and was forcing me to confirm to end it each time. I knew I didn't intend to keep this ROM for very long, but it was annoying and worried me at the time.

The riskiest bit of the operation is described here. The LG Optimus S came with Android 2.2 (Froyo). To root the device running this stock version of Android under Windows the guide above suggests to use software that is likely to be recognized as a virus by Windows anti-virus programs. Luckily I was using Microsoft's antivirus on this machine and it isn't very good so it ran without a hitch, but if you're using something decent you might need to disable it to be able to run this program. I used "optiauto-sfx.exe" which is an installation utility at least partly based on the work of Oleg N. Scherbakov (a Russian programmer) and Chainfire's work called Gingerbreak which exploits a flaw in the ZVD firmware using a technique called "Zerg Rush", a reference to the infamous technique of sending lots of expendable critters against your opponent in the Blizzard game StarCraft. The source code for zergrush is available for those who might be interested.

With the phone connected to the PC, but NOT in debugging mode (but not USB file sharing mode), double click on the executable. A command window opens and you'll see output letting you know if the attack was successful. In my case it wasn't the first time. It turned out that the first time I ran it against the phone while it was still running ZVJ and so, it didn't do anything. Once I had flashed the ZVD firmware, it took only a few seconds to succeed. Rebooting the phone, it was now rooted but still running ZVD firmware and unfortunately for me, still spitting out the "android.process.acore has stopped" error.

After this point the phone is rooted, but the exploit has also copied a "custom recovery" image to the phone (Xionia CWMA). Rebooting to enter into recovery now (by holding down Power + Volume Down + Home) will present you with a very different recovery environement with more selections.

I had done some reading and settled on using an unofficial Cyanogenmod 7.2 port for the Optimus by thekraven which is a "Gingerbread" Android 2.3.7 based ROM. This is the newest version of Cyanogenmod that will run on this phone as far as I'm aware - its an older version of Android, but quite capable. The official thread for this ROM really needs a bit of cleaning up; I found it a bit confusing, but the ROM itself runs great! This ROM doesn't work on any baseband newer than ZVD, so there wasn't anything left to do but download the latest version, copy it over to the phone's main directory, and reboot into Xionia recovery. Don't forget to grab Google Apps (which can't be packaged with Cyanogenmod by license). Here's what I used which worked:

The ROM as posted in Google Drive: 3.9.2012a-cm72RC1-IHO-Kraven-thunderc_LS670-signed.zip which says it was posted on 8/16/12 by jon ss at 83 MB

And Google Apps gapps-20111214-with.VVM.fix.zip which was posted on mediafire.

No, the media hosting of these files didn't give me a warm and fuzzy, but there was enough banter on the official thread about their use to allay most of my worries. Still, as with any custom ROMs you're trusting a bunch of folks on the internet to not screw you over - so best to read as much as you can about them and their work before you commit.

Basically flashing the ROMs is pretty easy in Xionia CWMA, just navigate (using the volume buttons) to install from sdcard and navigate to the zipped Roms, first the ROM then gapps. I wiped cache, and data, and did a factory reset (I intended to set up the phone again as fresh anyway so I haven't described any backing up of settings or user info here). Then reboot to a faster phone.

Overall the phone seems to be running much smoother now. Its responsive, the screen flip as you turn the device no longer takes 3 to 4 seconds to respond as it did before, the bloat is mostly gone, and with root we can use the Link2SD app to move most of the programs she does want over to the 16GB mini-SD card. The app warns that I haven't partitioned the card properly (it wants two partitions) but I can see that its moving the apps over to the card fine, freeing up internal memory. I'm worried that there is a good reason to get that fixed but we haven't realized it yet and really I'd spend enough time on it already. There still is very limited internal memory available, but at least there's a way around that now. Its basically like a new phone!