Tech, Toys, and Tidbits

Android

Supreme Court opted not to hear the case despite a huge swath of IT folks sending in amicus briefs encouring the SC to hear the case.  🙁

Well, I guess it’s far past time to stop using Java.

Oracle may have “won” but it’ll be a Pyrrhic victory when everyone and their dog stops using Java.

We’ve already started at my company. We’re phasing out products that rely on Java (notably Cisco ASA firewalls) and are going to either non-java-web-based products, or products whose admin tools don’t use Java in any form.

Not sure what’ll happen with Android’s ART/Dalvik, but I have to assume Google has something in the wings to throw in to place if they don’t win the fair-use trial. Or even if they do win, for that matter.

Though there may a loophole – since ART/Dalvik are already open sourced, perhaps they can use the GPL’d Java headers, and relicense ART/Dalvik under the GPL.

It’ll also be interesting to see how this affects the compatibility layers for Android that have started showing up in the newer Windows and OSX builds… Presumably, and sadly, they’ll be dropped in fear of being attacked by Oracle.

This may end up being a huge win for OSS, actually. If programmers stop trusting that they won’t get sued for being API compatible with a closed-source API then they may choose to use OpenSource APIs instead.

Still, fuck Oracle, and fuck copywrite maximalists. These companies that were built on innovation are now spending millions to stifle it. Fucking hypocrites.

Here’s an amazing video about why the patent system is so badly broken, how it’s strangling the public domain, and radically stifling progress.  Well worth watching – trust me, you need to see this.

Everything is a Remix Part 4 from Kirby Ferguson on Vimeo.

Soooo….
I’ve been beta testing a new phone, and to ease the testing I ported Amon RA’s recovery ROM to it.  It works beautifully.

As a result, I’m much more comfortable messing with RA’s recovery, so I took a few hours and got it working on the GW620 too.

Use Volume+ and – to navigate.  Camera to select, and back to go back.  🙂

For some reason there are still “MISC” errors appearing, but you can safely ignore them – they don’t seem to do any harm.

I’ve tested a NAND backup and restore, and it works beautifully.  No clue if BART works, or any of the other fuctions.

Download the everarecovery.img here, and as always boot it up using
“fastboot boot everarecovery.img”

First:  So I spent some time setting up Google reader yesterday, and I have to say it’s a powerful product!  Combined with FeedR on my phone I can now read up on all my frequented sites from wherever I am.  It’s a thing of beauty!  I’d highly suggest anyone reading this give Reader a try.

Second:  My site here has been languishing a little since all the GW620 firmware development moved over to OpenEtna.  Not that I’m complaining – I think the OpenEtna project is waaay better than anything I was able to hack together on my own.  It just goes to show the power of open source and collaborative development.  However, it does mean that I need to come up with some new stuff to post about – more on that later.

