Fixing custom kernel lockups on the Droid Incredible

The stock HTC kernel will work for the majority of Droid Incredible users out there. However, if you are in the market to cut down on some battery usage and gain some extra functionality, a custom kernel may be what you need.

There are a few custom kernels available for the Dinc like Hydra and KingKlick which provide overclocking and undervolting options.

This quick guide assumes you are rooted, know how to use ADB, can work your way around Clockworkmod recovery, understand that Nandroid backups are vital, and have some common sense.

Now the problem with installing custom kernels is that there is a good chance they won’t work for your phone. Not all Dincs are made the same, so what may work for others may not work for you. So with that said, sometimes you’ll find yourself loading a kernel, reboot, and find yourself stuck on the white HTC Incredible screen. This does NOT mean you bricked your phone — don’t freak out.

Before doing any kind of custom work, make sure you perform a Nandroid backup.

For my Dinc, I can’t load any Kingklick kernels. Every BFS and CFS version he puts out makes my Dinc lock up at the white HTC screen. After some digging, I may (or may not) have bad memory blocks on my Dinc. So when I try to flash various sized kernels, it sometimes fails and causes a lockup upon reboot.

So now that you are stuck on the white screen, there’s an easy way to fix it with your Nandroid backup and ADB. All you need to do is restore the boot image from your known good backup.

  1. Reboot into recovery (hold volume down + power, then select the recovery option) by doing a battery pull.
  2. Go into backup and restore -> advanced restore -> select restore boot.
  3. Do not reboot your device yet.

I’ve noticed if I rebooted at this point, even the stock kernel would cause the white screen lock up. The reason for this is the extra modules installed in /system/lib/modules from the previous kernel install attempt. Restoring the boot image will not erase the new module(s) or restore your old one(s).

The next steps assume you have ADB access and know how to use it.

  1. Connect your USB cable to your Dinc.
  2. Go into the mount/unmount menu and mount /system.
  3. In an ADB shell, issue the following command: rm /system/lib/modules/*.ko
  4. Your previous custom kernel modules should now be deleted. To verify, you can do a list: ls /system/lib/modules
  5. (Optional) If you have your module(s) saved to your /sdcard, you can now copy them back into /system/lib/modules.

Now you can go ahead and reload, via the update.zip method, another kernel of your choice. If you want to revert back to stock, you can grab the stock kernel (with undervolt goodness) off of Hydra’s website. For my Dinc, the only custom kernel that worked were the Hydra releases. I’m now cruising at 1.15Ghz without any problems.

You can also restore your complete Nandroid backup (or the boot and system backups) if all you want to do is get back up and running. The method outlined above is a better way to “clean up” if you are testing out various kernels and trying to get them to boot.