Zac's Pad

Tech, Toys, and Tidbits

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.

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.

Update 2: Murphy was an optomist.  OSX 10.6 is having some issues building Android.  Gah!

Update: None of the builds I made under Ubuntu 10.4 x64 would boot, which can’t be right.  I’ve rebooted in MacOS and am building again from here.  Hopefully this one will boot.

Ok, so here we go – I’m trying to compile 2.1 with the KH5200 kernel. I’m using Polytheus’ Tech Notes to guide me thru the req’d changes to RILD, etc. Hopefully I can get something booting today, though I’m not holding my breath. I’ll update this post as I progress. 🙂

LG has released the source code for the KH5200 (the Korean version of the GW620.)  The source has the 2.6.29 kernel sources included, so hopefully we can get a newer android of Android running soon!  We’re targetting 2.1 to start, but may try to get 2.2 going if 2.1 isn’t too tough.  

You can find the source code here.

Pixy and I have been talking about writing a game, and tonight we had our first “meeting” about it.  We now have the broad storyline figured out, as well as a few of the gameplay details.

I’m not going to give too much away, but I will say:

  • it’s going to be a metroidvania platformer
  • we’ll be using the most excellent Unity3d engine
  • it will be available on Mac/Windows/Android and maybe iPhone/Web
  • I’m not sure what spec Android device it will require, and probably won’t know till Unity3d 3.0 comes out, since that’s when Android support is introduced.

As we get a little further along I’ll create another section on the site here that will contain game notes, art work, and maybe even a web-player teaser level.  🙂

Quick note: I made a few more changes to the site.

  • The mobile theme is MUCH better now.  Have a look at from your android.  Very simple and clean.  🙂
  • Added a Docs section (see the menu up there ^^^) that will be a repository for all sorts of instructions.  Enjoy!

Update 3: Made a few more changes:

  • QR codes on the right for ease of Android access
  • Mobile site is now live, but the theme isn’t so hot.  Trying to find an AJAX theme that rocked as much as the wordpress mobile theme
  • Donate button is back, plus if you’re logged in when you donate the site will stop showing you the button and hide the ads, and shows a “Thank you” message instead.
  • Front page changed – now it shows the full text of the first story, teasers (with “more” links) for the next 10, and text links for the remainder
  • Killed the titles from the comments
  • Removed my Gravatar from all the posts, but left it on the comments

I think I’m now quite happy with the site!  Woohoo!  Now if only getting Eclair running was this easy!  😉

Update2: Made a bunch of changes now that I’m live on Drupal:

  • Anonymous comments and Polls are now allowed. 
  • I’m still not happy with the fact that each comment’s subject is a full-on title.
  • All the old comments are flat and unsorted.  The threading was lost on the import.   (All new comments should be threaded nicely though.)
  • I’m still working on the mobile theme.  Should have available for mobile devices soon
  • Ads are back.

Update: The site is now live on Drupal. All the content should be in place – and you shouldn’t notice much difference for now. The move to Drupal will allow me to better maintain and organize the site in the future – the first things I’ll be setting up is some nice HowTos and some forum-type commenting. As always, let me know if you have any questions. 🙂

I’ve been messing around with the Drupal CMS all evening, and I’m seriously considering switching my site over to it.  It’s not as easy to use at WordPress is, but it’s far more flexible and WAY more powerful and easy to manage.  WordPress is/was great for a blog and a light site, but as I get more and more info on here I’m finding it harder to manage and therefore harder for y’all to find it.

I’m going to play with it for another day or so, and if I’m still liking it then I may switch over this weekend.  🙂

So, I’ve been running my 1.6 Apps2SD image for a few days now, and I’m loving it so far! 

My favourite improvements are:

  1. Battery life
      • It used to last about 24 hrs for me, unless I hardly used the phone at all.  It seems like I’m getting around %50 more life.  My last charge cycle took 1day, 16hrs to drop from %100 to 5%.  Not too shabby.  That’s with wifi, Gmail, Facebook, Twitter, and Weather all running in the background.  🙂
  2. Apps
      • It’s totally subjective, but it feels like there are more apps available in the market for this version.
      • Wooo!  Dosbox works.  I just wish World Of Xeen was playable.
  3. SSHD
      • Oh dropbear, how to a love thee, let me count the ways!
      • The ability to ssh to the phone instead of using adb shell is a HUGE improvement.  Cursor keys work as expected, Nano works as expected, bash tab completion, colour ls even in Windows, the list goes on and on.  This may be my most favourite new feature.