Third:  Now that OpenEtna has stabilized a bit, and we don’t need to wipe every time we install a new version, I’ve actually spent some time getting my phone all set up.  Here’s a brief rundown of my rig:

  1. Launcher:
    • LauncherPro.  I know AWD (the default launcher on the firmware) is amazing, but LauncherPro adds a few key features that I just can’t live without – mostly in the widget department, and the triple-dock.
  2. Desktop Layout:
    • 5 desktops, defaulted on 3. 
    • Desktop 1 – FeedR widget, full screen
    • Desktop 2 – People widget (contacts) full screen
    • Desktop 3 – My main screen.  Google search, weather + news, calendar, gtasks, and a few misc icons.
    • Desktop 4 – Friend widget (Facebook + Twitter feeds) full screen
    • Desktop 5 – Games
    • Dock 1 – Phone – GMail – AppDrawer – Market – Browser
    • Dock 2 – Listen – Audible – AppDrawer – Music – Movies
    • Dock 3 – MPDroid – Mythmote – AppDrawer – Nav – Maps
  3. Everyday apps:
    • AppBrain Market.  Ah, the way the market should be.  I think the official market is moving in this direction, but for now I’m sticking with AppBrain
    • Audible.  I loves me some audiobooks!  Having Audible on my phone means that my iPod hasn’t seen use in weeks.
    • ConnectBot.  SSH from my phone?  Yes please!  I run my home net, my media centers, my websites, and a few of my clients on Linux.  Having SSH on my phone means I don’t always need to grab my laptop if I need to fix/change/fiddle with servers.
    • ConvertPad. Conversion calculator extrordinaire.  Mostly used for mpg-to-l/100km conversions.
    • DrupalEditor.  Lets me edit/maintain my various sites from my phone in a pinch.
    • Evernote.  Keep notes/photos/websnips in the cloud.  Great for all the stuff you just need sometimes.  Ferry schedules, and the like.
    • FeedR.  Simply the best RSS/GoogleReader client for the phone.  I’ve tried a few others, but none can compare.
    • GTasks.  Why Google doesn’t have a Google Tasks client built in to Android is something I will never understand, but this 3rd party app works fine.
    • Listen.  Podcasty goodness delivered straight to the phone.  It’s like RSS for podcasts.  Pure brilliance!
    • Google Maps and Google Navigate.  Must have apps.  Hell, Nav is half the reason I wanted to get up to a current version of android – it doesn’t work on 1.5.
    • Mint.  Financial managment in the cloud.  Beautiful!  Instant access to our budgets and balances from anywhere.
    • MPDroid.  Control my MPD based music system from my phone.  It’s even better than many of the desktop clients, but fits in your phone.  It’s not as powerful as Aria or Theramin, but comes pretty damn close and fits in my pocket.
    • Rogers MyAccount.  Makes it easy to keep an eye on my data usage.
    • Mythmote.  Turns my phone in to a remote control for my MythTV based media centers.  Now Pixy and I don’t have to fight over the remote anymore.
    • PocketCloud.  VNC+RDP client for Android.  Best I’ve used so far, though the full version is a bit expensive for an android app.
    • TD.  Banking client.  It’s not as rich in the planning dept as Mint is, but it lets me do transfers and pay bills.
    • Transdroid.  Keep an eye on my rTorrent server.
    • WikiMobile.  Optimized access to Wikipedia.  Great for looking stuff up when I’m out and about and in the need of factoids.
    • XDA.  By far the easiest way to keep up to date on the XDA-Developers forums.
  4. Games!  This list is totally transient.  More than anything else on my phone the games come and go.  Here’s a list of what’s on there right now:
    • Alchemy.  Mix and match elements to create new elements.  Amusing, funny, and brain twisting logic game. 
    • Angry Birds.  The classic, now for android.  The new version doesn’t run so fast, though I hear with a modest overclock it’s back to being playable
    • Antibody.  Real time Risk, with upgrades, in the microscopic realm.  Great fun!
    • Doom.  Installed more as a demo than to play.  I had to upgrade my computer so I could play Doom when it came out, so having it on my phone is a trip
    • Dungeon Wonders.  Haven’t actually had a chance to play this yet, but it’s supposed to be a pretty good jrpg
    • Evac.  Stylized modern pacman.  Good fun.  May even purchase it.
    • Everlands.  I installed all the hexage ‘lite’ games I could find on the market.  This one is the only one that I’m not immediately considering purchasing.  I’ll have to give it a few more days, and run thru the tutorial, before I decide though.
    • Galcon.  Real-time Risk in space.  Great fun, but I think I prefer Antibody.  This has more game modes, but Antibody has upgrades which lend it a more epic feel.
    • PVZ.  Unsanctioned an illegitimate Plants vs Zombies clone for Android?  Wow!  Popcap should be embarrassed that a lone hacker managed to get their signature game out for Android before they even tried.  Booo Popcap!  I’ll still buy the official PvZ when Popcap eventually gets off their ass and releases it, but for now PVZ fills the void nicely.  This was removed from the Market almost as soon as it was published, but if you google for “pvz.apk” you should be able to find it.
    • Radiant.  Kick-ass shooter!  The best I’ve seen for Android so far.  Lots of different weapons to buy, and flawless controls even on devices without multitouch. 
    • RoboDefense.  Simply the best tower defence game on Android.  I’ve tried a few others, and keep coming back to this one.  If you like the genre, then you owe it to yourself to check this one out
    • Scrambled Net.  Back in the day I played a variation of this game on my PalmOS devices.  Great logic puzzler with an IT theme. 
    • SimCity.  Didn’t even know this existed till recently.  Looks a LOT like they ported the original Simcity to Android.  Sadly, this one doesn’t show up in the market for me so I’m running a less-than-legit version.  I’ll have to find some way to pay for it if I end up playing it for more than a few mins.  So far I find the interface very klunky and not well adapted to Android, but I’ll give it a few more plays to see if it’s worth keeping.
    • Sims3.  Meh.  Thought I’d give it a try, even though it’s not visible in the Market for me, so I’m running a pir8 version.  Buuut, I never did like any of the sims game, and still have a bit of a hate-on for EA for closing the best online (or offline, for that matter) car game and then adding insult to injury by trying to get me signed up for The Sims Online instead.  RIP Motor City Online.  10 years later and there’s still no game that comes close to the level of car customization you offered.
    • Totemo.  Played the first few levels, and it seems like it could be good.  I’ll finish playing the demo and see if it gets harder, but so far it’s a little too simplistic.
    • UnblockMe.  Classic “free the car from a jammed parking lot” game.  Very well executed, and has some devilishly hard levels.
    • WordFeud.  Multiplayer Scrabble via the cloud?  YES PLEASE!  

