"Rooting" your phone basically gives you super-user access so that you can bypass the restrictions imposed by the phone manufacturer and do just about anything you want to the device. Installing a non-factory firmware (such as an upgraded version of Android) requires these enhanced permissions.
After way too much time hunting around the web trying to figure out which set of instructions was most likely to work today (some writeups are years out of date), I finally settled on those provided by CyanogenMod, the publishers of the updated firmware.
I had both Windows 7 and several flavors of Linux available to me, so I wasn't picky about which OS I used. I ended up using my Fedora 14 laptop, although I think these instructions should work just fine on Windows as well.
The first step was to install the program "adb" from the Android SDK (software development kit). "adb" is the program that handles all the communication between the computer and the phone. "adb" is included with the most bare bones install of the SDK, so don't go hog wild unless you really do intend to develop Android apps.
The stock Hero has four different USB modes through which the phone can connect to the computer: charge only, HTC Sync, disk drive, and USB tethering. After experimentation, the only one that worked for me was "HTC Sync." I don't have the HTC Sync program on my Linux box, of course, so the phone wasn't able to negotiate a connection. The important thing is that the phone itself be speaking the right language so that "adb" can see it. Once the phone is plugged into the USB cable and set correctly, running "adb devices" from your computer's command prompt should list the Hero. If it does, you're ready to move on.
# ./adb devices
List of devices attached
The next step is to gain superuser access to the phone, known as "rooting" it. That's covered by the first part of the instructions on the CyanogenMod Wiki. Since this phone was a fresh purchase for me and I had nothing of value on it, I didn't bother doing the backup recommended in the first step. Rooting is just a matter of downloading a couple zip files, copying their contents to the phone, and running a few commands on the phone itself via "adb." Quite straightforward. Now that I know what I'm doing, I would take only 10 minutes to do it again. If all you want is to root your phone, you're now done.
Upgrading to the newer Android firmware is a bit more involved, but still not terribly difficult. Simply continue on with the CyanogenMod instructions.
The instructions give you the choice of two custom recovery images. I arbitrarily chose the ClockworkMod custom recovery image over the Amon_Ra version. At this stage, I ran into a problem: my phone didn't have the "flash_image" program specified in the instructions. I found a link to a "flash_image" binary, and guidelines for installing it properly, on this web page.
I combined that source with the following "adb" commands to get a functional "flash_image."
# unzip flash_image.zip
# ./adb push flash_image /system/bin/
112 KB/s (26172 bytes in 0.226s)
# ./adb shell chown root.shell /system/bin/flash_image
# ./adb shell chmod 0755 /system/bin/flash_image
With this done, the rest of the CyanogenMod instructions were followed to the letter, and worked flawlessly. Be sure you grab the Google Apps zip file as well, since that includes such basic apps as the Android Market. The resulting firmware was Android 2.3.7. This whole process should take less than an hour.
What do I think of the result? I've only got a few minutes of play time on it so far. The default launcher app is... well... ugly. I'll definitely be replacing it with something. The new firmware gives you more control over the phone, which is nice for a tinkerer like myself. The biggest reason for doing this is to get the newer Android version, which will ensure ongoing compatibility of new apps and will improve the battery usage vs the v2.1 firmware.
Got any questions or comments you'd like to share? Please leave them below. I'll be happy to help out where I can, but be aware that I'm not expert on phone rooting (yet).