Flashing an old Desire HD with CyanogenMod 12.1 (unofficial)


  • Use TWRP Recovery v2.8.7.0 (see link below)
  • If having issues with getting the phone to be recognised by Windows 10 in order to run Fastboot and ADB commands while the phone is in Fastboot, see the registry entry below.


Before the Nexus 6P and HTC One (M7), I owned an HTC Desire HD. It was a great phone at the time, and laughably my flatmates and close friends called it a ‘television’ at the time because of its size. Having only a 4.1 inch screen size, its now considered small! But back then the iPhone screen was only 3.5 inch.

Anyway, let’s cut to the chase… I wanted to update the ROM I had to something far more recent so that I could at least get storage encryption working (hopefully) and just generally more secure. 4-6 hours later, I’ve got the following to report:

Assumptions/previous work:

  • S-OFF, Rooted and AAHK fastboot installed – I did this years ago so I can’t really remember what’s required to make it happen, but I assume find articles about AAHK
  • Hrmm… I think there was something else I was supposed to mention… feel free to comment if you find this and what I’ve said below doesn’t work

Steps taken:

  1. You need a newer version of TWRP Recovery (v2.8.7.0 at least) than what is provided directly on their website for the Desire HD. You can get a PD98IMG.zip file that will flash this recovery for you from this XDA Developers post, or comment and I’ll upload what I downloaded.
    1. Place this file on the root of the SD card and boot the phone into HBoot Mode (hold Volume Down and the Power button)
    2. It should scan the SD card and find the file, push the relevant button to proceed and allow it to finish.
    3. Hold the Volume Down button again while you push Power when it asks you… however this will put you in a loop asking you to install again. At this point I recommend yanking out the battery and shoving the SD card in your PC and deleting/renaming the PD98IMG.zip file so that you can boot into your new recovery ROM.
  2. With the SD card returned to the phone and the battery back in, boot into HBoot (Volume Down and Power button again). Wait for the check to happen and fail (now that PD98IMG is gone), and then select Recovery to start TWRP.
  3. Format, repartition and so on as necessary
  4. Use the ‘mount’ option to mount the SD card via USB and plug your phone into your PC to transfer your chosen ROM
    1. I went with an unofficial CyanogenMod 12.1 ROM from OpenDesireProject.org so that I didn’t have to do the ‘aceopt’ transform to the SD card (which frees up more space by merging an SD card partition and the /system one – I think). Specifically I went for the latest nightly build (cm-12.1-20160403-UNOFFICIAL-ace) which I’m still waiting to boot [Update: no issues so far!], but if it fails I’ll go with February 2016’s snapshot.
    2. You’ll also want the relevant ‘GApps‘ zip for the version of Android you choose. I needed the Android 5.1.1 package since that’s what CM 12.1 is based on. Find the Google Apps ZIP patch here.
    3. Use the Safely Remove Hardware wizard on Windows to disconnect (otherwise kittens (aka SD cards) die).
  5. Use ‘install’ to finally install both the CM (or your chosen) ROM and the Google Apps patch.

As a potentially random, but somewhat useful aside: Windows 10 doesn’t seem to properly detect the HTC Desire HD when it’s in fastboot/HBoot mode and plugged into USB. It would show up as ‘Unknown USB Device (Device Failed Enumeration)’ and the extended error would be:

Currently, this hardware device is not connected to the computer. (Code 45)

To fix this problem, reconnect this hardware device to the computer.

A request for the USB BOS descriptor failed.

So fastboot commands weren’t working when I was trying other recovery ROMs before I found that PD98IMG. Searching for this problem lead me to this in-depth Microsoft article. Using Message Analyzer I was able to find the necessary Vendor (0BB4) and Device IDs (0FF0) for the registry entry it states is required at the bottom, but not the revision ID (0100). I happened upon this by chance/trial and error. Anyway I added the following registry entry in order for the Desire HD to show up as an ‘Android 1.0’ device so that I could change the driver to use the Android ones and therefore use fastboot/adb.

Windows Registry Editor Version 5.00



With this in place and changing which USB port the device was plugged into, I was finally able to run ADB and FastBoot commands against the device in Fastboot/HBoot mode.

Geek, wanderluster, pochemuchka, wannabe-polyglot, photographer and UK-resident kiwi here for the travel.

Leave a Reply

Your email address will not be published. Required fields are marked *