The gang at OpenEtna have managed to get Froyo (Android 2.2) running on the GW620!

Wooohoooo!!!

All the info is on the OpenEtna Page.

The fine folks over at OpenEtna have released version 4.2 of their excellent 2.1 based firmware for the GW620. Mostly a bugfix release, but they have introduced the JIT from 2.2 in to this firmware, which makes things MUCH faster. Sound is fixed, GPS works again, but Call Display is still messed up. I’m hosting it here for ease of download.

Through a lot of hard work and modifying the frameworks, Polytheus has managed to get Android 2.1 working on the GW620! I’m hosting the file here, and I’d also encourage you all to go to the project page and click the donate button to buy him a beer for all his hard work.

This one is based off the Korean KH5200 V10T.

It’s an Android 1.6 image for the GW620. Apperently, the difference between the previous V10R and this V10T is mainly fixes around the keyboard and battery life. Personally, I didn’t have any problem with the battery life in the last image – it was a big improvement compared to 1.5 but others were having major issues.

Get the image here.

I’ve added the excellent ADW Launcher as well as the previous TagLauncher, and made a few other small refinements, but nothing major. Mainly small stuff.
e.g. Included Anycut to make it easy to set your APN back up…

Same features and issues as the last firmware.
e.g. Google Goggles is still broken, it’s still Korean (by default) and English, it still requires manual APN setup, SMS is still limited, and Call Display is still b0rked.

IMPORTANT!
If you are running a 1.5 based firmware YOU MUST FACTORY WIPE YOUR PHONE before installing. You should also record your APN settings if you don’t know them.

See the the previous firmware post for details.

For full installation instructions have a look at the Firmware Installation Docs. Give it a go and let me know how it works for you. 🙂

Yay! Google released the Android 2.2 source today! I’ll poke around at it over the next few days – maybe I’ll have better luck getting it to compile! 😀

Update: I downgraded to gcc4.3 and Java SDK5, and Froyo is compiling fine.  I’m still unable to boot the result though.  🙁  I’ll try again tomorrow.

Update2: The kernel is booting, but /system isn’t mounting, so ‘sh’ isn’t available, and logcat can’t run.  Putting sh on the initrd changes the error – but it just quits directly after launching.  Grrrr.  Not sure why /system isn’t mounting – the init.rc looks ok…  I may try getting it to mount by it’s device name instead of it’s mtd name.  I’m off to work – I’ll poke at this some more when I get home.

Update 3: LiBe (in the comments below) managed to get 2.2 booting using Routehero’s 2.0 boot.img.  I just played around a little on my lunch break and was able to duplicate his results.  Same issues as before – e.g. No sound, no radio, no wifi.  The boot.img was still using the old 2.6.27 kernel.  Replacing the 2.6.27 kernel with the 2.6.29 from V10T resulted in a non-booting boot.img, and as before logcat doesn’t work so I can’t even see why it’s not booting.  Grrrr.  🙁
However – 2.2 did seem to run ok.  Once I turned off Animations it even ran fairly fast.  🙂

Update: The image based on V10T is almost done.  Everything is working except Wifi won’t connect.  🙁  Once I get it figured out I’ll upload the image.

I’ve installed the KH5200 V10T image on my phone, and will have a rooted + enhanced version ready for y’all soon.  

