Michael Mayhew

ChainHost: Android Discount!

by on Apr.13, 2010, under Uncategorized

It’s pretty obvious this blog is dead as I haven’t posted in months.  I started this blog as a graduate school assignment and focused on Android-based topics.  It quickly caught on and I started receiving hundreds of visitors a day.

Since this blog won’t be updated anymore, I wanted to offer something to my Android readers.  I recently founded ChainHost, a hosting company specializing in shared hosting and linux-based virtual servers.  Maybe you want a hosting account for your own blog or website or maybe you want a linux server play on or host your web applications.  Either way, sign-up and use the promo code AndroidBlog to receive 20% for the life of the account.  This is a very deep discount but I really wanted to find a way to thank you guys for following the blog.

To recap, go to ChainHost and sign-up for any shared hosting or VPS plan and use promo code AndroidBlog and receive 20% forever!

Feel free to pass this discount on.


Leave a Comment more...

Google Maps with Turn by Turn Navigation for CyanogenMod

by on Nov.11, 2009, under Android, Technology

Final Update: Google has released Google Maps 3.2.1 in the Market with native Navigation support.  These instructions are no longer needed.

Thanks for all the support and kind words.

If you have Google Maps installed with my instructions below, it would be a good idea to revert and re-install through the Market.

Do this to revert:

