Sunday, November 29, 2009

A 'simple guide' to loading new ROMs on your HTC Magic / MyTouch3G Android phone

This is my attempt to distill into a short post all the best information and sources I've found while learning how to load different Android ROMs on my phone. I'm not re-writing the work of others, I'm pointing to it and adding some comments / info I learned along the way that is either not in the information pointed to or that I found relevant along the way.

You have an HTC Magic / MyTouch3G  Android phone. It came with the software loaded at the factory. If you don't have one of these phones, then these instructions will be mostly correct anyway as far as the infrastructure you need.

The exceptions will be related to the specific model of phone you have if it isn't an HTC Magic / MyToucg3G. For example, the version of "fastboot" will be tied to the phone's hardware, in my case HTC, and you'll need a version written for your phone and the PC's OS (Windows or Linux or Mac) to allow it to talk to your type of phone. Separately, what ROMs you'll be able to load also depends on the type of phone you have. You would not, for example, try to follow specific HTC Magic instructions to load new ROMs on a Motorola Droid or vice versa. But the setting up of Java, Eclipse and the Android SDK will be almost identical in all cases where Ubuntu Linux is used as the PC OS.  The exception will be the contents of the udev rules file reporting the vendor ID and device ID. Don't worry about this right now. Deal with it when you get to it.

Having said that, I'm assuming you want to try other versions of Android, but you want a return path to the way your phone was before you messed with it. I'm assuming you do NOT want to "brick" (render dark and useless) your phone.

No problem. Absolutely do-able, provided you can read and follow instructions and don't just skip bits you don't understand.

Here are some simple steps to make it happen. They are based on the assumption you will be using Ubuntu Linux. If you're a Windows person, then this may be doubly interesting for you. Don't stop reading here. Bear with me.

Here are some steps to work your way though. As is often the case, it's best to read it through and then, after, work it through.

1. Install Ubuntu Linux 9.10. It can be 32-bit or 64-bit depending on your PC. Doesn't matter.

2. You need to set up the Android SDK in order to access the phone the way you need to in order to load new ROMs. Follow these instructions, bearing in mind the following notes:


a) If your Ubuntu Linux is 64-bit, the one flaw in the instructions linked to above is it makes no mention of the need to install the ia32libs if they aren't already installed. These libraries let you run 32-bit apps on your 64-bit linux. Without it, you'll get strange crashes in some libs. To install the ia32libs, you open a terminal ('Applications -> Accessories -> Terminal' on Ubuntu) and enter this command (no quotes): "sudo apt-get install ia32-libs". For Windows users: "sudo" means the command is to be run as root (as administrator). You'll be asked for your password to authorise. That is YOUR password. the one you logged in with...not some other password you can't and won't know.

b) As for the rest of the instructions, you can ignore the bits about actually writing your own apps if you don't plan to. But you do need to install the Java SDK, Eclipse and the Android SDK and ADT 0.94 (or the current version). So follow these instructions and make sure you can run these programs successfully.

c) When you get to the point where you're setting up talking to your real phone with adb and ddms, the udev "51-android-rules" file in /etc/udev/rules.d/ is *critical* and the author of those instructions has it nailed for the HTC Magic / MyTouch3G and the HTC G1 / Dream. For any other phone you'll have to use "lsusb" (list usb) command in a terminal, with you phone connected and debug turned on on the phone (it's in the docs), to get the vendor ID and device ID required.

d) You may have to start the adb server task using sudo (eg: "sudo adb start-server" for the linux system to allow you to access the phone using adb commands.  

3. Install fastboot for linux. Get it here. Read the instructions. Get it installed in the right directory and practice booting your phone in fastboot mode: power off, then while  holding down the BACK key, press the POWER button.

4. Assuming you can successfully see your phone using adb and ddms and "fastboot devices" lists your phone's serial number, you now want to go to Cyanogen's instructions for loading the recovery image and any ROM you like.
Of course, you would ONLY load ROMs that explicitly say they support your model of phone (HTC Magic / MyTouch3G). A ROM for use on some other phone (like HTC G1) probably won't work on a Magic unless it explicitly says will also work on one. For example, Cyanogen and Dwang and ASOP ROMs all work on both the G1 and the Magic / MyTouch3G.

There are often dire warnings about what SPL (Second Program Loader) is required by the ROM. HTC Magic owners with the factory "Hboot 1.33.0004 (SAPP10000)" SPL can almost always ignore these. Our phones already have the capability that the "Danger SPL" provides.  The SPL issues are mainly related to   the HTC Dream / G1 phones as the default SPL on those phones doesn't allow a system to boot if it is over a certain size. HTC Magic and Hero phones do not have this restriction. In fact, the "Danger SPL" is actually a magic SPL modded to be used on an HTC G1. Bottom line - HTC Magic owners with UK, NZ, NL and (some) AU Magic phones don't need it. I don't mess with the SPL as getting that flash process wrong CAN "brick" your phone. The usual error seems to either fail to first flash the correct version of the radio image related to the SPL, or to flash an SPL that is completely inappropriate for your phone. Academic interest only....we (HTC Magic 32B owners sourcing phones from Vodafone NZ, UK, NL and AU) don't need to do any of it.

That's pretty much it. Be sure to use nandroid (it's in the docs) to back up any ROMs you installed that you want to keep. If you're going to put it back on your phone, it may as well be of an install you've already configured.

