[GUIDE] Everything Explained.
Before you go ahead and start unlocking, flashing and rooting, there are things you should know. This thread is a general guide that will serve to explain most of those things.
The Layers. How does everything come together?
Table of Contents
A. The layers (Hardware, Firmware, Software)
C. Troubleshooting Common Issues
Just like any other computing device there are 3 Layers to your phone. It helps to realize this prior to modifying your phone, so you are able to troubleshoot issues more effectively.
Layer 1 Hardware
: The hardware layer is the physical components of your phone. That which you can touch, hold and see. This layer is the least likely to be modified unless you are a crazy super master level modder. Very few bother to mess with this layer so this layer tends to be the most stable with very little issues arising. The best way to make sure a problem is not related to the hardware layer, that is to say, a physical hardware problem where a physical component needs replacing, is to return all software and firmware to stock. This is typically done by running an RUU or manually reflashing stock firmware and software. There are instances where software or firmware modifications can affect the hardware. For example, if you overclock your CPU, the added heat could permanently damage the CPU and even other hardware components so be sure to take that into consideration.
Layer 2 Firmware
: This layer is what allows the software to control the hardware in your phone, like a bridge between the two. There is firmware for just about every component of your phone, the camera, screen, radio, processor etc etc. This is the second least likely layer to be modified. S-Off is required to modify most, but not all, firmware files and rightfully so. Modifying firmware components can easily damage your phone if you do not understand what you're doing. In some cases a JTAGG repair can fix your phone from firmware modification damage, other times, only replacing physical components can repair the damage done. (Recovery and the kernel are technically part of the firmware layer but do not require S-Off to flash)
Layer 3 Software
: The software layer consists of the "ROM" and applications on your phone. This is where most of the modification takes place and while modifying the software layer is the least likely to cause serious issues, it can still be dangerous. Flashing a ROM not intended for your device could easily put your phone into a bricked state. With SuperUser or Root access, software is capable of modifying the firmware layer of your device. It is up to you to decide what is safe and what's not safe. This is why rooting is not for everyone. How can you properly decide what is safe for your device without the proper knowledge?
What is root?
Root, super user or su for short is a level of access giving you permission to read or write to folders, or partitions you could not have access to as a regular user. Think administrative access.
Consider a folder path “/sdcard/downloads/” If we break it down, “downloads” is a folder in “sdcard” and “sdcard” is one of the folders in “/” which is the “root” of the folder structure. As a regular user, one might not consider that folders other than sdcard exist in “/” as they are kind of hidden from us but rest assure they are there and this is typically where the android OS and firmware files are kept. Modifying these files can be extremely dangerous for your phone if you do not understand the modifications to the file you're making, and what steps you can take to recover from any issues you encounter.
What is an RUU?
RUU stands for ROM Update Utility. An RUU is used to reflash an existing firmware/software set or updated firmware/software set. An RUU will wipe everything and basically get your phone back to stock. Unless your phone is S-Off, you cannot run an RUU with an older firmware or software than those currently on your device. You can only run an RUU that matches your MID/CID unless you are S-Off and have SuperCID or have changed the MID/CID to match the carrier you are flashing. There may be differences in hardware/firmware between MIDs and CIDs so be mindful as this can lead to a brick. To properly run an RUU with S-On, you must also have stock recovery installed, the bootloader must be locked/relocked. BE VERY CAREFUL DOING THIS. It is not recommended to RUU or OTA after unlocking your bootloader unless you have to. If you are S-OFF you can RUU whether the bootloader is locked or not and if you are superCID, CID checks will be ignored so be sure to be mindful of the RUU you are running and that it will play nice with your phone.
What is an OTA?
OTA stands for Over The Air and implies an Over the air update distributed by your phone manufacturer, carrier or ROM developer. Unlike an RUU, an OTA will not typically wipe/factory reset your phone but can update your firmware and/or software set. To a apply a manufacturer/carrier released OTA you will need stock recovery and stock system apps installed. Your CID/MID must match that of the carrier/manufacturer your phone came from.
What is a ROM?
When the term ROM was first introduced it stood for Read Only Memory, however, most memory that claims to be Read Only nowadays is not like it was back then. Now a days it is not as complicated to write ROM as only permissions are in your way as opposed to the days when you were required to modify the hardware layer in some way to update the ROM chip. In this particular case, we are referring to the android software on your phone. Stock ROM would imply the manufacturer released ROM that came on your device when you purchased it. Custom ROMs are ROMs the are modified stock ROMs or ROMs built from android source code to. I think you get the idea. It's the device software or Operating System if you will. You should never flash a ROM that is not intended for the device you are flashing it to, this is very dangerous. Like, brick dangerous.
What is a nandroid backup?
A nandroid backup is a backup of your phone's current state. Like a snapshot or image of your phone's software. It includes the ROM currently flashed to your phone, the kernel, apps and settings. It does not include any firmware files other than the kernel and possibly the recovery. A nandroid is done with custom recovery and cannot be done with stock recovery. Taking a nandroid before you start messing with your phone is good practice. In fact, It's good practice to make nandroids before flashing a new ROM, or making any changes that may impact stability. This will ensure you always have a quick way to get back to having a usable phone. Obviously, a nandroid will not help in cases where you mess up firmware files like the radio firmware or hboot.
What is a kernel?
The kernel is the central point of an operating system. It contains the modules and settings necessary for the ROM or OS to work properly. Every Operating System has a kernel, including android. Just like ROMs there are custom kernels, with tweaks and the like that may improve or decrease performance/stability. Also, like ROMs, you should never flash a kernel not intended for your device. Very Dangerous!
What is a bootloader?
The bootloader is as the name implies, a device software/interface for handling boot operations it is contained within the hboot file. The bootloader screen has a few nifty features:
Gives you device information such as:
The bootloader state (locked, relocked or unlocked)
The Secureflag state (S-On or S-Off)
Your hboot and radio versions
Your Cid (only if you changed it)
Allows you to power down, reboot or boot your phone to android.
Allows you to factory reset your phone (Though should never really be used unless you are completely stock as you can properly factory reset in custom recovery)
Allows you access to the recovery
It gives you access to fastboot command operations you can send from your PC to your phone.
To boot to bootloader: Press and hold Power and volume up until the phone shuts off, then let go of power and volume up. Press and hold Volume down until your screen comes up in bootloader mode.
What is recovery?
Recovery is a software/User Interface that allows you to handle and make changes to your device, without having to boot the android OS. The stock M8 comes with a recovery that is quite limited but allows you to factory reset your phone and flash OTA updates which really is more than enough for the average user.
Those of us who want more from our phones, and modify them tend to flash custom recoveries with many extra features. I won't go into all the features they provide as the devs have websites, and you can visit them for more information. The two custom recoveries for the m8 include TWRP and Philz Touch. Both are very functional and choosing one is a matter of preference over anything else.
To flash a recovery image. Put the recovery image in your fastboot/adb folder and in the command prompt:
fastboot flash recovery recoveryfilename.img
You can find The latest:
TWRP for the M8 HERE
Philz Touch for the M8 HERE
To manually boot to recovery, boot to bootloader (Press and hold Power and volume up until the phone shuts off, then let go of power and volume up. Press and hold Volume down until your screen comes up in bootloader mode). Then select recovery in the bootloader menu.
What is S-Off/S-On?
This stands for Securewrite-on or Securewrite-Off. The name kind of gives some hints as to what it means. Having your bootloader unlocked, affords you the ability to to flash a custom recovery and custom roms as well as a custom kernel however, some people may need more. They may want to alter other system partitions. That is where S-Off comes in. It gives you full write access to all system partitons. It also forces a bypass for all security checks, such as those made by OTAs and RUUs, for CID and MID. S-Off is persistent. No matter if you RUU, OTA, Flash a ROM, Firmware, Factory Reset, S-Off will remain so until you use fastboot to reset the flag. I should say, if you don't know what you're doing, that is to say, if you are the type to follow instructions blindly on a thread, without much idea what is ACTUALLY Happening, what files you're modifying, you should not have S-Off. It should not concern you and that is that. S-Off can be dangerous. You have been warned.
What does a Factory Reset do?
A Factory Reset Clears the Cache, Dalvik Cache and Data Partitions. All settings will reset to default. User Apps (Apps you installed that did not com preinstalled with the ROM) will be removed. This will not restore your phone to when you purchased it. This will not relock your bootloader, Reset the S-Off flag, remove root, or downgrade your hboot. It merely affects the system and user settings and user apps.
What is fastboot?
Fastboot is a command line tool that allows you to manipulate certain parts of your phone from the bootloader. Your phone must be in fastboot mode and you must have the fastboot application and HTC drivers installed if you are on Windows. If you are on linux, the HTC driver is preinstalled.
Popular fastboot commands include:
Fatsboot devices (Lists devices connected for use with fastboot)
Fastboot flash recovery recovery.img (Flashes a recovery image)
Fastboot flash boot boot.img (Flashes a boot image)
Fastboot oem readcid (Shows the CID of the phone installed)
Fastboot oem writecid (Writes a new CID to your phone. Must be 8 Characters. Requires S-Off)
Fastboot oem rebootRUU (Puts the phone in RUU mode which is used for flashing firmwares and/or entire RUUs)
Fastboot reboot (Reboots your phone)
Fastboot reboot-bootloader (Reboots to bootloader)
Fastboot erase cache (Wipes the cache partition using fastboot. Good idea after flashing things via fastboot)
Fastboot help (Will list fastboot commands)
Fastboot boot imagefilename.img (Allows you to boot a recovery image or kernel image without actually flashing to your phone
allowing you one time access to the features without the headache of reflashing stock afterwards) Thanks to @garyd9
for suggesting I include this. Very convenient command.
What is ADB?
ADB is another command line tool used to manipulate your phone. The commands for ADB are way more extensive. ADB can only communicate with your phone while in a custom recovery or while the ROM is booted up with USB debugging turned on. The reason ADB is so much more extensive is because it allows you to remotely access your phone's terminal just like a linux terminal. You can use ADB to push or pull files to and from any partition (Some partitions will require S-Off), list devices, get a logcat, troubleshoot issues etc etc. For an extensive list of commands and how to use ADB I strongly suggest visiting http://developer.android.com/tools/help/adb.html
What is the CID?
CID stands for carrier ID. It's a string of letters and numbers, eight characters long that identify what carrier your phone is from. When you flash an OTA or RUU, The OTA or RUU checks for a few things, one of those things is the CID, to ensure you are flashing software intended for your device. Realistically, There's no hardware difference between the M8s (with the exception of CDMA vs GSM) so all firmwares/softwares should be compatible. With regards to radio firmware, your radio may function better with one firmware over another. There have been occasions with HTC where flashing an RUU or OTA with the wrong CID or SuperCID, while S-On would brick your phone. So try to be mindful of this and be careful.
Thanks to @garyd9
for suggesting I include this in my guide!
Some common CIDs include but are not limited to:
HTC International: HTC__001
T MOBILE: T-MOB010
What is a brick?
The term brick is sometimes thrown around a bit too casually. A brick is when your phone is no longer operable. It does not boot, there is no way to save it without resorting to Jtagg or replacing the nand chip or motherboard. If your phone powers on and something appears on your screen, your phone can almost always be saved. Be sure you know how to save your device before messing with your device.
Troubleshooting Common Issues
I flashed a ROM or Kernel and it's not booting! WHAT DO I DO!?
When this happens. There are actually a number of things to consider but first off, Hopefully you made a nandroid to restore from just in case the reason it doesn't boot is something not quickly or easily fixed.
Is the ROM you're flashing indeed intended for your device? ROMs you're flashing should be for the HTC One m8 International. You should not be flashing ROMs designed for the m8 Sprint or Verizon and should not be flashing ROMs designed for other models of phone. If the ROM you flashed is not for your device, best case scenario, it's not flashing properly. Worst case scenario, you have a brick. You will need to factory reset and wipe system then either flash a new ROM or restore a nandroid to get your phone up and running again.
Did you wipe Cache, Dalvik Cache, Data and System? (Don't wipe System for Kernel Install)
A factory reset will wipe all but system. You should wipe System manually in case the script for the ROM install does not do it or does it improperly. A factory reset is enough for a Kernel install. If you wiped system and just flashed a kernel, it's no doubt your phone is not booting.
If you did not factory reset and wipe system, do so and then reflash your rom. It should then boot.
If you wiped system to flash a kernel, you will need to reflash the rom, and then reflash your kernel again if you are flashing a custom kernel. (Note a GPE Kernel will not work on Sense and a Sense kernel will not work on GPE.
Did you matchup the Checksum? MD5 or SHA1 are usually posted on the ROM Download site/post. This allows you to check and make sure the integrity of the file you downloaded has been maintained. If The SHA1 or MD5 of the file you downloaded does not match what is posted, you have a corrupted file and should redownload. If you don't have a MD5 or SHA1 Checker, I suggest downloading one. Google MD5 or SHA1 Checker and you should find one. MD5 is most commonly used but it's up to the Dev as to which they post. Sometimes both. You only need to match one. (Linux comes with utilities for checking MD5/SHA1 called md5sum and/or sha1sum)
If you tried all these steps and it's still not booting, try another ROM. If no ROMs appear to be booting, you may be having an issue with your custom recovery. Redownload your recovery (Make sure it's the right one for your phone and check the checksum) Then reflash recovery, then use fastboot erase cache, boot to recovery and try flashing again.
If you tried all these and you're having issues, ask in the M8 Q&A
I wiped everything and I don't have a ROM on my phone to flash! What do I do?
This is quite simple really.
Boot to recovery
Connect your phone to your PC
Make sure your ROM is on your PC and in your adb folder
adb push romfilename.zip /sdcard/
Be patient, this could take a while, when it finishes you will get a confirmation with bytes in/bytes out.
Where can I go to find links to do all this cool stuff I want to do to my Phone!?!?!?!?
Thanks to @garyd9
Thanks to @keithross39
This is a work in progress. I will be updating this as often as I can, trying to explain as much as I can for newer M8 owners who are not used to HTC or Android devices. If you have any suggestions for what I can put here, post here and let me know! Also, I'm not perfect, I make mistakes if I have/do make any, do not be shy! Let me know.
[08/18/2014] Partially updated and fixed spelling mistakes. More coming soon!