[myTouch 3G, Magic Android Development] KarrdeNZ:
[Guide] Installing the Hero Rom on your HTC Magic - part 2

8. Boot the recovery ROM

We're going to use the Android SDK's fastboot utility in combination with fastboot mode on the phone to perform a one-off boot of the recovery ROM so that we can back up the existing setup, wipe the phone and then load the new ROM. At this stage, it would be wise to make sure you've synced contacts and backed up whatever you want to hold onto.

Open a command prompt window on your PC (Start, Run, cmd) and change to the tools subdirectory of where you installed the Android SDK, for example:

cd\android-sdk-windows-1.5_r3\tools

The prompt should change to indicate you're now in that directory. Now we make sure the phone is properly configured to communicate through fastboot. Type the following:

fastboot devices

If you see your device listed, we're about ready to go. Let's boot into the recovery ROM:

fastboot boot recovery-RAv1.2.0G.img

If the recovery ROM you downloaded is named differently, substitute it's name for recovery-RAv1.2.0G.img.

All going well, your phone should kick into the recovery ROM now - you'll come to a pretty green texted menu with the HTC logo in the background. This ROM is being loaded via the fastboot software and is NOT on your phone, just in it's memory. We have yet to make any modifications to your phone at all.

9. Back up your phone with Nandroid

Let's make one more backup to be safe. The recovery ROM we booted into provides us with Nandroid backup and restore, which we can use to backup the firmware and data currently on the phone to the SD card.

On your phone, use the trackball to scroll down to Nandroid v2.2 backup and click. This will start the backup process, and you'll see some yellow text start to appear at the bottom of the phone's screen. Once it's complete, you have a backup.

Use the trackball to select the Reboot system now option and click. It should load back into it's normal firmware. You can now mount the SD card as usual and copy the nandroid directory from the SD card to your computer. This is also a prime opportunity to back up your entire SD card.

10. Wipe your phone

WARNING: This is the absolute LAST point at which you can back out of this procedure. After this, it's all or nothing. Proceed at your own risk.

Boot your phone back into fastboot with USB attached (see step 4) and then load the recovery ROM again:

fastboot boot recovery-RAv1.2.0G.img

Use the trackball to move down to Wipe data/factory reset. This will erase all the data on your phone, ready for you to install the new ROM. Click. Congratulations, you have just wiped your phone! You are now ready to load your new ROM.

11. Load your new ROM

Still in the recovery ROM menu, scroll to Apply sdcard:update.zip. This process extracts the ROM from the update.zip file we placed on your SD card earlier and installs it onto your phone. It may take a little while so be patient. It'll tell you when it's done.

12. Boot into your new ROM

Select the Reboot system now option and click. Your phone will now restart with it's shiny new ROM! First boots can take a while, so bear with it. You'll probably see a new splash screen or two on startup, and eventually you'll get into your phone. You may or may not be prompted with a request about giving an app root access on your first boot - you can safely Always Allow this, as it's writing a swap file to your SD card in an effort to speed things up. You'll also need to go through the setup process on the phone again as if it were new, because for all intents and purposes it is. This includes setting up your Google account syncing, as well as the new Hero functionality such as your Facebook, Flickr and Twitter integration (if you so desire).

And from here on out, it's all up to you! Enjoy your new firmware, make it your own. There's some great new functionality in Hero over the standard Magic firmware.

13. Things to note

This firmware isn't perfect. I'm loving it and see myself using it from here on in, but there are some quirks. These may or may not be fixed with your particular versions of ROM, especially once this guide has aged a little, but I'll try and keep it up to date.

The main thing you'll likely notice (especially if you're using a 32B like me) is the slowness. There's a lot going on with this new ROM so lag is fairly common. The phone will speed up a bit once you've used it some more, so bear with it. Your initial setups and playing around will be slow because of initial caching and your non-typical use of the phone, but this should clear up. Various ROMs have tried for workarounds for this, for example Qteknology's Hero port uses a swap partition on your SD card to help speed things up. CompCache is also a popular method, but my own experience with CompCache hasn't been very successful.

There are also reports of SMS messages sometimes not arriving on the latest Qteknology ROM - I mostly didn't experience this until recently, but it seems to be an occasional issue. The ROM builders are working hard on the issues they come across so fingers crossed for resolution on this one.

14. Acknowledgements

This guide wouldn't exist without the xda-developers forum. The bits and pieces I gathered from thereabouts are what I used to run this procedure on my phone, and hence build this guide. The people there are much more experts at this than I am, so I defer to their wisdom.

I must also give props to Jesse of Radix's Gadget Blog. His instructions were incredibly helpful in getting my head around what exactly to do.

And also to papalazarou, whose forum thread prompted me to write this guide.

- KarrdeNZ

15. Changelog

Version 1.2 - 13 August 2009

Added Changelog

Updated links and references to ROMs to account for new versions

Changed ROM recommendations to Qtek for 32B based on personal experience

Removed references to now fixed bugs, added reference to SMS bug on Qtek's ROM

Added "perfect SPL" note

Version 1.1 - 29 July 2009

Added note about update.zip naming with regard to file extensions

Added SD card issue

Version 1.0

Initial release