[Sprint HTC EVO 4G LTE] om4:
This Guide has been written to aid users both old and new as a generalization of how the entire process of phone customization works. It is useful and relevant knowledge that will aid in the process of unlock, root, flash, and recovery. This is not a tutorial on unlocking your HBOOT, nor is it a tutorial of how to root your phone. It is a list of things you should know before, during, and after you complete the process. Below is everything I could think of to help guide you as you attempt to obliterate unlock your phone. There are risks involved and you may end up with an unusable device, this is not to be taken lightly. However I have included a basic troubleshooting guide as well. Should you run into trouble, it lists some of the most common issues. If all goes well then congratulations on unlocking your device.

ROOT

This is a term used for everything here. Basically there are areas of your phone that are locked out. Root gives you admin or superuser privledges that can be used to modify things like build.prop or app data that you could not normally access. Typically during to root process an app is installed on your phone that governs which apps are given exclusive superuser privileges to modify your system. Superuser by CHAINSDD and SuperSu by CHAINFIRE are the only two apps I'm aware of.

S-OFF

Security off, Basically the Holy Grail of Android customization. This disables the security allowing you to directly modify the NAND memory of your device. This in turn allows you to apply patches, device drivers and other niceties not normally available. This is why developers work tirelessly to enable S-OFF (Be sure to thank them for their amazing work).

HBOOT

- This is your boot loader and is very similar to the BIOS on a PC, it basically performs POST (power on self test). It is responsible for flashing official software releases, enabling FASTBOOT and is basically the bouncer outside a club. This is what initially stops you from flashing unsigned code to your phone. OEMs have begun offering tools to unlock your boot loader and enabling the use of fast boot. Examples include HTC DEV Unlock, Samsung Odin, and Motorola's Unlock My Device.

Note: Depending on the security of your HBOOT you may or may not have access to the boot partition. Best example would HTC's HBOOT software. Unlocked it only offers access to FASTBOOT which in turn allows for recovery and flashing of ROMs. It does block flashing radios and other firmware

What does upgrading your HBOOT do? It adds support for new hardware (future phones) or fix bugs (break any chance you have of S-OFF, it may also bed your significant other but I have yet to confirm)

Should I upgrade my HBOOT? If a new firmware is released they may contain bug fixes, new radios, or newer versions of Android. If you want S-OFF and have yet to obtain it, no. Developers may find an exploit that can be used to obtain S-OFF. If you are stuck with S-ON and are waiting for S-OFF, again the answer is no. Developers may find an exploit to obtain S-OFF. If you don't care about obtaining S-OFF and you want to update your firmware, flash new radios, or simply want the bug fixes then this is the only option you have while S-ON if you are running stock. The only real benefit comes from what you can not flash with S-ON, basically radios or update for various drivers.

What does downgrading my HBOOT do? It falls back to the previous version of HBOOT, in some cases developers have released tools to downgrade to a previous HBOOT allowing users to then exploit the older boot loader and achieve S-OFF. Some people with S-OFF will upgrade but there is no real benefit, it often causes more problems with ROMs. They then attempt to return to previous HBOOT (very real potential for bricking your phone)

How do I upgrade my HBOOT? By installing an OTA or by using official ROM Upgrade Utility (RUU) To my knowledge there is no other method for upgrading HBOOT

Why do I need to downgrade HBOOT? As of right now, you don't. Do not trifle in what you do not understand.

Does rooting my phone require a certain HBOOT? Root is not dependent on HBOOT

Help, I upgraded my HBOOT and lost root! HBOOT has nothing to do with removing root, the RUU replaced your ROM with one that doesn't have superuser privileges.

RUU

ROM Upgrade Utility, this is used to update your phone or revert it to a OEM factory state. The most common use of RUU in the community is to restore the original recovery and or re-enable S-ON

RECOVERY

A very small type of operating system that resides on a part of your phone that is separate from Android. It is used by OEMs to install official OTA updates. Developers have created custom recoveries such as CWM, Amon Ra, and TWRP that allow a user to flash unsigned ROMs to the phone allowing for a greater degree of customization not offered by the stock operating system.