I don’t see any differences in the phone yet, so I think it’s just a bugfix release…

Still have to enter the APN, Call Display still doesn’t work right unless the caller is in your address book, and SMS is still limited to 90 chars.

Here’s the source for the version of ADB that works in Linux. I don’t think I made any major changes to it – I was trying to make it work properly in OSX when I still thought the problemdetailed here was an issue with ADB. It turned out to have more to do with LG, but I’d fumbled around a little in the ADB code trying to make it work initially, and this version seems to work in Linux with the new firmware. I suspect that what’s actually going on is that the version of ADB distributed in the SDK is older than the one distributed with the AOSP, and the AOSP version just works, but here’s the source regardless. 🙂

Update: Something seems to have gone horribly wrong with the first image. Give this one a try instead. A few people have confirmed that it works.  It’s a slightly smaller repack of the same image – I reduced the size by removing a few of the apps I’d crammed in to /system/app, so you’ll have to install Facebook and Google Sky yourself now. 😉

Well, Rogers/LG is being brutally slow releasing the 1.6 update.  There is already a Korean update for the KH5200 that mostly works on the GW620, so I spent some time today making it run as smooth as possible.  I currently have an image that is working well, but you have to manually config the APN after installing or there’s no 3G connectivity.

The image is as done as it’s going to get tonight.  Don’t get it here!  Make sure to read the Known issues while it’s downloading – there are some things you need to do to make the image work properly.

The status so far:

  • Running well on 1.6
  • 3G works after manual APN setup
  • Rooted with SuperUser APK
  • Bash/nano/busybox/terminfo available
  • Made the required mods to the initrd to enable tolemaC’s Apps2SD method
  • tolesetup works
  • Cleaned up most of the cruft from the Korean image (e.g. Maple Story, Seoul Subway map, etc)
  • Added upgraded Google maps + Google Nav to the system.img so it doesn’t take valuable userdata space
  • Added a bunch of apps and utilities to the remaining free space on the system.img.  It’s now packed to the brim with goodness.
  • Set the init.rd to mount the /system partition as read/write.  No more “adb remount” to make changes
  • Included the excellent TagLauncher home screen.  It’s free, and it rocks!
  • SSHD out of the box!  Now you can ssh to your phone.  Login as with “gw620” for the username and password.  You can change the user/pass by editing the /system/bin/rundropbear file.
  • Lots of other little things

ToDo:

  • Get the APN auto-configured
  • See if I can remove the obnoxious password from the “Enable Root” menu

Known Issues:

  • Google Goggles crashes after taking a pic
  • First boots in Korean.  You need to hit “next” at the bottom, and then select English.
  • Will definitely require a wipe of userdata or factory reset before installing.   Go in to the hidden menu and do a factory reset, OR when you boot up in fastboot mode to burn the image do a “fastboot –w”
  • You need to manually add the APN before data connectivity will work.  To add the APN follow these instructions:
    1. Install the image (duh)  😉
    2. boot up, and go to the dialer
    3. enter 3845#*5200# to enter the hidden menu
    4. Click on Module Test
    5. Click on Stability Test
    6. Click on Enable Root
    7. Enter the password “eve&adam&&620love!”
    8. reboot the phone
    9. open a command prompt on your computer
    10. “adb shell am start -a android.settings.APN_SETTINGS”
    11. The APN config will open on the phone.
    12. Click “New APN”
    13. Enter the APN info.  For Rogers, just set the name as “Rogers” and the APN as “internet.com” and leave everything else as default.  Other carriers will have to look online to get their APN settings.
    14. That’s it.  Data should now work.  🙂

Thanks to tolemaC for his excellent work on the tolesetup utility, which I’ve blatantly ripped from his most excellent 1.5 image.

Thanks to everyone that has hit that little donate button too, and to everyone who’s sent encouraging words and suggestions.  🙂

Update: Don’t use this unless you really have to – the new Korean 1.6 image is WAY more stable. This one crashes, apps don’t work, and it basically sucks.

Ok, here’s a quick and dirty root of the Rogers beta 1.6 rom.

3g will not work unless you do a factory reset.

The ABI problem is fixed, so NDK code will install. (e.g. Dosbox, Google Goggles, etc)

I’ve been running this for a week, and it’s fairly stable. Outside of having to factory-reset to get 3g working, everything has been smooth with it.

