A Guide to Running Android on Windows Mobile Devices

August 16, 2010 | by Lars Aronsson

Android Hacks, Android Tutorials, Tips

Android 2.2 running on the WinMo device SE Xperia X1

When Google acquired the small Palo Alto startup company Android, Inc in July 2005, the team led by Andy Rubin surely both hoped and expected that the mobile OS they were developing eventually would power a vast number of devices of all sorts. But I wonder if they also predicted that Android would be the platform of so many phones that were originally designed to run an entirely different OS, namely the now archaic Windows Mobile.

Android ports have come a long way since late 2008, when I tried to run Android on an SE Xperia X1 and all I got was a non-functioning homescreen turned upside-down. An example of this progress is the Android Development sections that are available for many Windows Mobile devices at the gargantuan smartphone forum xda-developers. Lots of handsets based on Microsoft’s mobile OS are indeed finding new life as Android devices, as detailed in the Wired article DIYers Hack Windows Mobile Phones to Run Android.

If you got an old (or a new, such as the HTC HD2) Windows Mobile device lying around, chances are that you can make it up-to-date by letting our green Android have its way with it. The process may require some effort, though, but you could have Android running within an hour or two and you get to feel like a power-user on steroids.

Running Android on Windows Mobile Phones – an Introduction

Some Windows Mobile devices, like the HTC Vogue, have Android ports that can utilize the hardware to such an extent that ROMs have been compiled that entirely replace Windows Mobile with Android. But for the most part, Android on Windows Phones is launched through HaRET: a tool for booting Linux from within Windows Mobile. HaRET will not run Android on top of WinMo as one would think, since it shuts down Microsoft’s platform before booting Android.

If you’re one of the lucky few that have a WinMo device that has an Android port in the shape of a ROM, you can simply flash the ROM like you would normally do. You will then have the benefit of not having to start Windows Mobile in order to launch Android, and the entire port will likely be quicker and more stable. The advantage with HaRET on the other hand, is that you’ll get a dual-boot device that is capable of running two different operating systems. For beginners, this method is probably easier as well.

How to Run Android on Windows Mobile Devices

1) Download an Android Port for Your Phone

Visit the xda-developers forum, find your device in the list and enter the Android Development section. These phones currently have forums dedicated to Android ports:

Developers are also combining their efforts on the project XDAndroid. Some of the phones the XDAndroid port is compatible with are the HTC Raphael, Rhodium, Diamond, Topaz and Blackstone. The port has also been modified to work on other devices, such as the Sony Ericsson Xperia X1.

2) Copy the Required Files to Your Phone / Flash Your Android ROM

If there is an Android ROM available for your Windows phone, just flash it the way you would flash a regular Windows Mobile ROM. There may be discrepancies, though, so look closely if there are any special instructions for your particular ROM. If you’re not familiar with the process of flashing ROMs, there are many guides available on the interwebs.

In case you have downloaded a port that requires HaRET, you should simply extract the files included in the port to the root of your memory card and then run HaRET.exe to boot Android. Your memory card should have the FAT32 format (that is likely already the case) and have at least 500 MB of free space.

These files are usually included with Android ports that are launched via HaRET:

Calibration WLAN firmware
Haret.exe Runs the Linux kernel and Android
initrd.gz Initial RAM disk, needed for Linux to boot (phase one)
modules-Version-Number.tar.gz Android WLAN driver
rootfs.img Holds the files needed for Linux to continue to boot (phase two)
STARTUP.TXT Contains various parameters for HaRET and boot options for the Linux kernel
system.sqsh Holds all of Android’s system files
zImage The Linux kernel
conf/*.user.conf Android configuration files
AndroidApps/*.apk Android applications, that are installed during start-up. Any Android .apk-files in this folder will be installed. You can add and remove .apk-files files as you see fit.

Source: vdelf at xda-developers

3) Boot Android

In case you have flashed an Android ROM, you naturally just have to start your device to boot Android. If you have the Android port located on your memory card, simply launch HaRET.exe with Windows Mobile’s native File Explorer and Android will eventually start.

You will see lots of seemingly random numbers and letters for about 5-10 minutes, but Android will launch much faster the next time you run HaRET. A file called data.img will be created in the root of your SD card that contains the information for your entire Android setup. To hardreset your Android configuration and start over, simply erase this file.

HaRET booting Android 2.2 on the WinMo device SE Xperia X1

HaRET booting Android 2.2 on the WinMo device SE Xperia X1

If your Android port can’t communicate with your phone’s GPS, it’s vital that you disable the GPS in Android from Settings > Location & security > Use GPS satellites, or your device may freeze.

It’s also recommended that you turn off your SIM card’s PIN protection in Windows Mobile, since many ports can’t handle PINs yet. The setting is located here: Settings > Personal > Phone > GSM/UMTS Services > PIN/PIN2 > Get Settings… > Require PIN when phone is used.

4) Some Important Links

There is much more to tell when it comes to running Android on Windows Mobile phones, but hopefully this is enough to get you started. Best of luck, and if you want further information, you can check out the websites below.