Nandroid

Also referred to as a system back up. This is a copy if your phone's current system state. It creates duplicate images of your kernel and system including system settings, apps and app data, userdata, and or any mods. First and foremost, this is the most important thing to do after you flash recovery and before you flash a ROM. Should anything go wrong during the course of flashing a new ROM package (ROM/Kernel) and or should you wish to return to a stock state, restoring a Nandroid is the easiest and most effective way. Always be sure to back up your current system state prior to flashing a new ROM and or Kernel.

Note: Using Flash Image GUI will replace kernel from within OS. Be sure to create Nandroid before using this app to flash a new kernel.

ROM

A package consisting of a boot image (kernel) and a system image (AOS or Android Operating System, I will now refrain from calling it AOS in fear that Apple may ruthlessly try to sue me for infringing on such a broad generalization to an operating system). ROM broadly refers to all of the phone's software. A custom ROM is any ROM that is modified from stock OEM or AOSP (for good measure, Android Open Source Project)

AOSP vs STOCK

AOSP

Pure untainted Android OS maintained by users who want a clean open source mobile OS that is available for everyone. This is the base for ROMs like CM10 or Kanged. This is also the starting point for all OEMs

STOCK

A build of Android that has been customized by an OEM. At first manufacturers used the opportunity to build custom skinned versions of Android. They supplied custom apps which they packaged into the ROM separate from the apps available in the market as a means to include exclusive features. This started a fierce competition between manufacturers who began making radical changes to the lowest levels of Android, including the kernel and framework. This led to slow, unreliable devices (frustrating for many developers who only have one real world device) that may have great hardware but poor software. In order to satisfy carriers OEMs may remove features or add many unwanted features. The most prominent issue stemming from this practice has been the Carrier IQ debacle. Roms like Venom and Mean use stock as their base.

Note: The most recent changes done by HTC and other OEMs are so extensive that they now offer their own SDK (Software Development Kit) for app developers to be able to write applications that are compatible with their framework

Kernel

It is the layer between software and hardware. It allows the hardware and software to communicate with each other. The kernels must match the ROM Base and Version. Sense with Sense, AOSP with AOSP, ICS with ICS, Jelly Bean with Jelly Bean

CPU Governors A CPU Governor controls the frequency of the processor in response to the workload placed on it. If your phone supports multiple forms of governing, You will have the option to choose how it affects the performance and battery power consumed.

On Demand

Pretty much the standard governor. The way it work is by ramping up the frequency to max in order to ensure responsiveness and then sampling the work load and scaling down the frequency to match. This is done by setting maximum frequency when the CPU is busy and gradually scales down as CPU reaches idle.

Interactive Governor

Similar to On Demand, Interactive will dynamically scale the clock frequency as the workload demands. This is where the similarities end however. Rather then ramping clock speed to max when CPU is busy, interactive determines how to scale the CPU as it comes out of the idle state. When the CPU leaves idle, the governor sets a timer (pre-set by the developer). If the CPU use is intensive between leaving idle and timer expiring, governor will assume the system is under clocked and ramp to max frequency. It is better suited to handling intermediate clock speeds. Think of this as a faster, smarter On Demand

Performance

I got a fever, and the only prescription is more cowbell! This sets the min frequency to the max. Your phone will burn, your battery will spring a leak, and you will see insane benchmark scores. This is obviously not a day to day solution.

Power Save

Is anyone home? This will set you max frequency to your min. What a bore.

User Space

This allows the user to set the frequencies. Better suited to the more advanced users

Input/Output Schedulers Determines "who goes first" by assigning which operations go to the storage volumes.

NOOP Scheduler

This scheduler works on a sort of "first come, first serve" basis and will implement request merging. Its best for solid state drives and good on DB systems. It uses the least amount of CPU cycles per request. The one flaw I can see straight away is "less cycles = less performance"

Deadline Scheduler