I’ll work on an Apps2SD version once I have a final version from Rogers in my hands.

Enjoy – and let me know if you have any issues. 🙂

There are a few issues now – this is definitely early Beta… Don’t install unless you can handle a little instability.

Fixed! I can now use ADB to talk to the phone in OSX! Turns out that it’s a problem with the way that LG designed the phone’s composite device vs the way that OSX recognizes composite devices. USB devices all present a class and a subclass to the OS when they’re plugged in. For composite devices the class is 0 and the subclass can be 0 (legacy) or 16(current.) Linux plays a little fast and loose, and assumes that anything with a class of 0 is a composite device, but OSX is a little more stringent. It looks for the subclass to be proper. LG made the subclass on the GW620 a 2. Not 0 or 16 like the USB spec says, but 2. Totally non-standard. So, I modified the Info.plist for OSX’s composite device driver so that it would also accept 2. Problem solved. 🙂 Here’s what you need to do to make it work:

  1. Open terminal (Applications/Utilities/Terminal)
  2. “cd /System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns/IOUSBCompositeDriver.kext/Contents”
  3. “sudo nano Info.plist” (or vi, or emacs, or whatever console editor you prefer)
  4. Copy the IOUSBComposite section (from <key> to </dict>)
  5. Paste the section in at line 66 (right after where it appears) so you have 2 copies in the file
  6. Change the bDeviceSubClass value from 0 to 2
  7. Change the key name from “IOUSBComposite” to “GW620”
  8. The end result should look something like this:
                    <key>GW620</key>
                    <dict>
                            <key>CFBundleIdentifier</key>
                            <string>com.apple.driver.AppleUSBComposite</string>
                            <key>IOClass</key>
                            <string>IOUSBCompositeDriver</string>
                            <key>IOProviderClass</key>
                            <string>IOUSBDevice</string>
                            <key>bDeviceClass</key>
                            <integer>0</integer>
                            <key>bDeviceSubClass</key>
                            <integer>2</integer>
                    </dict>
    
  9. “sudo diskutil repairpermissions /” and let it finish
  10. “sudo touch /System/Library/Extensions” and wait a few mins for the extension reindexing to finish
  11. “adb devices” should now see your phone

Note, this is VERY kludgy, and will probably break every time OSX updates itself, but it works. I can finally stop rebooting every time I want to work on the phone! 😀

CyrilLD over at XDA found the serial console header on the GW620! It’s the 5 contacts in a row underneath the SIM card. The center one is the TX pin. This is a 3.3v serial port, so you’ll need a level converter of some sort to connect it directly to a PC’s serial port, but most USB-Serial adapters already operate at 3.3v so they should work fine.

I’m now trying to build a kernel (based on the default LG sources) that will output to that port during boot. If I can get boot messages on that serial port, then I should be able to duplicate the settings on the 2.6.29 kernel and hopefully get enough info to figure out where it’s crashing. Finger’s crossed!

To quote King Crimson: “Frustration will be my epitaph.”

<vent>

Sooo I’m trying to port the changes that LG made to the kernel (that let it run on the GW620 hardware) and it is being a serious pain in the arse.

We need kernel 2.6.29 in order to fully run Android 2.0. So, a porting I will go! Gah! I started by trying to use diff to merge the changes automatically in to the newer kernel. I tried a few different approaches, and they all failed badly. Either there were 100s of merge errors, or the code was uncompilable spaghetti at the end of the merge, or a combination of the two.

I’m now trying to bring just the required hardware drivers in to a stock 2.6.29 source tree, and even that is giving me an insane amount of grief. Arg!

Arg Arg Arg Arg.

</vent>

Edit: I have the video driver folded in to the new kernel now. Kernel still won’t boot though. There’s a few more Eve specific drivers I need to incorporate.

LG Just gave us access to the GW620’s open source code!

We should now be able to compile a more recent kernel for it, and hopefully get Android 2.0 working!  Wooohooo!

I’ve uploaded the source code here.  It’s open source, so I don’t think LG will mind.

Update:

Tolemac has made an Apps2SD image based on 1.0g that is way better than mine.  I highly recommend that anyone looking for an update check out his image at

Get it here

Cheers!