We’ve also had some great ideas over on the XDA thread.   I’m going to work on making a very flexible boot.img that will allow a number of different things:

  1. Non nandroid flashing. 
    • You’ll have to nandroid the boot.img on once, but after that it’ll give you the option of flashing a firmware file from /sdcard during bootup.
  2. Recovery boot
    • I may be able to make something that’ll boot up a recovery image from /sdcard so we can make+restore nandroid backups and do other recovery stuff during bootup without needing to use “fastboot boot everecovery01a.img”  This will also allow Windows users to back up their phones without needing a linux VM or access to a Mac.

I’ll be working on this today, and will provide an update later on.  I expect I’ll be able to get 1 working today, but 2 will be a little trickier.

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


  • 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 “” 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.  🙂

Quick note – I just changed my webhost from Sunwave over to GoDaddy.  For the same price I get 30x the storage and 60x the transfer/bandwidth, plus 24/7 support!  Crazy!

There may have been some service disruption yesterday as the DNS records propagated, but it looks like it’s all good now. 

The extra storage on the new host should allow me to host more than 1 firmware image at a time – Woohoo!

ADB mysteriously stopped working in Linux for the 1.6 version of Android on the LG Eve. Here’s an adb that should work on the new image. As always, let me know if you have any problems!

A few of you have donated to my site in the past week – Thank you!

I wanted some way to publicly thank donators, so I’ve changed the donation system to optionally show your name and link to a site of your choice.  Unfortunately, the folks that have already donated previously aren’t included in the list but I’m looking for a way to get their usernames in there.

Also, I’ll be including a list of any non-anonymous donators in a small “Thanks!” app on each firmware I release. 

Your support is very appreciated, and keeps me hacking away!

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.

It’s just been a VERY busy few weeks.  Lots of travel to new clients, and so much work that I’ve not had the energy to do anything ‘cept relax in my free time.

I have done a few fun things though:

  • Built a 2-node  MythTV/Mythbuntu based media center.   Post about that is coming soon.  I didn’t get the new core i3 based media server I was planning on, but have rebuilt my existing server using mythbuntu and added a nVidia ION based box for the bedroom.
  • Upgraded my GW620 to firmware 1.0f.  It’s still android 1.5, but seems a little snappier.  The root method still works, so I’m going to port my apps2sd changes on to the new image this week.  I should have an updated firmware for y’all soon.  Maybe even today if I don’t get sidetracked.

I’ve decided to spend my tax return on a pair of new media systems and a projector. Here’s what I’m looking at so far: Projector: Epson 705HD.

  • It’s a nice inexpensive projector that has been getting rave reviews.  It will be perfect for our living room.

Media Server: For the living room – running the projector

  • Mythbuntu front and back ends
  • Will also run rtorrent, rtgui, file services, and the MPD music server.
  • Core i3 530 @ 2.93GHZ
  • 2gb DDR3 1600 RAM
  • Gigabyte GA-H57M-USB3 micro atx motherboard.  It is tiny and has HDMI output from the i3 AND raid5 onboard.  Shwing!
  • 4 x Seagate Barracuda LP 5900.12 1.5 TB drives in a RAID 5 for a total of 4.5 TB of storage
  • nMEDIAPC Red Wood HTPC 8000 ATX Media Center Case (simply beautiful!)
  • Should use ~100 watts total power.

Media Client: For the bedroom – running a 22” monitor (eventually replaced with a 37” TV)

  • Mythbuntu front-end only
  • Zotac IONITX F-E – Dual core Atom/NVidia ION platform
  • 2 GB DDR2 800 RAM
  • Whatever 2.5” drive I have laying around.  Probably a 40 or 80gb from a broken laptop I have laying around.
  • Antec ISK 300-65 case.  About the size of an old-school external CD drive.
  • Should use ~25 watts total power.

I’ll document the build as I progress – I should be starting in about 3 weeks.  🙂 The machines that these are replacing are currently VERY dated and I expect I’ll end up almost eliminating ambient noise in the living room, and should reduce our power usage to about 1/4.  Woo-hoo!!!

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:
  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! 😀