Used to minimize latency, it reserves five queues and schedules all I/O operations accordingly. This is an aggressive scheduler that runs at near real time speed. It is great for reducing latency and like NOOP, works best on solid state drives, db systems, and reduces latency in any I/O request. When system becomes taxed, this scheduler becomes very unpredictable.

Completely Fair Queue Scheduler

This scheduler is scalable per I/O Queue, it distributes I/O bandwidth to all I/O requests fairly and equally. It helps maintain balanced performance through out and is great for multiple processors. The problem is when too many requests are competing for bandwidth, performance degrades.

Simple Input Output Scheduler

This is as plain as it gets. No priority queues, no reordering or sorting requests, and the most basic merging. Minimum latency and low overhead, this is a simple and reliable scheduler.

BFQ Scheduler

I would rather not risk getting into trouble with this acronym, lets just say the B is for brain and the F is a no-no word. I have not really used this scheduler but it's supposed to be good for USB data transfer, high definition video recording, video streaming, and is a fairly reliable scheduler. In my personal use I didn't get very good results.

MD5

It is basically a finger print for files, the developers use this to help regular users verify the integrity of the file. Most recoveries already support MD5SUM to prevent users from flashing corrupt files. Always verify the MD5 of any Kernel or ROM before flashing it to your phone

How to verify MD5 Hash

In Windows

Like most useful utilities in Windows this is not supported, you can download a small utility that will load the file and display the Checksum Hash needed to verify.

In OSX

Open a terminal and navigate to the folder your ROM is in and type md5 filename.ext

In Linux

Again open terminal, navigate to folder and type md5sum filename.ext

In Android

Open a terminal emulator, navigate to folder and use the same command used in Linux. Not surprising as Android is Linux but really neat! There are also apps for checking MD5 Hash Sum

Crossplatform

Download managers and manager extensions for browsers like Firefox and Chrome may come with Checksum built in

Recovery

As stated, most if not all recoveries will verify checksum hash. It is still good practice to verify by other means to avoid a bad flash

ROM Downloaders

I don't really trust these or any large download on Android, sue me. Downloader apps should have a means to verify hash

NAND or N(OT) + AND

Named after its basic operating principle, it is a form of non-volatile flash memory. Devices such as USB drives, cameras, mp3 players, and cellphones use NAND to store necessary firmware/software needed to operate. On Android phones the NAND memory is what holds all the information that powers your device. It is divided into separate partitions that are used to store firmware, the kernel and the system along with any other information such as contacts and cached data.

The Partitions are as follows

BOOT

This Partition holds the HBOOT and Kernel and as the name suggests, is responsible for the allowing the phone to start. This is the most important Partition in your NAND memory.

SYSTEM

This Partition is what holds our beloved Operating System. It contains the entire Android Operating System and the apps that come preinstalled on our phones.

RECOVERY

Recovery can be thought of as our alternative boot partition. It holds the advanced recovery console that we need for flashing our phones.

DATA

Also refered to as user data. This partition holds our contacts, messages, apps, and settings.

CACHE

This is for the temporary storage of frequently used app components and frequently used data.

MISC

This contains various bits of information like CID (Carrier or region identification), hardware configurations and various hardware/system settings.

SD_EXT

Not to be confused with the Ext-SD shortcut on some phones (a way to access the external SD) This is not a standard Partition, it is an additional partition stored or your SD card that acts as another data partition. This allows you to install apps on your SD card and store data relative to the apps installed.

ADB

Android Debug Bridge, it is used for development purposes but it has its usefulness

adb push This allows you to copy a file or directory to a phone

adb pull This allows the opposite, copy a file or directory from the phone

adb sync Copy host - phone if there are any changes present

adb logcat View phone log

adb install [ -l ] [ -r ] < file name > Push package file to phone and install it (-l means forward lock the app, -r means reinstall the app keeping its data)

adb uninstall [ -k ] Removes app package from phone (-k means keep data and cache directories)

adb reboot [bootloader] Reboots phone into the bootloader

