Well now...

As I said before, I bricked my Garminfone and traded it in for another phone. T-Mobile offered me an early exchange for a cheap Android device(their cheapest, mind you.). While adding an additional two years to my contract. For the cost of that, what did I get? a T Mobile COMET. Now, if it wasn't for the incredibly small display, or the fact that it was a REFURBISHED phone, it would have actually been a decent trade. But it's not worth another two years and a reset of your upgrade time.

Complete bullshit.

So, I switched to Sprint. The only downside is I had to make a deposit(100 per line.) and my wife and I got two new FREE Nexus S 4G's at Best Buy! That sounds like an advertisement...

So far, I'm glad I switched. All I can say for now is that it's cheaper, we'll be saving around $70.00 a month with Sprint for our phones. If I come up with anything bad to say about Sprint, I'll surely post it here.

Giving up

I bricked it for the last time, decided to get another phone instead.

Hopefully what I've posted, which seems to be more than anyone else has, will help others develop something for the Garminfone.

Enable Live Wallpapers for the Garminfone!

Due note, that you WILL notice a hit in performance. You've been warned!

1. Download this Zip from here: http://dl.dropbox.com/u/22031175/LWP.zip and extract to your SD card.

/sdcard/LWP
2. Using a file manager with Root access, copy
/sdcard/LWP/libRS.so
/sdcard/LWP/librs_jni.so
3. Paste and overwrite those files into
/system/lib/
4. Copy LiveWallpapersPicker.apk from
/sdcard/LWP/
5. Paste into
/system/app/
7. Grant LiveWallpapersPicker.apk these permissions
User Read/Write
Group Read
Others Read
8. Copy android.software.live_wallpaper.xml from
/sdcard/LWP/android.software.live_wallpaper.xml
9. Paste into
/system/etc/permissions
10. Reboot and enjoy!

How To: Build Garmin-Asus Kernel from Source

So, here's a short how to for compiling the source code provided by Garmin-asus. Please note there may be a step or two missing. I'll be updating this later when I get a chance to start from scratch and compile a better How To.

The originial directions for porting a kernel can be found here: http://wiki.cyanogenmod.com/index.php?title=Howto:_Build_a_Kernel_Port

1. Download the v.5.0.70 kernel source from garmin-asus.
Which can be found here: http://www.garminasus.com/developer/
2.

# curl http://android.git.kernel.org/repo >~/bin/repo
# chmod a+x ~/bin/repo
# mkdir <Android source dir> && cd <Android source dir>
# repo init -u git://github.com/CyanogenMod/android.git -b froyo
# repo sync
# export PATH=$PATH:~/<Android source dir>/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin
3. Copy the kernel folder from Garminfone_T-Mobile_5.0.70.tar.gz.
4. Place it in <Android source dir>
5. Rename it, 'asus-kernel'
6.
# export ARCH=arm
# export CROSS_COMPILE=arm-eabi-
# export KERNEL_DIR=/full/path/to/asus-kernel
7. Download my ERE27.zip found in my post: http://mygarminfone.blogspot.com/2011/05/rom-dump-for-garminfone-a50-21-update1.html.
8. Extract asus_defconfig
9. Place asus_defconfig in <Android source dir>/asus-kernel/arch/arm/configs
10.
# cd <asus-kernel source dir>
# make asus_defconfig
It should work, I pulled what I did from memory. So like I said, if you're having issues, give me some time to get together a better How To.

ROM Dump for Garminfone A50, 2.1-update1, Kernel v2.6.29

Here's a 'ROM dump' of the Garminfone A50, 2.1-update1, kernel v2.6.29. I compiled the zImage/Image from the source code released by garmin-asus using asus_defconfig(pulled and renamed from config.gz).

http://dl.dropbox.co...31175/ERE27.zip

The files contained in this zip are:
asus_defconfig
Image
zImage
config.gz
system.info.gz
system.tar.gz
boot.img
recovery.img