ADB Instructions:

  1. Download http://mmayhew.com/4.2.5_build_files.zip
  2. Open a command prompt in the folder you unzipped  the 4.2.5_build_files.zip files
  3. Run the following commands from command prompt:
  4. adb remount
  5. adb shell rm /system/app/*maps*
  6. adb shell rm /system/app/*Maps*
  7. adb shell rm /system/sd/app/*maps*
  8. adb shell rm /system/sd/app/*Maps*
  9. adb shell rm /system/sd/dalvik-cache/*Maps*
  10. adb shell rm /system/sd/dalvik-cache/*maps*
  11. adb shell rm /data/dalvik-cache/*maps*
  12. adb shell rm /data/dalvik-cache/*Maps*
  13. adb shell rm /data/app/*Maps*
  14. adb shell rm /data/app/*maps*
  15. adb push build.prop /system/
  16. adb push build.trout.prop /system/
  17. adb push build.sapphire.prop /system/
  18. adb shell reboot
  19. Go to the Market and install Google Maps.
  20. You’re Done!

Terminal Instructions:

  1. Download http://mmayhew.com/4.2.5_build_files.zip
  2. Unzip zip
  3. Copy build.prop, build.trout.prop, build.sapphire.prop and Maps.apk to /sdcard/
  4. Open Terminal on your G1/MT3G
  5. su
  6. mount -o remount,rw /system/
  7. cp /sdcard/build.prop /system/
  8. cp /sdcard/build.trout.prop /system/
  9. cp /sdcard/build.sapphire.prop /system/
  10. rm /system/sd/app/*Maps*
  11. rm /system/sd/app/*maps*
  12. rm /system/sd/dalvik-cache/*Maps*
  13. rm /system/sd/dalvik-cache/*maps*
  14. rm /system/app/*Maps*
  15. rm /system/app/*maps*
  16. rm /data/app/*maps*
  17. rm /data/app/*Maps*
  18. rm /data/dalvik-cache/*maps*
  19. rm /data/dalvik-cache/*Maps*
  20. reboot
  21. Install Google Maps from Market
  22. You’re Done!

Update (on the Final Update):

If you get “Incompatible Update” when updating Google Maps in the Market, try the following. It has worked for me and others.

Download these files again.

ADB Users:

  1. Follow the above steps for ADB but after step 18 (reboot) do the following:
  2. Unzip files
  3. adb remount
  4. adb push Maps.apk /system/app/
    1. If you get an error that says the filesystem is read only do the following
    2. adb shell mount -o rw,remount /system/
    3. Then rerun the command
  5. Now go to the Market and try to re-install

Terminal Users:

  1. Follow the above steps for Terminal but after step 20 (reboot) do the following:
  2. Unzip files and copy to your SD card.
  3. In Terminal:
  4. su
  5. mount -o remount,rw /system
  6. cp /sdcard/ /system/app/
  7. mount -o remount,ro /system
  8. Close Terminal and re-install through the market.


Thanks to the guys on XDA we now have Google Maps with Nav from Eclair working on Donut-based CyanogenMod 4.2.5

Download the files from: http://www.mmayhew.com/Navigation.zip

Linux Users Only: Feel free to use this script by foopirata to automate the adb process.  I have not tested this script but it looks like it would work.  You will need to do the following:

  • Run the script as root
  • Have the SDK installed and adb in your path
  • Have the phone connected via USB
  • Be familiar with running bash scripts

If the script doesn’t work for you or you are not a Linux user, try the manual processes below:

ADB Instructions for Windows, Mac and Linux users: If you have the SDK installed and are familiar with adb, do the following. If not, skip down:

  1. Open a command prompt in the folder you unzipped  the Navigation.zip files
  2. Run the following commands from command prompt:
  3. adb remount
  4. adb shell rm /system/app/*maps*
  5. adb shell rm /system/app/*Maps*
  6. adb shell rm /system/sd/app/*maps*
  7. adb shell rm /system/sd/app/*Maps*
  8. adb shell rm /system/sd/dalvik-cache/*Maps*
  9. adb shell rm /system/sd/dalvik-cache/*maps*
  10. adb shell rm /data/dalvik-cache/*maps*
  11. adb shell rm /data/dalvik-cache/*Maps*
  12. adb shell rm /data/app/*Maps*
  13. adb shell rm /data/app/*maps*
  14. adb push build.prop /system/
  15. adb push build.trout.prop /system/
  16. adb push build.sapphire.prop /system/
  17. adb shell reboot
  18. Wait for phone to boot back up
  19. adb remount
  20. adb install Maps.apk
    1. If that fails, try adb install -r Maps.apk
    2. If THAT fails, try adb push Maps.apk /system/app/
  21. Make sure GPS is enabled
  22. Open Maps and press OK
  23. Press Menu
  24. Press Directions
  25. Enter an end point
  26. Click Go
  27. Just under “Show on map”, click Navigate.
  28. When prompted to install the voice codec, do so.
  29. Enjoy.

Manual Instructions without a PC: If you do not have the SDK installed, do the following:

  1. Unzip zip
  2. Copy build.prop, build.trout.prop, build.sapphire.prop and Maps.apk to /sdcard/
  3. Open Terminal on your G1/MT3G
  4. su
  5. mount -o remount,rw /system/
  6. cp /sdcard/build.prop /system/
  7. cp /sdcard/build.trout.prop /system/
  8. cp /sdcard/build.sapphire.prop /system/
  9. rm /system/sd/app/*Maps*
  10. rm /system/sd/app/*maps*
  11. rm /system/sd/dalvik-cache/*Maps*
  12. rm /system/sd/dalvik-cache/*maps*
  13. rm /system/app/*Maps*
  14. rm /system/app/*maps*
  15. rm /data/app/*maps*
  16. rm /data/app/*Maps*
  17. rm /data/dalvik-cache/*maps*
  18. rm /data/dalvik-cache/*Maps*
  19. reboot
  20. After the phone boots, return to terminal
  21. su
  22. mount -o rw,remount /system
  23. cp /sdcard/Maps.apk /system/app/
  24. mount -o ro,remount /system/
  25. Close terminal
  26. Make sure GPS is enabled
  27. Open Maps and press OK
  28. Press Menu
  29. Press Directions
  30. Enter an end point
  31. Click Go
  32. Just under “Show on map”, click Navigate.
  33. When prompted to install the voice codec, do so.
  34. Enjoy.

UPDATE: If you have tried these instructions and can’t get it working, try the following as suggested by nhudson in the comment section. This worked for him and others:

1: Remove Google Voice
2: Replace the build.prop files (trout, sapphire, etc) back to the original ones.
3: Reboot
4: Reinstall the new build.prop files and remove any of the map stuff from the directories Michael listed.
5: Reboot
6: Install the new Maps.apk file
7: Launch Google Voice and re-set it up
8: Launch the new Maps and Navigation was there.

Let me know if this works for you. If you need help, leave a comment, holler at me on twitter or head over to this thread on XDA.

If you don’t see the Navigate option, try installing Google Voice. I know it sounds weird but it’s reported to work.

If you still don’t see the Navigate option, I’m not sure I can help other than re-do the steps above.  Here is what’s important:

  • Make sure you deleted all *Maps* and *maps* files from:
    • /system/app/
    • /system/sd/app/
    • /system/sd/dalvik-cache/
    • /data/app/
    • /data/dalvik-cache/
  • Make sure you rebooted after copying the build*prop files to /system/

If Navigation is working but certain apps aren’t acting right, you may need to revert back to the original build.prop files. They can be found at http://mmayhew.com/original_build_prop_files.zip

Here are some screenshots from my G1:

Leave a Comment :, , , , , , , , , more...

Android: Tethering with CyanogenMod via Bluetooth, Wifi or USB

by on Oct.30, 2009, under Android, Technology

Tethering allows you to share your phone’s Internet connection with another device, such as your laptop or desktop computer.  Most wireless companies charge a hefty fee for air cards or tether access but with your Android device running CyanogenMod you only need your existing data plan.

USB Tethering

As of CyanogenMod, USB tethering is built right into the ROM.

  • Go to Settings
  • Wireless Controls
  • Check ‘Internet Tethering’

If your Android device is connected to your PC via USB, the OS should recognize a new USB adapter and voila, Internet access via USB!

Here are some screen shots of my G1 and Ubuntu 9.04 laptop:usb0 Connected!

Wireless Settings

WiFi Tethering

If you don’t have a USB cable or want to connect multiple devices, Wifi tethering is awesome! This is by far, my favorite method of tethering. For all you geeks out there, this option basically creates an ad-hoc wifi network,  handles dhcp and becomes a router/wifi gateway. Sweet huh?

This is done with a program called Wireless Tether for Root Users. The program is very self explanatory but here are some rough steps:

  • Open Wireless Tether for Root Users
  • Menu -> Setup
  • Make sure “Use Bluetooth” is unchecked
  • Scroll down and set SSID
  • If you want to use WEP, check “Enable WiFi-Encryption” and then choose “Change Passphrase”
  • Press back
  • Start Tethering!
  • From your wifi-enabled device, re-scan and select your SSID
  • Ta Da!

Wireless Tether for Root Users will use the notification area to show your connected. You can enabled MAC-filtering and allow or dis-allow certain devices.

Check out these awesome screenshots:

Wireless Tether MainWireles Tether SettingsWireless Tether More SettingsWireless_Tether_StartingmmayhewG1Wireless_Tether_ConnectedWireless_Tether_Down_Up

Bluetooth Tethering

I have to apologize because I can’t talk to Bluetooth Tethering other than it’s possible and it’s awesome. The same app, Wireless Tether for Root Users, offers Bluetooth Tethering but my laptop isn’t bluetooth enabled so I can’t test and provide feedback.

But speaking of Bluetooth, as of CyanogenMod, Bluetooth OBEX is working! If you have Bluetooth enabled, you can share files, contacts and images via Bluetooth. Check out the screenshot below:


If you have any questions on Tethering, CyanogenMod or Android in general, please comment and I’ll respond.  Below are some useful links relevant to this post:

CyanogenMod – http://www.cyanogenmod.com

CM on XDA:  http://forum.xda-developers.com/showthread.php?t=567610

Wireless Tether for Root Users: http://code.google.com/p/android-wifi-tether/

Leave a Comment :, , , , , , , , , more...

Blocking Ads: I’m not a hypocrite!

by on Oct.19, 2009, under General, Technology

I hate web advertisements with a passion yet I love capitalism and I love people that make money any moral (and some immoral) way they can.  Honestly, the main reason I won’t switch to Google Chrome is I’ll miss my AdBlock Plus plugin too much. I don’t have anything against someone putting advertisements on their site.. I just don’t want to see them!  They are ugly, they get in the way and they take the focus off of the real content. (That’s the whole point, I know…)

But now I’ve decided to start making money using Google Adsense. I’m sure you’ve noticed the hideous, ugly ads on the site but I’ve also launched 13 21 other sites just for making money with Adsense.

So now that I’m on the other side of the things, am I a hypocrite? HELL NO! I still use Adblock Plus, even when looking at my own sites.  My logic is this: If you are the type of person to block ads using a plug-in, proxy, host file, etc, you are also the type of person to identify ads from real content and not click them.

Yes, this is a rant and yes it was pointless.  Thanks for reading… now go click some ads!

Leave a Comment :, , , , more...

CyanogenMod 4.1.999 with EnochXtra theme

by on Oct.16, 2009, under Android, Technology

I’ve switched back to Cyanogen’s CM 4.1.999 ROM with my favorite theme, EnochXtra. It’s Donut based and extremely fast.

The Hero ROMs were really fun and very nice but this G1 hardware is just a little too sluggish to push it.  Cyanogen has done some amazing work with his ROM and it’s easily the fastet, most stable Donut based ROM.

Cyanogen also has a OTA, or over the air, updater for his ROMs. When he releases a new version, you get a notification and the Updater will download, reboot and flash the ROM by itself. Although the developers over at XDA did most of the work on the updater.

Below are some screen shots of CyanogenMod 4.1.999 with the EnochXtra theme in all of its glory.

Leave a Comment :, , , , , , , , , , , more...

My Favorite Hero ROM for Android

by on Oct.15, 2009, under Android, Technology

Check out these screen shots from KiNgxKxROM. I’ve tried all the major Hero ROM’s and this is my favorite. It’s fast, stable and clean.

I think I’ve finally found a Hero ROM stable enough to use full time.

My favorite features about Hero ROM’s are:

  • Twitter/Facebook Integration
  • HTC Widgets
  • Multi-touch Image Gallery
  • Much Better Browser
  • Much slicker looking


  • Sluggish (especially on the G1)
  • No bluetooth (Hardware issues)
  • Based on Android 1.5 (Cyanogen’s 4.1.x is based on 1.6)

Check out these links:

KiNgxKxROM: http://forum.xda-developers.com/showthread.php?t=563294

Editing your user.conf: http://forum.xda-developers.com/showthread.php?t=561235

Partitioning your SD Card (Noob Friendly): http://forum.xda-developers.com/showpost.php?p=4502330&postcount=9228

SPL and Radio Images Needed for Hero ROMs: http://code.google.com/p/sapphire-port-dream/

Leave a Comment :, , , , , , , , , more...

Screenshots from Maxisma’s Hero 1.8

by on Oct.14, 2009, under Android

Leave a Comment :, , , , , , , more...

Irssi: A Console Based IRC Client (Plus More!)

by on Oct.13, 2009, under Linux, Technology

I’ve been using Irssi for several years and love it more than ever. It’s a CLI IRC client for Linux.

IMHO, the major benefit for using Irssi is coupling it with screen. Screen allows you to have a terminal session on a Linux server that you can detach from and reattach later.

If you have a Linux server with SSH accessible to the Internet, this can become very powerful.  You launch Irssi within a screen session and leave it running 24/7. From wherever you are, you can SSH to your Linux server and reattach to the screen session.  Now you can see everything that happened while you were gone.

This is where it starts to get interesting. The plug-in support is one of my favorite features of Irssi. One plug-in works with screen and marks you away when you detach from your screen session.  Then when you re-attach, it marks you as being back and shows you any messages you received while you were gone.

My favorite plug-in is Twirssi.  This is a Twitter client that lives within Irssi. You can very easily view your time-line, replies and DM’s all in one window. Twirssi also makes replying, retweeting and tweeting very easy from command line.

The plug-ins for Irssi are wrote in Perl so it’s very easy to tweak the plug-in’s to your liking.  For instance, there was a nice notify script that wrote to a file when someone mentioned your name in a channel. I modified the script to e-mail me instead. That way, I could SSH to my server, attach my screen session and reply if I was available.

Of course, Irssi supports joining multiple networks, channels, etc. The key bindings are very similar to screen’s key bindings so they are easy to remember.

Below are some screen shots of Irssi running within a screen session, along with the Twirssi plug-in.

Helpful Links:

Main Irssi Site:  http://irssi.org/

Using Irssi Efficiently: http://quadpoint.org/articles/irssi

Screen: http://www.gnu.org/software/screen/

Twirssi: http://twirssi.com/

As always, if you have any questions or would like me to go in to more detail, leave a comment and I’ll be happy to oblige.

Leave a Comment :, , , , , , , more...

Use SSH as a Proxy Server

by on Sep.16, 2009, under Linux, Technology

Not many people know you can easily create a SOCKS proxy with your SSH session, point your browser to it and browse securely on any network.

There are many different situations this may be handy:

  • You could be on a public network and not want your web traffic visible to snoopers.
  • You could be on a computer that doesn’t have direct access to the Internet but have SSH access to an Internet accessible computer.
  • You could be at work and not want your web traffic monitored. AKA: Firewall Avoidance.  I, of course, am not promoting firewall avoidance but it is definitely a possibility with SSH.

Now let’s get down to how you do this:


I’m assuming you already know how to SSH using PuTTY.  If you need help with this, leave a comment and I’ll provide more detail.

In PuTTY, go to Connection -> SSH -> Tunnels.  Type any number in the ‘Source port’ text field.  I like using 9999 myself.  Then select the ‘Dynamic’ radio button.  Then click Add.

That’s the only change you need to make before connecting to your SSH host.  Now when you connect, you can use port 9999 locally as a SOCKS proxy.  I’ll explain how to use this after the Linux section.


Again, I’m assuming you already know how to SSH from command line.  All you have to do is add “-D <port>” to your SSH command.  If you were going to use port 9999 as your local SOCKS proxy, your command may look like:

ssh -D 9999 username@hostname

Once you connect, you will have a SOCKS proxy running locally on your specified port.

OK, Now What?

So now you have the SOCKS proxy running locally.  You can point your browser, IM client or any application that has SOCKS proxy support. Here are a few examples:

Internet Explorer: Tools -> Connections -> LAN Settings -> “Use a proxy server […] ” -> Advanced -> SOCKS

Firefox: Edit -> Preferences -> Advanced -> Network -> Settings -> Manual proxy connection -> SOCKS Host

Pidgin (gaim): Tools -> Preferences -> Network -> Proxy type -> SOCKS 5

If you poke around other applications you’ll find many support a SOCKS proxy and many do not.


Even when using a SOCKS proxy, most applications will do DNS resolution before going through the proxy.  Many applications have settings for this.  In Firefox type “about:config” in the url bar and find the following setting”network.proxy.socks_remote_dns” and change it to true.  In Pidgin, there is a checkbox for “Use remote ..”

In Linux, if you are getting a permission issue, you must use a port higher than 1024 as the SOCKS proxy unless you are root

Please post any questions in the comments area, and I’ll address them ASAP!

Leave a Comment :, , , , , , more...

Android: Google’s Mobile OS

by on Sep.13, 2009, under Android

I’m a big fan of Google’s Android mobile OS.  It allows a lot more flexibility and freedom over the iPhone OS.  T-mobile is also a lot more “hacker friendly” by allowing apps for rooted (hacked) phones in their Market which is equivalent to the iPhone’s App Store.

A few key features that puts the Android OS over the iPhone, IMHO, is removable storage, ability to install 3rd party applications, open source,  3g tethering and running apps in the background.

But to get the full potential out of your Android device, you may want to consider “rooting” it.  This gives you full root (administrative) access to the device.  This allows custom ROM images, customer boot loaders and custom applications.

With Cyanogen’s custom ROM you get several custom features as well as a heavily optimized kernel that will speed up your device.  With Cyanogen’s ROM, I’ve moved my applications to an ext2 partition on my SD card.  I’ve also moved the cache for internal applications to the SD card.  This free’s up internal memory, allows more capacity and speeds up the device. Cyanogen’s ROM also provides enhancements to the browser as well as other internal applications.

For the true geek’s out there, you can run a full Debian distro on top of the phone’s OS.  There is also a free tethering application that will tether your 3g connection over Bluetooth or Wifi.  The Wifi aspects still blows my mind.  It basically turns your phone into a WEP-enabled Wifi access point that multiple devices can connect to.  The app gives out DHCP addresses and will even do MAC address access control.

I’ll leave you with a few links:

Root Your Android Device In 1 Click.

xda-developers.com: The Best Source On The Net For Android Hacking

Cyanogen’s Rom: The Best Custom Rom For Your Rooted Android Device

Run Debian On Your G1

Please leave any questions in the comment section and I’ll address them.

Leave a Comment :, , , , , more...

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!


All entries, chronologically...