Features:

  • Pre-rooted with su/superuser.apk
  • sh replaced with bash (yay for tab-completion!)
  • full busybox setup. (cp/mv/less/grep and more!)
  • Terminfo set up for curses based apps
  • Nano pre-installed – nice to have a small/fast text editor on the command line.
  • Swapped out the Rogers bootup logo with something a little nicer stolen from (MyHangOutOnline) – minus the “It’s not Windows” line.
  • Auto mounts the 2nd partition of the SD card to /data/app if available (for apps2sd action!)

Instructions for installing firmware:

  1. Download the firmware (boot.img and system.img) and unzip it somewhere.
  2. Make a full nandroid backup of your phone! Really. Do it. Better safe than sorry. If you don’t make a backup and brick your phone then good luck recovering it with the LG software.
  3. Remove the battery from your phone
  4. Ensure it is NOT plugged in to USB
  5. Open the Keyboard
  6. Plug the phone in to USB, wait 2-3 seconds till the screen brightens slightly, and then hold down the space bar
  7. If you get the fastboot screen, proceed. Otherwise unplug and try the previous step again.
  8. At a command prompt type:

    cd <place where you unzipped the file in step 1>
    fastboot flash boot boot.img
    fastboot flash system system.img

  9. Unplug from USB
  10. Plug the battery back in, and hit the power button to boot up.

Now, you have an apps2sd rom installed, but your SD card is probably not set up for it. You’ll still get all the features of the firmware, but your apps will still be in the phone’s memory instead of the sd card.

There are a few ways to get your SD card set up properly. The one I used on OSX went something like this:

  1. Power off the phone, and remove the SD card
  2. Plug it in to a micro-sd USB reader.
  3. copy everything off the card in to a directory on your desktop
  4. use Disk Utility (in /Applications/Utilities) to delete the existing partition on the SD card and then create 2 new partitions. I have an 8gb sd, so I created the first partition as 6gb for data and the 2nd as 2gb for apps. Have Disk Utility format the first partition as FAT and the 2nd as Ext2.
  5. Copy everything from step 3 back on to the first partition
  6. Reinsert the SD card in to the phone and boot it up. The firmware should automatically detect the 2nd sd card partition and move all your apps over to it.
  7. You can verify it worked by doing an “adb shell mount” at a command line. The 2nd-to-last line of the output should read:

    /dev/block/mmcblk0p2 /data/app ext2 rw,noatime,nodiratime,errors=continue 0 0

If you are using Linux or windows you’ll have to follow a different process, but the results will be the same – an SD card with 2 partitions. The first partition is for data and must be formatted as FAT. The 2nd partition is for apps and must be formatted as ext2.

Here are some pages detailing SD card preparation:
This one looks like it does it all from the phone! Cool if it works!
Here’s another that works from the phone. This may be the best way to go – you boot the phone up with the nandroid recovery image and do all the partitioning from there. Sweet!

Google has many more how-tos to get the sd card set up.

As always, let me know if you have any questions.

Important note:  There’ve been a few reports of people being unable to boot their restored backups.  This is due to the version of unyaffs installed on the system.  It is very important that you use the patched version detailed here.

If you use the ‘stock’ version of unyaffs then permissions are not correctly extracted, and the backup of your system partition will be corrupted.  You may still be able to get around this by restoring the system.img from whatever firmware you’re using and then restoring the userdata.img from your backup.  YMMV.

