[Legend Android Development] BlaY0:
CAUTION!! By upgrading HBOOT to 1.00+ you loose the ability to S-OFF your Legend!!!

Preface

Because there are too many ppl without any knowledge spreading false findings and statements I decided to write this HOWTO.

Audience

This HOWTO is primarily ment for those who already have rooted Legends but they recently experienced problems flashing CM's or new Vodafone FroYo boot.img.

Background

HBOOT is like a BIOS in our PCs and to cut a long story short it also contains partition table for phone's internal storage. That means it has info on where exactly certain partition starts and how big it is.

At HTC they decided to partition Legend's internal storage this way:

misc 640 kB

recovery 4,375 MB

boot 2,5 MB

system 240 MB

cache 40 MB

data 185 MB

...but as we found out (first with CM nightly) boot partition was a little short for the boot.img to fit in if we had one or more bad cells (sectors) on it. Eventually we found out that quite some Legend's had bad cell on boot partition and those unfortunate souls that owned such phone were unable to upgrade to Vodafone FroYo rooted ROM too.

I think that HTC also recognized that Legend's boot partition was kinda small so they rearanged partition table in HBOOT 1.00 a bit making boot partition bigger (now it is 3 MB) by shrinking recovery partition a little.

So now we know that some of us actually need HBOOT 1.00 in order to flash FroYo's boot.img without a problem. But how do we keep root then?

Prerequirements

Android SDK (primarily adb)

working USB drivers (for adb to work)

goldcard (in case you are trying to flash ROMs with different CID than your phone has)

ClockWorkMod recovery (if your Legend is already rooted)

Rerequirements

Vodafone FroYo OTA update (actually just firmware.zip from OTA)

Legend rooting tools (just testimage.zip)

Hack 4 Legend v5(just misc1-2.img and flash_image)

VISIONary r13(r14 is out also but i haven't tested it yet)

Instructions

I will split instructions into two parts... for already rooted phones and phones that were already updated with Vodafone OTA thus they lost root.

Already OTA updated with HBOOT 1.00

That one is relatively easy. You could also follow Paul's guide but I like my approach better ;)

Connect your phone to your PC. Second you have to install VISIONary r13 into your phone and do the "temproot" procedure. After a successful "temproot" you should be able to adb shell and then su. Fire up command prompt and issue:

adb shell
su

...you should have root privileges now (showing #). Next thing is backing up misc partition and replacing it with one from hack4legend-v5.zip. Extract this zip somewhere and fire another command promt there. Now you should upload flash_image binary and misc1-2.img:

adb push flash_image /data/local/
adb push misc1-2.img /data/local/

...switch back to 1st command prompt and change permission of flash_image_binary:

chmod 755 /data/local/flash_image

...and backup your current misc partition:

cat /dev/mtd/mtd0 > /sdcard/misc_backup.img

Now flash misc1-2.img:

/data/local/flash_image misc /data/local/misc1-2.img
exit

...and you are set to downgrade retaining HBOOT 1.00.

Unzip r4-legend-root.zip and find testimage.zip in it. Put it on your phone's sdcard renaming it to LEGEIMG.zip. You can then reboot into bootloader issuing:

adb reboot bootloader

...from command prompt. Phone will reboot and find LEGEIMG.zip on your sdcard, copy it into RAM and check it. If you get CID error at this point, then you don't have goldcard. Make your sdcard gold and try again. After successful flash and reboot you may remove LEGEIMG.zip from sdcard. Next step is upgrading of rooted FroYo ROM. Put FroYo update ROM zip to your sdcard and install it via ClockworkMod recovery. You may also flash backed up misc partition after that. Still in recovery mode and hooked with your PC switch to command prompt and restore it back:

adb shell
flash_image misc /sdcard/misc_backup.img
exit

...and reboot.

Rooted Eclair Voda FroYo or CM with HBOOT 0.43

Since you have already rooted phone we can prepare everything before we start. Hook your phone to your PC. Put FroYo ROM update zip to phone's sdcard. Put also misc1-2.img and flash_image from hack4legend-v5.zip and testimage.zip from r4-legend-root there. Extract Vodafone FroYo OTA and put firmware.zip to your phone's sdcard renaming it to LEGEIMG.zip. Reboot into bootloader from command prompt:

adb reboot bootloader

...bootloader will find LEGEIMG.zip extract it into RAM and check its integrity. If you get CID error at this point you don't have gold card. Make your sdcard gold and retry the procedure.

After successfull flashing of LEGEIMG.zip (firmware.zip from FroYo OTA) you have HBOOT 1.00, new (unrooted) recovery, new (unrooted) boot but old and intact system with superuser.apk and su. Reboot. When system is available, tick "USB debugging" in Settings->Applications->Development. After that you will be able to adb shell into your phone. Fire up some command prompt and issue:

adb shell
su

...while phone screen is still on. Superuser will pop-up. Grant it. Now make a backup of misc partition:

cat /dev/mtd/mtd0 > /sdcard/misc_backup.img

...now copy flash_image from sdcard to internal storage, change its permissions, and flash misc1-2.img:

cp /sdcard/flash_image /data/local/
chmod 755 /data/local/flash_image
/data/local/flash_image misc /sdcard/misc1-2.img

...rename LEGEIMG.zip to firmware.zip and testimage.zip to LEGEIMG.zip:

mv /sdcard/LEGEIMG.zip /sdcard/firmware.zip
mv /sdcard/testimage.zip /sdcard/LEGEIMG.zip

...exit from adb shell and reboot into bootloader:

exit
adb reboot bootloader

Phone will reboot, find LEGEIMG.zip and flash it over. You will end up with HBOOT 1.00 and downgraded and rooted recovery. Boot into ClockworkMod recovery and flash Voda FroYo custom update of your choice from your sdcard. You may also want to restore backed up misc partition after updating is done:

adb shell
flash_image misc /sdcard/misc_backup.img
exit

...and reboot.