I'd also like to point out my objective is to get CyanogenMod 6/7 on our Garminfones. I could absolutely care less about the Garmin Navigation features at this point.

Porting Clockwork Recovery to our Garminfone

Follow my post about Creating your Environment for CyanogenMod.
Once you've finished that, you're ready to begin.

Also take note that I'm switching in between host OS and virtual machine OS.
Windows 7 Pro is my host, while Ubuntu 11.04 is on a VM. Assume I'm using Ubuntu if I haven't specified I'm on Windows.

Getting Started

$ cd /home/<USER>/Android/CyanogenMod/
$ make -j<number of processor cores + 1> otatools
Gathering the Required Files
We'll be using Windows for these next steps.
Using a Terminal Emulator on your Garminfone. 
# cat /sdcard/install > /data/local/install
# chmod 04755 /data/local/install
# /data/local/install
Android ROM dumper v0.72b
(c)2010 Sebastian404
romdump installed.
# /system/bin/romdump
Let it finish, it will take a minute or two.
Android ROM dumper v0.72b
(c)2010 Sebastian404
Device : ERE27

Creating required files... done.
Opening mtd table... done.
Dumping kernel config... done.
Dumping boot partition... done.
Dumping recovery partition... done.
Dumping system partition... done.
Creating Checksums... done.
Cleaning up... done.
All done.
The files we need will be on the sd card of our Garminfone.
/sdcard/romdump/ERE27/
Copy the folder ERE27 to our Ubuntu environment...
/home/<USER>/Android/
Creating the Recovery
Back into Ubuntu for these steps.
$ cd /home/<USER>/Android/CyanogenMod/
$ PATH=/home/<USER>/Android/CyanogenMod/out/host/linux-x86/bin:$PATH
$ . build/envsetup.sh
$ build/tools/device/mkvendor.sh garmin-asus a50 /home/<USER>/Android/ERE27/boot.img
Output will be in /home/<USER>/Android/CyanogenMod/device/garmin-asus/a50
Done!
Use the following command to set up your build environment:
  lunch full_a50-eng
And use the follwowing command to build a recovery:
  . build/tools/device/makerecoveries.sh full_a50-eng
$ lunch full_a50-eng

============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=2.3.4
TARGET_PRODUCT=full_a50
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=false
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=GINGERBREAD
============================================
So, before we run makerecoveriers.sh. We have to make a correction real quick.
Browse to /home/<USER>/Android/CyanogenMod/build/tools/device/ and open mkrecoveryzip.sh. Look for darwin-x86 and replace with linux-x86. Save and close.
$ . build/tools/device/makerecoveries.sh full_a50-eng
You should see this
Recovery FakeFlash is now available at /home/<USER>/Android/CyanogenMod/out/target/product/a50/utilities/update.zip
Now we have what we need, all in /home/<USER>/Android/CyanogenMod/out/target/product/a50. update.zip and recovery.img.

With that said and done. I haven't found a way to apply the update.zip, but I have found an alternitive method to getting us booting into clockwork recovery. That's for my next post though... =)

Creating your Environment for CyanogenMod

I'm really new to all of this. I only have a background in Development for C# and a bunch of Microsoft stuff. Nothing really Linux related. So tread lightly =)

Getting Started
I downloaded 64 bit Ubuntu 11.04 iso and created a Virtual Machine in VMWare Workstation. VMWare Player will suffice.

Initializing a Build Environment 
http://source.android.com/source/initializing.html
Complete the sections for Installing the JDK and Installing required packages.

Downloading the Source
$ cd /home/<USER>/
$ mkdir /Android/
$ cd /home/<USER>/Android/
$ mkdir /CyanogenMod/
$ cd /home/<USER>/Android/CyanogenMod/
$ chmod a+x /home/<USER>/Android/CyanogenMod/
$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl http://android.git.kernel.org/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
$ repo init -u git://github.com/CyanogenMod/android.git -b gingerbread
The repo init will prompt you for your name and email address.
$ repo sync
The sync process will take about a half an hour.