Nandroid for the LG Eve GW620. Modified by Zacpod (www.zacpod.com) from Nandroid 2.0 I’ve modified Nandroid and the CM Recovery image to (Mostly) work on the Eve. So, we can now take backups of our devices. Yay! Unfortunately this will not work from Windows – you need to use MacOS or Linux. Windows just doesn’t have the tools required to make it work. It might work in Cygwin under windows, but I’ve not tested it. Here’s the tool! Disclaimer: This software is provided as is. I take absolutely no resposibility for anything that may break while it is in use. All I can say is that it works well for me. Your mileage may vary. Instuctions for use: Backup:

  1. Boot the device in to Fastboot mode. (e.g. power the device on and hit space within about 2-3 seconds)
  2. From a Linux root command prompt (#, not $) cd to the directory you unpacked this archive in to
  3. Type “fastboot boot everecovery01a.img” You may need to specify the full path to the android sdk. E.g. “/usr/android-sdk-linux/tools/fastboot boot everecovery01a.img”
  4. Wait while the recovery image boots on the device
  5. Type “./nandroideve01a.sh <backupname>” where <backupname> is the folder you want the img files to go to.
  6. Wait patiently, especially for the system and data partitions
  7. Study the output. Ensure there are no errors! I can’t stress this enough. If there are errors listed you probably do NOT have a valid backup.
  8. To verify your backup you can use the unyaffs command on the system.img and userdata.img and examine the results to ensure they match what’s on the device.

Restore prep:

  1. Boot the device in to Fastboot mode. (e.g. power the device on and hit space within about 2-3 seconds)
  2. From a Linux root command prompt (#, not $) cd to the directory you unpacked this archive in to
  3. Type “fastboot boot everecovery01a.img” You may need to specify the full path to the android sdk. E.g. “/usr/android-sdk-linux/tools/fastboot boot everecovery01a.img”
  4. Wait while the recovery image boots up
  5. Type “adb shell” to get to the phone’s command prompt. Again, you may need to specify the full path to the adb command if you haven’t put the sdk in to your $PATH
  6. From the devices command prompt: (Note: These commands are destructive. Make SURE you have a complete and valid backup of your device before executing!) We zero out the system and userdata partitions because simply restoring an image, even if you “fastboot erase” first, results in a corrupted filesystem
  7. Type “cat /dev/zero > /dev/mtd3” to erase the Cache partition (you’ll get an error about device full at this point. That’s ok, it just means the command finished.)
  8. Type “cat /dev/zero > /dev/mtd4” to erase the userdata partition (same error here as in the previous step. Ignore it.
  9. Type “cat /dev/zero > /dev/mtd6” to erase the cache partition (same error here as in the previous step. Ignore it.
  10. Type “exit” to get back to your Linux shell prompt
  11. Now you can do the restore!

Restore:

  1. Boot the device in to Fastboot mode. (e.g. power the device on and hit space within about 2-3 seconds)
  2. From a Linux root command prompt (#, not $) cd to the directory you specified as your <backupname> in backup step 5
  3. Type “fastboot flash boot boot.img” (specify sdk path as before if req’d)
  4. Type “fastboot flash system system.img”
  5. Type “fastboot flash userdata userdata.img”
  6. Done! Reboot, and you should have your system back!

Note: For steps 3, 4, and 5 of the recovery process. If you get a FAILED message when writing the img file, simply reboot in to fastboot mode and try again. Sometime fastboot can only write a few times before it needs a reset. Also, for any of these processes I find it easiest to take the battery out and leave it out till I’m done. Fastboot and the Recovery image will both happily work via USB power, and it makes the resets as simple as unplugging the USB cable.

A few of us over at XDA have been trying to root the Eve for a few weeks now, and we’ve finally done it! W00t!

This guide assumes you already have ADB access to your device. If you don’t you need to google for the android SDK and get yourself connected.

Let me know how this works for you all, or if anything is unclear. 🙂

  1. Download this version of Superuser Whitelist and unpack it somewhere safe
  2. On the GW620 dial “3845#*620#” to get in to the secret menu
  3. Tap “Module Test” then tap “Stability Test” then tap “Enable Root Permission”
  4. Open a shell/command prompt/terminal. (cmd, or bash, or zsh, or whatever you use)
  5. Type “adb shell” (You may need to use “/path/to/android/sdk/tools/adb shell”)
  6. You should get a #. If you get a $ then something didn’t work. Shutdown the phone and PC and start again from 2)
  7. If you get a # then all is well. Type “exit” to return to your PCs command prompt.
  8. Type “adb remount” to remount the GW620’s file system as read-write so we can make changes.
  9. Type “cd /path/to/the/unzipped/superuser.zip”
  10. Type “adb shell cat /system/xbin/su > /system/xbin/su.original”
  11. Type “adb push bin/su /system/xbin/su”
  12. Type “adb push bin/su /system/bin/su” (You need this one too, as some apps look for it there. E.g. Quickboot)
  13. Type “adb shell chmod 4755 /system/xbin/su”
  14. Type “adb shell chmod 4755 /system/bin/su”
  15. Type “adb install bin/Superuser.apk”

Done. That’s it. You should now be able to run apps that require root. If an app needs root access a window will pop up on the phone asking for permission to use root.