adb reboot [recovery] Reboots the phone into the recovery

FASTBOOT

A command line interface that can be used to directly flash the file system in Android, it is quite possibly the most reliable method to use if you know what you are doing. HBOOT must be unlocked (OEM or S-OFF) to have access to FASTBOOT

fastboot devices List all connected devices/phones

fastboot update Flash/re-flash a phone from update.zip

fastboot flashall Flash boot, recovery, and system

fastboot flash Flash a specific partition (partitions are boot, recovery, system, cache, and userdata)

fastboot erase Erase specified partition

fastboot reboot Reboot phone normally

fastboot reboot-bootloader Reboot into bootloader

fastboot -w Erase cache and userdata

fastboot oem lock Relock the boot loader

Flash Image GUI

Created by member joeykrim, it is an Android app used for flashing recoveries and kernels from with in Android ROM. This is an easy to use tool for OEM Unlocked (S-ON) users to replace/update the kernel and or recovery before rebooting into recovery to switch ROMs. I have not used this myself so I can not determine how safe it is. Always verify MD5SUM

HTC Dumlock

Created by TeamWin as a means to flash phones with OEM Unlock (S-ON) on HTC devices with HBOOT that do not allow for boot partition to be flashed. It is built in to TWRP, TeamWin also offer a Universal Dumlock solution compatible with other recoveries. It is probably the safest method for new users despite its seemingly complex nature. It is installed from recovery and run from within Android similar to Flash Image GUI but does not flash kernels. It makes a back up of your boot and recovery and then it takes the back up recovery and writes it to boot from within OS, your phone will then reboot (some phones must reboot manually, do not boot to recovery). From here on the recovery is running from within boot, you must then restore boot and then you will be allowed to flash a ROM like you would if the phone was S-OFF. Be aware that this is not the most ideal method as it writes to your boot partition 3 times (recovery, then restore boot, then kernel). Still this is the most flexible method for new users.

Uniflash

Created by member MihailPro, this utility is a veritable swiss army knife of Android customization. It is basically several tools rolled into one. It supports and automates adb, fastboot, image editing/creation, manipulation of file system, back up and restoration of NAND partitions.

Features:

Flash

flash core (My guess is this is the flashall command; boot, system, recovery)

flash recovery

flash splash

flash radio

flash official and custom firmware (updates, patches and zip files)

Modify

edit Build.Prop

remove bloat

install or remove custom applications

copy to and from the device (internal, external memory) with the option to delete files

wipe user data, cache and perform factory reset

Image Creation

Basically back up and recovery

Note: This application is not compatible with HTC Sync, in order to use it please uninstall sync. Those of us with HBOOT 1.15+ still can not modify certain aspects of the memory but this application should at least make it easier to fastboot flash kernels, recovery and or ROM

PRI

Product Release Instruction, the protocol used for the transmission of voice and data across Sprint's cellular networks. It may be updated from time to time to improve battery life and/or performance. It will also be updated when any drastic changes are made to the network. This directly affects the performance of your phone's voice and data

PRL

