XDAndroid ~ Dual Boot Android on HTC Touch Pro/Diamond/HD

I put this together for mobilereaders, but figured some folks here might benefit as well. Windows mobile (the old 6.x and below) is quickly being left behind in terms of development. No kindle reader, no nook reader, no kobo, etc, and those packages that do exist aren't necessarily being updated. I wanted to try out Android without leaving my hardware behind. Currently (6/8/11 w/ 5/6/11 kernel), plecodroid crashes immediately, but it's possible that a later build or kernel might cooperate better (I'm not currently posting about my xdandroid tests in the plecodroid beta forum because I don't want to waste mike's time with it, I'd rather he focus on the more conventional setups than a hack like this since I plan to have a conventional setup someday). If there are more of us using it, we might have a better chance of finding a configuration that does work on our own. There are usually several new kernels per month and there's a whole new build, FRX07, coming soonish, so there could be some hope.

Enter XDAndroid, a project by members of xda-developers to port android to Windows Mobile HTC handsets like the Diamond and Touch Pro series'. It boots from an SD card and does not replace WinMo, and requires you do nothing invasive like spl unlock your phone. Don't like it or it bugs out on you, just reboot and you're back in winmo. Though I still recommend doing a complete backup before trying anything.

Steps to install XDAndroid on a Touch Pro2:

Step 0: Proceeding further without reading all these links is not advised. Know what you're getting into before you start. XDAndroid Wiki. Official FAQ. XDAndroid Froyo build 6 thread. Introduction to Android - SD Card (extra props to ryannathans for his guide). F22's Latest Rootfs (Apr 19th, 2011) Highlandsun's RIL Support Patches Merged + More. Official Installation Guide. Please read the rest of the steps very carefully, I'd like to be helpful if anyone wants to try this, but I get weary troubleshooting which step someone skipped. Better to ask in advance on installing if a step is unclear.

Step 1: Download XDAndroid Froyo, build 6. This should contain everything you need to run Android, but because development moves so fast, we'll update a few portions in later steps.

Step 2: Extract the zip file. I recommend 7zip, because it also supports some compressions formats we'll have to deal with later, but any unzipping program will handle this file. Extract it anywhere, just remember where you extracted it.

Step 3: Move everything in the FRX06 directory to the root of your phone's SD card. The 'root' simply means not inside any directory or subdirectory. If you plug your phone into your computer in drive mode, and it comes up as, say, the E: drive, you'll extract the build directly to E:, not E:\anything. There are 6 files (haret.exe, initrd.gz, modules....gz, system.ext2, rootfs.img, zImage) and 4 subdirectories (AndroidApps, conf, media, STARTUPS) to move to the root.

Step 4: Choose your device/model. Different models have different quirks and key layouts which are handled with the startup.txt files. There are 5 models and several more submodels. The Blackstone directory is for HTC HD1s, DIAM is for Touch Diamond 1s, RAPH is for Touch Pro1s, RHOD is for Touch Pro2s, and Topaz is for Diamond 2s. If your directory has subdirectories, you'll need to turn off your phone, remove the battery and look underneath it find your model number (mine is RHOD500). Once you have the right startup.txt, move it to the root directory.

Step 5: Update your rootfs. Download the file here. Extract it (here is where 7zip comes in handy). Rename rootfsblahblah.img to rootfs.img. Copy your new rootfs.img to the root directory of your phone's SD card, it will ask if you really want to overwrite the existing file, and you do. Acknowledgment: Highlandsun, see linked thread for more details.

Step 6: (this might only apply to models without dpads like the Touch Pro2) Assign a Home key in startup.txt. Go to the root of your sd card, open startup.txt. There is a line at the bottom called set cmdline with various space-separated arguments in the quotation marks. You need to append an argument to convert one of your phone's face buttons to home, and another to search (more optional). For Rhodium, I changed physkeyboard=RHOD500 to physkeyboard=RHOD500-b1HOME to map my call key to home, and I added a new argument, gpiokeyopts=b4SEARCH to make my end key search.

Step 7: Update your kernel. The kernel consists of two files, zImage (no file extension, just zImage) and one named module-blahblah.gz where blah blah consists of version numbers. There is a constantly updated repository of new kernels here. I downloaded the may 6th release because it had a fair amount of good feedback. Delete your old modules file from the root directory of your card, and then extract and copy the new zImage and modules file in their place. Be sure to alter the downloaded zimage filename so it is just zimage.

Step 8: Two last downloads. 1: conf. Copy this over the froyo.user.conf file found in root/conf. 2: Touch Pro2 tscalibration (Use this one for diamond and raphael), unzip and place the file in your root directory.

Step 9: Now open your phone's file browser, go to the root of your storage card, run haret.exe and watch android boot up. The first boot takes a long time.

Caveat Emptor
FYI. Bluetooth won't work yet. Even wired headsets are iffy. Your notification light is no longer for notifications -- it will shine green when your phone is asleep - this is to diagnose issues with phones failing to sleep. This is an experimental build. You might have to disable GPS to enable your phone to fall asleep and save battery. You cannot really turn off wifi to save power. You can disable it, but it still draws juice. I wasn't able to use the default browser at all, but Opera Mini from the Market works nicely. Overall, I get worse battery life in android then I do with winmo. Crashes happen, though the kernel I used, 5/6, is pretty stable for my model.

In other words, it's nice to have access to some software (if you have a kindle and want to sync pages from phone to kindle for example) and I mostly just play with on the weekends, so it is not a main OS until they iron out a few more details. The good news is they work on it constantly as you can see on the kernels page. And it's nice that it boots from the SD card rather than replacing WinMo so you still have a nice stable OS to come home to.
Re: XDAndroid ~ Making Pleco Work

The folks at xdandroid are upgrading to a new linux kernel. It's less functional than the old version, no wifi, even more limits on usb connectivity and other caveats because they are only just starting to put it together, but Plecodroid DOES run on this kernel. To try it out, ignore step 7 above, and substitute the steps in this linked thread to get the new kernel, edit the start up and get a new haret version. I'm running the june 11, 2011 build of the kernel. New kernels tend to come out pretty frequently. It's possible a future kernel might not function as well as this one, fyi. It's all experimental, this particular branch is even more experimental than what you see in post 1, so keep that in mind.

Edit: The newest kernels on the .39 branch require an even more experimental acoustic code that has to be manually added to the build, and without there is no sound at all. Using my june 11th kernel, Pleco has to be reregistered everytime I reboot. Not really sure why. I suspect that when a new base build, FRX07 (as opposed to the current FRX06) comes out, it will all get a lot easier. Since there hasn't been any interested expressed in this thread, I'm unlikely to monitor and update it.