I strongly recommend you put these backups in a safe place, clearly labelled and well organised. I also recommend copying the entire /Nandroid/[device name]/[version number] backup set into some other directory with a meaningful name. One backup per path. That way you can easily and simply copy the version you want to restore back on to the phone for a quick restore. Your directory names at the top level should make it obvious which backup it is. Guessing is no fun.

A good site for getting news on the latest ROMs is www.AndroidSpin.com. Once you've loaded a new ROM on a couple of times, it becomes simple and easy. You may load a ROM on that won't boot. Ooops. Not to worry, just start over and put one on that does. If it wiped out the Cyanogen recovery image, DO NOT PANIC! Just follow the instructions to load CM's recovery back on. You haven't messed with your SPL just by loading a ROM and (maybe) a recovery image, so you are almost certainly OK.

Bottom line: Take it one step at a time. No need to hurry. Give your head a chance to get around each step.

Have fun.

Eugene373's Eclair (Android 2.0) on my HTC Magic





I just loaded the latest ROM from Eugene373 onto my HTC Magic 32B (from Vodafone NZ) sandpit phone. There is a LOT of new stuff in this version of Android. I won't type much, I'll let the screenshots from my phone speak for themselves. As usual, click on any of the images to see the full size. 





The biggest surprise for me was Google Navigation is included and actually works for New Zealand. I tried a route from where I am to the centre of Auckland and it provided turn-by-turn instructions in text....and a voice told me to turn in 800 metres at Roberts Road. I nearly fell off my chair!

There is a new multimedia dock included from Motorola Droid.

 There is also a "Phone Portal" app that lets you drive some things on the phone from your PC via USB or wifi.




The "Dockrunner" is one place to access a number of multimedia apps on the phone. It's only in landscape mode, clearly designed for the Motorola Droid and similar large-screen phones.




There is also an updated version of the Facebook app for Android. Here is one screenshot of it. It looks pretty good.

The ROM also includes MySpace and support for Microsoft Exchange mail and directories. There is a new media gallery. The browser is clearly the Eclair browser as seen in the Eclair emulator.

I'll just throw a few more screenshots up here. It will be messy, but that's what happens sometimes. :-)

It's not all sweetness and light.

The camera is completely non-functional in this ROM.

Text in the browser and elsewhere tends to be very small at first, perhaps because it is intended for devices with larger screens.....4 inches isn't THAT much bigger than 3.2 inches. The web browser isn't enable for multi-touch (on my phone, anyway), while the browser version included in Cyanogen Mod 4.2.5 does support multi-touch.




Performance is fine. It's actually pretty snappy overall. Probably faster than the Android 1.6 that comes as standard with the HTC Magic as sold.

There is now also a task manager built in located in the Settings. Glad to see this as a multitasking phone needs to give the user some way of controlling what is running at any given time.

I'm looking forward to the 'genuine' Android 2.0. This ROM has certainly whetted my appetite for all the goodies to come. Though I suspect I'll need to stay with a rooted ROM in order to keep all the OTHER stuff that isn't in any standard load from the telcos.

Thursday, November 26, 2009

An evening of Android ROM Mods. My favourites so far.

Last night I downloaded every Android 1.6-based ROM image compatible with my HTC Magic 32B phone and gave them all a spin on my second phone. I was having a HUGE time!

AndroidSpin.com maintain an excellent, detailed and very current table of all the android mods currently circulating. They are listed in date order, with the most recent on the left. There is also a more concise summary list with the most recent mod releases at the top.


In 5 hours I loaded, configured, played with and backed up five different ROMs. All but one ran faster than the preloaded Android build that came on my Vodafone NZ phone. This is mainly because they have been tweaked to run the processor at the full 528MHz and also hacked to make more memory available for the system and running apps. In some cases the system scheduler has been tweaked. Beyond that, they also generally offer very cool features like WiFi, bluetooth and USB  tethering allowing you to connect almost anything to the Internet through your phone's 3G connection. They also generally come with Voice dialing, which is really cool as that is a feature I was very much looking for. Some of the ROMs also support access to Microsoft Exchange, a biggie for people who work in places that use Exchange / Outlook. I've also noticed some of the new Contacts features an functions have been ported down from Eclair (Android 2.0). For example, you can create a "Contacts Folder" on a Home screen...and when you open it, you scroll through the list of people in that sync group - including any photos / images associated with them on Gmail. Lots of stuff, all good and mostly not in the standard builds on phones you can buy now.