Priority/Preferred Roaming List, It is a database used primarily by CDMA networks. It provides a list of network identifiers(service providers), wireless bands, and sub bands used to select the best service for roaming (example of bands/sub bands: PCS wireless band is 1850mhz to 1990mhz, divided into 6 blocks I believe. Sprint uses 1900, Block G if I'm not mistaken). Rather then giving you the best and most reliable option, the carriers choose which service providers to use (they have roaming agreements which help keep company costs down).

NV

Non volatile memory, it contains info for MEID/ESN/EVDO and other credentials.

Radios

These are basically drivers for the radios on your phone (basically firmware) They pertain to CDMA/EVDO, WIMAX, LTE, BLUETOOTH, WIFI and even NFC. They may be updated with patches or bug fixes to improve battery life and or performance.

Note: The only means of flashing new firmware on S-On unlocked devices is by using official HTC software

Basic Troubleshooting

**Please take the time to read all the relevant info I have posted prior to reading the troubleshooting section. I promise it will help you to better understand your phone and that is the entire purpose of this guide**​

Note: To those of you with CWM Recovery, it is recommended that you use TeamWin Recovery as it is better suited for our phones.

Brick

This is a very serious problem, your device is catatonic and will not respond to the usual methods of power on/off or sim-pull. In some cases the phone comes back when the battery dies and is recharged, this isn't very often. There are un-bricking tools written by OEMs when they screw up (Samsung / Motorola) and there are tools written by developers working on S-OFF. They notice a very real danger and will supply the tool just in case (this is not possible in all cases). Bricking can and will be permanent in many situations

Boot loop

There a different kinds of boot loop situations (also referred to as soft brick, please do not cry brick in the forums if it is a boot loop) the most common are a mismatch of kernel and ROM.

Help, my phone is stuck in a boot loop or my phone is stuck on HTC!

Not a problem at all. Hold down the power button and continue to hold it, the capacitive buttons will begin flashing and phone will reboot. After the screen turns off let go of power for one second and the press and hold power and volume down to boot into the boot loader. This is known as a simulated battery pull. HTC built this in as a fail safe to reboot your phone, and it gives us a chance to jump into the boot loader should anything go wrong. Once you have successfully made it to the boot loader read through these forms of boot loop to understand what went wrong.

Known forms of boot loop

Generic Boot loop

You have a working recovery and now you have installed your first ROM. There's just one problem every ROM you try boot loops but if you restore your back up and it runs fine. This is common when you haven't taken the time to wipe your phone before you flash. You can use a wipe script to clean your phone or you can systematically wipe Dalvik, Cache, Factory Restore, and then wipe System. Now you can flash your custom ROM (HBOOT 1.15+ requires you to flash the kernel separately)

Help my phone won't boot past the splash screen

similar to a generic boot loop, the most common fix is to wipe the phone before flashing your ROM. Wipe your dalvik and cache, the factory reset and wipe system. You can now flash your new ROM

Kernel Issue

You have flashed a kernel that may be corrupt, originate from a different base, or is just not supported by the ROM (not really the case these days, most developers are willing to share tweaks and custom code) The result is a phone that boots to a black screen and will hang or reboot.

Note: HBOOT 1.15+ requires you to flash the kernel separately, all relevant info to do so is in this guide.

ROM Issue

The kernel boots and luckily the ROM takes to the kernel but something in the kernel does not agree with your ROM. The result is a phone that will boot to android and promptly reboot.

Missing ROM

Due to a misunderstanding, you have already wiped all ROM data from phone (cache, dalvik, and system) and fastboot flashed the kernel. Now phone hangs on HTC boot screen and will not load Android. Only the kernel has been flashed, the screen hangs because there is no OS to load. Fear not, return to recovery and flash the ROM package that your boot.image originated from. Now select reboot to system and wait for your phone to restart. The kernel will boot, your OS will load, and all will be right with the world.

Update.zip or update pmg.zip

This is a doozy, the rewrite didn't take and you no longer have a working kernel or system image, phone will keep booting to boot loader. If you updated using fastboot this will be less frustrating then if it was placed on the root of your phone/SD card. If fastboot method was used just jump into recovery and flash a working ROM package or restore a back up. If updating from boot loader, remove the SD card and delete update. The boot loader will continue to automatically read update and flash it until you do so.

Bad kernel and or system image and recovery

Phone will boot to boot loader, will not boot to OS and selecting recovery will boot to boot loader. All is not lost, simply fastboot recovery and or boot image (for those on HBOOT 1.15 and higher) and then flash ROM from recovery. This happens but it is very unlikely it will happen to you.

MISC

Help I just flashed the latest *insert ROM here* and my apps wont open (force close)

This isn't the end all solution, but in many cases you just boot into recovery and select fix permissions. If you still have apps force closing and you know its not from the market, you may have to boot recovery and wipe the system and data, you will then need to re-flash the ROM

Help I flashed a new ROM/update/script and now I can't access my internal/external SD card

Its OK, the SD card has been corrupted but you can reformat it with recovery itself or by using recovery to mount the card and formatting it by PC

Help the internal card isn't recognized by recovery or PC! (This is rare so make sure before attempting this fix)

You're card is beyond a simple reformat, the physical address linking the card and or entire card is corrupt. Don't panic, you have to start clean. Back up the info on you external or remove it, make sure you have a ROM available on your PC. Go into recovery and repartition your phone, this will wipe all memory. You then load up a working ROM (a bad back up may be responsible or just reintroduce the problem), after you have flashed the ROM (HBOOT 1.15+ must fastboot kernel, unless S-OFF) go ahead and boot into android and restore your apps.

Help I repartitioned my phone and now I'm having trouble with my apps

Not a problem, go into recovery and fix permissions.

My power button is broken!

While I really don't recommend continued flashing of your phone without a power button, you can use built in menu options to reboot to recovery or adb reboot to recovery and or adb boot to fastboot.

Note: In the event that recovery is somehow damaged, phone may boot to boot loader depending on the state of your system. To the best of my knowledge, there is no way out if power button is damaged

Help my power button is broken and I'm stuck in the bootloader without Rom or Recovery

Without the power button you can not choose recovery from the menu, so even if you flash TWRP you are stuck in bootloader. Flash recovery normally so that you have it after the problem is fixed. (Type fastboot flash recovery twrp.img) Now flash recovery again, only this time you will flash to boot. (fastboot flash boot twrp.img) This is a workaround to get into TWRP. Now we reboot the phone and flash the rom. (Type fastboot reboot) Wipe the phone as you normally would. (Dalvik, Cache, Factory reset, System) Install a Rom that has a kernel installer and reboot.

I can't seem to get my GPS to lock onto my location

You can try using an app called GPS Tools, it will clear any data and reset GPS

How do I check to make sure my ROM/Kernel isn't damaged?

Open zip file prior to flash or verify MD5 Checksum Hash

How do I check MD5?

Read my section on MD5 verification

How do I flash ROMs?

You can use Regawmod but I recommend you use HTC DEV Unlock. The basic process for this is simple. Register to HTC Developer website, go to unlock device and select other. Follow the simple instructions to enable adb and request token(Its a unique identifier for each phone). The website will then ask for token and send an email with further instructions. Once you have unlocked the boot loader you will now have access to fastboot. You have 2 methods of flashing recovery, you may fastboot flash the recovery image or use the update zip provided by TeamWin (Make sure the zip or image is compatible with your phone and verify MD5 sum to ensure no corrupt files are flashed). Once recovery has been flashed, its best to boot into recovery and make a back up of your phone's current state. Now before attempting to flash any ROMs, boot back into stock Android and download Goo manager from the market. Once installed, open app and from the menu select install open recovery script. This will ensure you have the latest recovery incase the one you just flashed is out of date. It will also enable you to use yet another alternative method to reliably flash your phone. As always, please read all relevant information before you attempt to unlock or flash your device. There are guides to help you posted on the forums. Good Luck!

Note: HTC Device Drivers must be installed prior to using HTC Dev Unlock, it should be covered in the HTC's unlock instructions.

Help the RUU failed and my phone is stuck in boot loader

Try running it again or failing that, flash twrp in fastboot, then flash a kernel from which ever rom package you wish to flash and flash rom in twrp. If you really want to update it would probably be better for you to flash a stock rom with a stock recovery and perform an OTA update. If you relocked your boot loader, just flash the unlock_code.bin which you can get by unlocking through HTC DEV

Help my Android has super ceded Isaac Asimov's Three Laws of Robotics

You gave it root, what did you expect to happen. It's the ghost in the machine man, Sky Net has to happen eventually.

So a brooding teenager with a hatred for machines really is our only hope for survival?

God no, an emo teenager is never the solution

I think this is it for the most part, everything here should help most users troubleshoot their phones by themselves.