I started the night with Cyanogen Mod 4.2.5 installed. I backed that up and then loaded the "The Official AOSP-1.6_r1.4 DRD20 (Donut) v2.2.1" ROMs. This person or team take the basic ROM of each major vendor, root it, then make an image. Then they create an  "ExpansionPack" that adds in all the good stuff to the basic version. It loaded easily and booted to the Android welcome screen where you set up your gmail account.

Next, I tried the Soulife ADP Remix ROM. This also loaded easy, booted properly to the Android welcome screen and then ran fast and stable after being configured for gmail. I liked this ROM. I had a play, backed it up and moved on.


The next on the list was the JesterBlur v1.2.5 ROM. This is based on Android v1.5 (Cupcake) and includes the Motorola "MotoBlur" user interface. It's large at 78MB. It did install OK, though I had not followed all the steps suggested. It booted, though it took about 5 minutes or more - it felt like closer to 10. When it came up, there was MotoBlur in all its glory and it worked, though it was quite slow. The screenshots are all from my phone. I've included them as MotoBlur is strikingly different to all the other ROMs. Most of them load up and look more or less exactly like the same Android you get on your phone when you buy it.


JesterBlur could access the internet via 3G data, but WiFi didn't start. The docs warned I needed "the latest radio" - unhelpfully vague and imprecise. The Bluetooth didn't work, either, a known problem. It certainly was pretty, but the MotoBlur UI seemed to me to be all about form rather than function. Things I'd do in a motion or two usually, could take several more on MotoBlur. You don't slide the apps tray out. It's been added to the Menu key or the "+" button (IIRC). The notifications bar can't be slid down. It does very nicely allow you to create and define custom formulations of the user interface mad up of components you are offered. To me, that's too much effort and expense in development just for eye candy. But once you managed to find an app and run it, it ran well enough.

I'm a fan of leaner, lighter interfaces. MotoBlur felt, to me, like I had to watch 20 episodes of "Project Runway"...and take it  seriously. I'm sure lots of people love it to bits.

Being based on Android 1.5, the Android Market in JesterBlur 1.2.5 is the old, black and plain Market that prevailed until a month or so ago. How quickly we move on! I didn't bother to back this one up. I just wiped it.....and moved on. Maybe the next version will be faster. I would certainly take a look at a new release if / when one appears.

Last ROM of the evening was Dwang Donut v1.13. Of the ROMs I tried last evening, this was the only one not based in some way on a version of Cyanogen Mod. David Wang has composed his own kernel build from the stock android v1.6. This ROM was recommended to me as a very fast one and it certainly nice and snappy on my phone. It isn't as feature rich as Cyanogen, but if you had this ROM on your phone you'd find lots to like about it. I backed it up.

Of the ROMs I've tried so far, my favourite would be Cyanogen 4.2.5. Next and not very far behind CM, it would be very close race between Soulife and Dwang, with Soulife taking it by a nose. Half a length behind - because these are all good - would the AOSP Donut builds. Bringing the rear in flamboyant leasurely style would be JesterBlur....which isn't really fair as it is Android v1.5....and v1.6 is faster - modded or not.

Wednesday, November 25, 2009

Google Maps 3.2.1 with Cyanogen Mod 4.2.5

[UPDATE 2010-02-06: We're now up to Google Maps 3.4.0 and hacked by brut.all for global GPS nav support and it also includes multi-touch support from the Nexus One OTA of a couple of days ago. Look here for how I got it installed on my HTC Magic running Cyanogen Mod 4.2.14.1]


[UPDATE 2009-12-10: As of Dec 7th / 8th (depending on your time zone), Google disabled access to turn-by-turn GPS navigation at the server end for people not in the US. The software still works, but the back end won't give you the information. It won't work now no matter what you do, unless you're in the US. The instructions below are still valid for dealing with signing problems on this and other versions of Maps. ]


[Update:  You should also check out this more recent post on this subject.]


Google Fodder: I'm posting this here because xda-developers forums was producing a "502 bad gateway" error and Google cache didn't hold a copy....and the only place on the net it appeared to be was on xda.


Originally Posted by mrandroid View Post
Download and copy the new Google Maps 3.2.1 APK to your sdcard.
Can be found at: http://www.myhangoutonline.com/downloads/

open a terminal window:

(For Cyanogen Builds)

type: su
type: mount /system -o remount,rw
type: rm /system/app/Maps.apk
type: cp /sdcard/Maps.apk /system/app

TA RA! lol welcome to Google Maps 3.2.1 w/ Nav.

*** UPDATE *** If for any reason it's not 3.2.1 after installing, you'll be able to just download 3.2.1 from the market now and it'll install perfectly... Either way, The file should be fixed and it should be 3.2.1 now.

Monday, November 23, 2009

I rooted my Android phone and it was easy.

Over the past several months, since I bought my HTC Magic android phone, I've been watching the progress of others as they gained root (administrator / supervisor) access to their phones and loaded alternative versions of Android. Some made a real mess of it and I could almost hear the wailing and gnashing of teeth through the texts of the miserable accounts of cellular OS devastation.

A lot of the information on a wide variety of web sites was written by people who were clearly technically competent but who, at the same time, couldn't clearly explain paint to a brush. Or worse, said it was paint while they described some of the elements of paint, leaving out critical details others soon discovered were missing.

Scary stuff! I wasn't going to risk my reasonably expensive new HTC Magic ("Sapphire") phone without having a clear path from the present config to a new one...and back again. That last part is critical. I wanted to be certain I could restore my phone to the factory-based build in order to ensure I would receive the "official" updates to my particular android phone as they are released by Vodafone here in NZ and around the world.  I did not want to go out on an alternative version branch and be left stranded there.

So I waited. In the meantime, I installed the Android SDK on my 64-bit Ubuntu Linux system as well as my Windows Vista Home Premium system (Ubuntu was easier - for the record) and became familiar with the tools you use to access / alter the phone's system from your PC: "adb", "ddms"  and I installed "fastboot" as well. In addition to the SDK instructions, you may find the alternative view at xda-developers helpful.  I've also documented my own efforts here on my blog.


Finally, with the release of 'Cyanogen Mod v4.2.5, stable', I found the very clear and straightforward instructions provided by its source: Cyanogen (a.k.a. Steve Kondin).

The key, for me to Cyanogen's ROMs (Read Only Memory - essentially a system image copy) is they come pre-rooted. All I need to do is load it on the phone using Cyanogen's very useful 'recovery image' (cm-recovery-1.4.img) and activate it. The new system image from Cyanogen has been rooted for me already. This removes a HUGE technical hurdle for the know-a-fair-bit kind of guy who'd like to give this try.

As to why you would want to root your phone, there are several very practical reasons. You get access to features and functions not available in the standard ROMs from the telcos. For example, with my rooted phone, I can "tether" my iPod Touch to my phone via WiFi and allow the iPod to access the Internet through the phone's 3G connection. Or I can use the "SetCPU" apps to set the clock speed of the processor in my phone: faster for more speed, or slower for better battery life. As it is, without changing the CPU speed myself, Cyanogen Mod, by default, runs much faster than the stock version of Android. There are many other reasons, these were more than enough for me.

Jargon, jargon.

Half the battle is understanding the terminology used. At first I was bewildered by all the strange terms related to the components of the operating system on the phone. But after a while, it became clear there were only really a couple of things I absolutely needed to understand:

Fastboot: This has two meanings in the context of messing with your phone.


You boot your HTC Magic in "Fastboot mode" by holding down the BACK button and then pressing the power button. In this context (rooting your phone) this program lets me load a basic, temporary system on my phone and run it. Once booted, you see a white screen with essential details about your phone's hardware and what firmware is currently loaded onto it.

"Fastboot" is also a program that you can use on your PC, when you phone is connected in Fastboot mode (see image), to 'live boot' a temporary operating system. When you power your phone off and re-boot, you go back to the usual system.

Recovery mode and recovery image: You access the recovery mode of your phone by powering off, then holding down the HOME button and pressing the power button. On a standard HTC Magic/ MyTouch3G phone, you'd probably then see something like a white triangle on a black background with a yellow exclamation mark in it and a small phone image beside. This is what the default recovery image provides. You can't do much with the default. So you need to load one that is more useful and that is is what you typically use fastboot to load. In the case of Cyanogen's (latest as of writing) "cm-recovery-1.4.img", it boots up a text-based menu (click on image for full size) of options that allow you to perform some essential tasks like re-boot; backup the existing system ROM (critical! - but easy) to your sdcard using a program called "Nandroid"; or use Nandroid to restore from a previous backup. Or you can wipe the system area and then, separately, load an entirely new ROM from the root directory of your sdcard.
    Once you've loaded the new ROM and booted from it successfully, you can us "su" at a command prompt to get root powers...and then flash the recovery image so that it is permanent, not temporary: "flash_image recovery /sdcard/cm-recovery-1.4.img"......and you're done.

    At this point, the only thing to remember is that if you do restore the original, factory image, you will also restore the default recovery and you won't have root access anymore.

    How Nandroid works is pretty straightforward. Each new backup goes into the "Nandroid" directory on the sdcard. The device ID of the phone is the next level, then comes the version of the individual backup. It will make a new subdirectory below the device ID for each new backup.

    For restoring, it will only restore the last backup made. If you don't want that one, you have to ensure the one you do want is the most recent one that Nandroid can see. That means moving the others out of the way to some other location.

    Make sure you make copies elsewhere of  any images you want to keep.....and don't mess with the naming of the folders. Nandroid needs those names just as they are. But I need to know what each one is, so I have a tree of folders with "AndroidBackups" at the top, then something like "01-backup-20091121-2340-first-CM-install" and then the next level will be "Nandroid"...and so on, as on the sdcard. This way, I can just drag / drop from the "Nandroid" level to the sdcard, knowing I have exactly the backup I want and no other.

    The most important thing to me is not losing the backup of the original factory load. That is my key to returning to he vendor world of Android if I choose to. I've tested it and it works fine. Just remember that when you restore the original ROM, you're also restoring the original (not very useful) recovery, too. To get the Cyanogen recovery back, you'll have to fastboot it for temporary use, or install a new ROM and then make it permanent (or at least for the life of the task you have in mind, until you again restore the original.

    This isn't a step-by-step guide, but I hope it does make clear some of things that baffled me and helps provide you with the confidence you need, through knowing you can mod your phone and you can put it back the way it was to begin with.

    Thanks to Cyanogen / Steve Kondin for providing the simple, step-by-step instructions that finally gave me the certainty I required to have a go. they got me quickly to the point where it was easy if you know how by helping know how.

    Friday, November 20, 2009

    Apple or Android? You don't have to choose. You can have both.

    You don't have to choose between Apple and Android. Android's open-ness makes it possible for you to have both at the same time. A relatively cheap iPod Touch 8GB, combined with an Android phone on a data plan acting as your WiFi access point, is a cheap way to have simultaneous access to the best both Apple and Android have to offer wherever you go.

    I got my Apple iPod Touch (2nd gen) last December and very quickly saw iPod Touch / iPhone  would change the face of not just mobile telephony but also personal computing. I got right into it - installing loads of apps (free and paid), buying a few songs, and generally replacing most of the functions I used to use my laptop for.

    But, as I have already blogged, iTunes annoyed me. I can't even delete a song or video without without using iTunes. In the end, Apple's restrictions were enough to make me think twice, three (and the rest) times about "upgrading" to an iPhone.  That isn't to say Apple doesn't offer a lot that is good and useful and fun.


    At the same time, I had been watching the progress of Google's Android OS for mobile phones. It looked to me like Android's more open platform had the potential to give me most, if not all, the advantages of the Apple-verse while avoiding the annoyances implicit in using iTunes. Maybe I would even have the ability to actually use my iPod Touch together with an Android phone. Something Apple would never allow in reverse.

    If such a thing were possible, then I would not have to choose at all. I could use both side-by-side.


    With this in mind, I bought my android-based HTC Magic from Vodafone NZ back in July....and today I finally made it.

    Yesterday, I rooted my 'spare' HTC Magic phone (I have two), loaded Cyanogen android, and then installed tetherWiFi. This app only works if you have gained root access to your phone.

    I now have my  Apple iPod Touch talking to the Internet, tethered via WiFi to my Android phone, sharing the phone's 3G connection. My HTC Magic is now an ad hoc WiFi access point, protected by MAC filtering so only those systems / devices I choose to allow to connect are able to.

    It took me a few months to collect the pieces together. Once I had them (iPod Touch and spare "sandobx" HTC Magic phone) in hand, within 2 days I was able to set this up. It was worth the wait. Now I've done it once, I realise how easy it is, thanks to guys like Steve Kondin / "Cyanogen".

    Trying Cyanogen Mod android on my HTC Magic


    I've been using Android daily since July 23rd. I came to it from a background of being a daily iPod Touch user with a cheapo Huawei 3G ("Vodafone 715") as my phone. I'm conservative when it comes to messing with expensive phones, so I left my first phone unmolested by alternative builds of Android. This week, I bought my second HTC Magic (used - via Trademe) and - that evening - the fun began. By midnight, I had the new phone running Steve Kondik's "Cyanogen" 4.2.5 android instead of the Vodafone / HTC build that had been on it when it arrived.

    It took me a while because there there is a lot of information out there and it is frequently fragmented and often months old. Not everyone had the same problem. Some people who had a problem found a way to work around it that didn't work for others.

    The first hurdle is getting a working "adb" or "fastboot" connection to the phone that will let you load the files you need onto it and run them with root authority to kick things off. I was almost there with  64-bit Ubuntu, but in the end wasn't able to complete the task due to some permissions issues with UDEV. I could read whatever I liked....but no way was Ubuntu going to let me write to anything on the phone as root.

    After a couple of hours of that, I gave Windows Vista a try. Previously, I had no luck at all getting Vista to see the phone. But the system had been re-booted several times since the last attempts and I also made a fresh attempt at installing the USB drivers for the adb interface. I also added a fresh win32 version of fastboot, made sure it was all on the PATH....and suddenly everything worked!

    At this point I found I was using an old recovery.img file that wouldn't boot on my phone. I went to Cyanogenmod.com and checked out the instructions there as this was the ROM I wanted to install anyway. What I found was nothing short of awesome.....a set of well-packaged files supported by some clear, simple steps plainly and unambiguously presented.

    Following these steps, in a few minutes I had the phone rooted, the original ROM backed up via "Nandroid", the HTC base ROM installed (to get the Google apps) and then a new Cyanogen ROM installed (v4.2.3.1) over the top. I didn't need to do that. I thought I was downloading the latest version - d'oh! Realised today, I had installed an earlier one, working from the instructions.

    After re-booting into the brave new world, I flashed the enhanced recovery image v1.4 onto my phone (as suggested) to make any / all future updates easy.

    Today, to get to the latest version, I downloaded CMUpdater from the Android market and updated Cyanogen, over the air and on-demand - to v4.5.2. That process took download time (27MB at 180KB/sec over 3G - not long).

    I now have voice dialing and USB tethering for Internet and the ability to backup and restore and and all android ROMs  I care to install on my phone.

    Coolness was unleashed today.

    Wednesday, November 18, 2009

    HTC Magic, Android and the Sony DR-BT21G stereo bluetooth headphones.


    Google fodder: Last week, I bought the Sony DR-BT21G stereo headset to use with my HTC Magic  because the phone uses the same port for the wired headphones and USB data connection and power adaptor. I could either listen to the phone or charge the battery, but not both. A Bluetooth media (as opposed to just the phone) headset seemed the obvious solution.

    No matter what I did, I couldn't get the headphones to play any music. They worked fine with the phone, but that was it.

    So instead, as of yesterday, I decided to use them to listen to music on my iPod Touch because v3.0 of the iPhone / iPod Touch OS added support for stereo bluetooth. They worked fine. The main difference was the Apple device asked for the "0000" PIN number, while the HTC Magic / android had not.

    That got me thinking and I wonder if....having been initialised at least once....the headset might now work with my HTC Magic. So I tried it this morning.

    Yes. They work perfectly.

    Even better, though the default music app doesn't respect the AVRCP remote controls on the headset, the "Meridian" media player app does, provided it is in the foreground. I can either skip to the next song, the previous song or job the centre and then FF or REW the current song.

    If you're looking for a stereo Bluetooth headset to use with the HTC Magic, the Sony DR-BT21G is a great choice. Just be aware you may have to use them the first time on some other device before they will work with the HTC Magic.

    Monday, November 16, 2009

    Android App of the Day: Magic Marker

    If you want a fun app that can make cool stuff in seconds, the "Magic Marker" is probably an app you should check out. Magic marker lets you create new images or enhance existing ones with neon-bright colours you paint onto the screen with your finger tip.

    You can pick one of 7 pre-set colours or run your finger tip around a colour wheel to create a more subtle set of shades in between. To confirm the colour of your choice, you push the button in the middle of the wheel. You're then placed back in the main screen and you can begin painting.

    If you aren't happy with each finger stroke - or all of them - there are un-do and re-do buttons that appear to be able to handle a very large number of amendments.

    You can paint on the default black canvas or choose any image on your phone to add your magic touch to.


    Magic Marker allows to you choose from 5 brush sizes from pin point to about 3mm.

    When you have completed your masterpiece, you can save it to your phone or share it via whatever apps you have installed that allow sharing.

    My list included Twitter, Gmail, Facebook, Picasa, Picsay Pro (for further editing), Printershare (for printing locally or over the Internet)...and several others. The idea here is that you can do pretty much whatever you want with your image once you're done.

    It would be great if you could magnify the image and be more precise, but as it is, Magic Marker lets you create or add some quick, impressionistic and colourful highlights with the swipe of a finger.

    I like this one. See what you think. I think this app is free. On my phone it just says "installed". :-)

    Android and A2DP bluetooth support

    I've been watching "Mad Men", right from season one, episode one, via Jetflicks on my HTC Magic android phone and really enjoying it. The only problem I have is my phone uses the same USB port for the headphones as it uses to charge the battery. I can either listen to the phone via headset OR charge it. If I want to do both, I have to use the phone's external speaker and annoy other people nearby who may not share my taste in TV programs enough to want to listen to it without seeing it.

    The HTC Magic supports A2DP bluetooth and there is no physical reason why I can't listen to whatever I want over a set of stereo bluetooth headphones. It seemed to be the ideal solution. I went out and bought a pair of Sony DR-BT21 headphones. They work fine with the phone, but I can't get them to play any music / video via any media player. If the phone's Bluetooth is set to media-only mode (the support to enable this is partially there), I can't connect the phone to the headset. But re-enabling the phone audio allows the headset to connect to the phone.

    A bit of Googling revealed why. Android in v1.6 (Donut) only supports HFP (Hands Free Profile) and HSP and doesn't support the A2DP bluetooth profile required to use this stereo bluetooth device. The HTC Magic phone supports it, the headset can do it......but the stock Android ROM loaded on vendor phones can't do it and won't until they are updated with software than can support it.

    It is possible to load alternative versions of Android (Like Cyanogen) that do include A2DP support, but then you risk cutting yourself off from the standard support path for future software updates and at the same time expose yourself to Android without the default Google 'love' included with almost all Android phones. You'd have to add that yourself, which can be done, but it's more messing around. Besides, future updates will almost certainly include the missing A2DP support.

    At this point, I'm not sure "Mad Men" is the compelling event to drive me off the standard path. Even adding the ability to make my phone a Wi-Fi access point (Cyanogen again) isn't enough. If I had a second phone to play with.....I'd be in like a robber's dog. Maybe that's the way to go.

    UPDATE - 2009-11-18:  After several more attempts, I gave up trying to get the Sony headset to do media audio with my HTC Magic, so I tried it with my iPod Touch. The headphones worked and sounded great. I was asked to enter the PIN number. The next day (today) I tried them again with the HTC Magic....and they now work! It's full stereo, too.  NO IDEA why they now work....but they now work. Maybe activating them with the iPod Touch was enough to enable them to work with my android phone.
    UPDATE 2 - 2009-11-18: I've just discovered the Meridian media player app respects the (AVRCP) jog, FF and REW buttons on the Sony bluetooth headset provided the app is in the foreground. I have 100% functionality now! Awesome.

    If you find this post useful, please consider a small donation in NZ$ via PayPal in recognition of the effort that went into this post and others. Thanks! :-)







    Sunday, November 15, 2009

    Android App of the Day: 3G Watchdog


    Some people in the US are lucky enough to be on unlimited data plans, but most phone-based Internet users pay for the data they use. "3G Watchdog" is perfect for helping anyone with a data quota track how much of their 3G data they are chewing up as the days go by.


    My data plan with Vodafone NZ is 250MB / month and each additional MB is 10 cents. That means the second 250MB (and each subsequent 250MB) is $25. I'm happy to use roughly double my data quota before I start to get sweaty palms. That's about 20MB / day and usually more than adequate for Google sync and all the web browsing I do away from the home or office Wi-Fi.

    3G Watchdog is most useful when I'm over my quota. Vodafone's BAL query via txt to 777 will tell me how much of my data quota I have left, but makes no attempt to count the data once I'm over. It might be 1MB or 100GB....without 3G Watchdog, I'd be left guessing.



    The most recent versions allow you to set the amount of data for your quota, the period of the quota - a day, a week, a month -  and the day of the month the period starts. It then counts how much data you have sent and received since the start of the latest period. It won't be aware of data you used prior to the first time you ran the app, but it does seem to be able to add up increments after the first run even if you don't run 3G Watchdog all the time.

    You can set it to only appear in the notifications bar when  you aren't on a Wi-Fi connection. It doesn't count data used over anything other than 2G/3G.


    You can also set the threshold for 3G Watchdog to begin warning you about how much data you have been using. My threshold is set to 75%. After that, I get regular warnings about the progress of my usage. When you hit your threshold, a pop-up appears letting you know you're now paying extra for any network usage.

    3G Watchdog is free. At that price, I don't see how anyone on a data quota can afford to be without it.

    Wednesday, November 4, 2009

    Ubuntu 9.10 and ADT 0.94 tangle

    [2010-02-03 Update: The permissions issues are due to changes in the policykit support and the move to udev. The details are here. Go straight to Section 10. It's actually now very easy to set this up. You can add the GROUP="plugdev" parameter to the end of of the SUBSYSTEMS statements....then add your user to the plugdev group. You then do not need to run adb as root.


    [2009-11-26 Update: My permissions problems talking to my real HTC Magic phone inexplicably returned after a couple of reboots. I had not changed a thing. Annoyed, I search again for possible solutions. I found these excellent docs, which included the section below. I already have the rules file, but these statements were different to those suggested elsewhere for Ubuntu and different to the single line I had been using. This part fixed my problem with not being able to talk to my phones, allowing me to access them via adb and / or fastboot provided I run the adb server and fastboot using sudo. DDMS is fine, provided adb server was started using sudo.

    10d) In Ubuntu, create a new rules file for these vendor:device IDs.

    Type this command to create the file.

    $ sudo gedit /etc/udev/rules.d/51-android.rules

    Add the following blue lines (rules) to it and save the file. If your lsusb command reports other, newer product IDs for vendor 0bb4, add them also to the file.

    SUBSYSTEMS=="usb", ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0c01", MODE="0666" 

    SUBSYSTEMS=="usb", ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0c02", MODE="0666"
    If this helps anyone, please let me know in the comments.]


    [2009-11-22 Update: I upgraded to Ubuntu 9.10 (Karmic Koala) again today. This time I did NOT remove the packages the upgrade notified as no longer supported. Last time, I had said OK to their removal. This time, everything works fine: adb and ddms can see my phone. Fastboot (run using sudo) is able to load and boot a temporary image. The key - for me - seems to have been to avoid letting the upgrade / update process remove the pre-existing policykit package.]

    [2009-11-15 Update: I wiped the drive and reloaded Ubuntu 9.04. I installed the Java SDK, the Android SDK 2.0, ADT 0.94 and Eclipse 3.5. I followed all of my own advice, and that I had gleened from others....and ONLY after I had adjusted the permissions settings using polkit-gnome-authorizations was I finally able to access my phone again via ddms and adb. Given they (Ubuntu) appear to have removed this security configuration app (polkit-gnome-authorizations) from Ubuntu 9.10, I don't recommend upgrading to that unless you are handy with the back end of the permissions policy side of Gnome / polkit and can write your own API-compliant, policy files in XML from scratch. I'm not...and don't want to be. I'm trying to fry other fish.

    But I got it going again....







    (Original post resumes below) ]

    Last night I had a bright idea and upgraded my Android SDK 2.0 system from Ubuntu 9.04 (Jaunty Jackelope) to 9.10 (Karmic Koala).

    Everything went (almost) perfectly. The Eclipse 3.5 dev environment runs fine. I can create and run Android 2.0 emulators with no issues. But ddms (the Dalvik VM tool in Android SDK Tools) is no longer able to identify my real android cell  phone. It sees the device, but doesn't pick up any information from it. Instead, I get a string of "???????" where the device ID should be.

    I'm assuming it is a security / permissions issue post-Ubuntu upgrade....and hope to sort it out later. I'll update this post if I work it out.....or not.

    Be warned that any such upgrade as the one above isn't likely to be seamless.

    2009-11-04 - Update: This is definitely a permissions problem. Trying to list the device with adb gives:

    List of devices attached 
    ???????????? no permissions
    

    Now...How to set the permissions? I've set up the policy files. They don't appear to be working. I've seem some bugs listed on Launchpad for Policykit. Not sure how to interpret what I'm reading.

    This bug on Launchpad seems to explain things. They appear to have made some changes without regard to usabililty.

    https://bugs.launchpad.net/ubuntu/+source/checkbox/+bug/435714

    Trying to access the  phone with ddms give me more permissions errors:
    55:16 W/ddms: Unable to get frame buffer: device (????????????) request rejected: insufficient permissions for device
    55:18 W/ddms: Unable to get frame buffer: device (????????????) request rejected: insufficient permissions for device

    I have also tried running it as sudo:

    steve@media:~/android-sdk-linux_x86-1.6_r1/tools$ sudo ./adb devices
    List of devices attached
    ????????????    no permissions

    No good.

    Tuesday, November 3, 2009

    Android App of the Day: Feedr



    Feedr is a greet app for collecting all your RSS / news feeds together in one place. I used to have the Gizmodo app, the Slashdot app and other bits and pieces for keeping track of news and articles from a variety of tech and general news sites. Feedr's ability to gather them all together in one easy-to-use, appealing app let me uninstall most of them.

    Feedr presents your feeds in a list with each entry telling you how many articles there and how many of those remain unread. You touch the feed you want and it moves to the list of articles. You can scroll up and down the list using your finger or the trackball or D-button and arrows if your phone has either one.

    If you touch an article, Feedr gets the content, text and images, and presents it in the app. If you want to read more, you can touch "Open" and go to the site. Or you can "Share" it. The "Mobilize" button presents the web content in the browser in a form more suitable for mobile devices.

    Feedr's main menu lets you update your feeds, search feeds, add / delete feeds, import / export from Google Reader, organise feeds, clear the cache , search history, display the status and mark all as read.

    Within a feed, the menu provides access to feed-specific functions, including; mark all as read, update the feed, search the feed and flip orientation. You can also make shortcuts. These are Feedr icons placed on the Home screen and bearing the name of whichever feed you wanted the shortcut to take you to.

    I like this app. It's feature rich, simple to use and doesn't get in the way of the content. It's easy to use, read and manage.

    Top marks to Feedr. It's on my (constantly changing) "must-have" list.

    Monday, November 2, 2009

    Android App of the Day: Mobile C64


    Definitely a niche app, "Mobile C64" is an emulator that lets you run a virtual Commodore 64 console on your android phone. It's one of a number of C64 emulators (Android C64, Frodo C64). They are all worth looking at if you're interested.  Some are better than others. I have not tried them all.

    Commodore 64 systems were the PlayStation of the 1980s and very early 90s. Millions of people wrote their first programs in BASIC on systems like this before moving on to larger, more capable systems that came later. But these devices were relatively cheap, a huge proportion of young boys had them.

    Image files for games and other apps can be downloaded for free from C64.com. Some games don't work well on phones that don't have a 'hard' keyboard as, so far, emulator developers have not included support for phones that only have soft keyboards.

    Software is still being written for the platform. There is a twitter client (Breadbox) you can run in your C64 emulator if it supports networking. If you want to discover the dawn of cheap home computing, brush up on your BASIC programming or re-live your past, load this app (or one like it) on your phone. Or maybe you were a Sinclair ZX80 fan.