HTC M9 刷机教程(存档备忘)

来源:互联网 发布:zepto 加载js文件 编辑:程序博客网 时间:2024/04/29 19:42

转载至:http://bbs.gfan.com/android-7943814-1-1.html


从HTC One M9开始,HTC取消了以前的hboot,改为现在的bootloader+download mode。因此,M8的教程不再适用于M9。于是,这个帖子诞生了。
其实,大部分操作,还是类似的,只是不再是在fastboot usb模式下操作,而是在download mode下操作了。

对于M9,正常的刷机操作依然是官方解锁→刷第三方Recovery→通过第三方Recovery刷ROM,而ROOT的过程则是官方解锁→刷第三方Recovery→通过第三方Recovery刷入SuperSU

本教程全部基于adb操作,需要一定动手能力。

预备知识1、adb配置
因为本教程是基于adb操作的,因此adb的配置是必须的,这是后面操作的前提。
下载地址:

本帖隐藏的内容

http://pan.baidu.com/s/1dDxSh6T



下载后把adb文件夹放到一个固定位置,我这里全部以放在D盘为例。
需要使用adb的时候请按下面操作(后面大量涉及adb操作,不在重复叙述了):
1、按Windows+R调出运行。
2、在运行里输入cmd,并点击确定。
1.png 
3、这时打开了CMD,然后依次输入
  1. d:
复制代码
  1. cd adb
复制代码
2.png 
此时,你就可以进行adb操作了。

由于很多人对CMD不了解,这里简单讲下CMD的操作小技巧:
1、CMD支持粘贴,但不是Ctrl+V,而是右击—粘贴(Windows 10支持Ctrl+V)。
2、按键盘的方向键上,可以直接显示刚才执行的指令。
3、将文件直接拖到CMD内,会将其地址显示在CMD内。

预备知识2、全新bootloader和download mode
从M9开始,HTC取消了沿用多年的hboot,改为bootloader+download mode,可能是考虑到高通平台和联发科平台的统一问题。
关机状态下,长按音量下+电源键,进入download mode,这个模式类似于以前的fastboot,大部分adb操作也都是在这个模式下进行。
3.jpg 
第一行hTC download mode说明现在正属于download mode。
第二行LOCKED代表还未官方解锁,官方解锁后变成UNLOCKED
第三行htc_himauhl是机型号,国际版M9均为htc_himauhl,Sprint版为htc_himawhl,Verizon版为htc_himawl;S-ON则是Security锁已锁上,如果S-OFF则是Security锁被关闭了,S-OFF后则可以获取最高权限,修改CID、MID、通刷RUU等。
第四行为download mode版本。
第五行为RADIO(基带)版本。
第六行为OpenDSP版本。
第七行为固件版本。注意:固件版本≠系统版本!
第八行为download mode开发日期。

接下来六行蓝色部分为可选择内容,音量键上下控制光标位置,电源键为选中。
其中常用的是后四个,分别是重启到bootloader、重启到download mode、重启、关机。
如果要到Recovery,需要先重启进入bootloader。

接下来就是bootloader了。
4.jpg 
看上去,和以前的hboot类似,但显示的内容少了很多,只剩下几个选择项了。
第一行是软件状态,Official为官方,Modified为修改。
第二行是官解状态,和download mode下显示一样。
第三行是Security锁状态,和download mode下显示一样。

最后五行为可选内容,音量键上下控制光标位置,电源键为选中。
REBOOT为重启系统;
REBOOT TO BOOTLOADER为重启bootloader;
BOOT TO DOWNLOAD MODE为进入download mode;
BOOT TO RECOVERY MODE为进入Recovery;
POWER DOWN为关机。

下面开始教程。

一、官方解锁
首先说下官方解锁(简称官解)和S-OFF的区别,官解是HTC官方提供的解锁bootloader锁的方法,官解完download mode和bootloader下的LOCKED会变成UNLOCKED,此时你已经可以刷第三方ROM了,但是不能跨地区刷RUU、Firmware。而S-OFF是获取最高权限,一旦S-OFF,你将可以跨区域刷RUU、Firmware(前提是机型一致,比如港版和台版互刷就可以,因为它们都是himauhl;而港版和Sprint版就不能互刷,因为一个是himauhl,一个是himawhl)。很多人会把官解和S-OFF搞混淆,所以这里稍微科普一下。
手动官解其实很简单,只需几个adb指令操作。
【更新:注意,5.1及以上系统,官解前请在设置——开发人员选项里勾选“OEM解锁”】

1、进入http://www.htcdev.com,点击下图红框部分注册。
5.png 

2、注册完毕后登陆,然后点击下图红框部分,然后点击Get Started。
6.png 
7.png 

3、如下图红框下拉选项选择最后一个All Other Supported Models,然后点击Begin Unlock Bootloader。
8.png 

4、分别点击Yes,选中两项复选项。
9.png 10.png 

5、接下来一页直接略过,直接点击最下方的Proceed To Step 5,然后进入网页最底部,看到这个输入框。
11.png 
12.png 

6、手机进入download mode并连上电脑。

7、电脑端在adb下输入:
  1. fastboot oem get_identifier_token
复制代码
此时会出现如下画面
1.png 

右击—标记,选中如下内容(注意不要多一行、少一行、多空格之类的)
2.png 

然后右击顶部状态栏—编辑—复制

8、回到刚才的网页最底部,将复制的内容粘贴到输入框内,点击Submit。

9、此时会提醒你成功,请进入你注册的邮箱接收解锁文件。解锁文件是一个不到1KB的名为Unlock_code.bin的文件。

10、将刚才下载的Unlock_code.bin放到adb文件夹内,电脑端在adb下输入:
  1. fastboot flash unlocktoken Unlock_code.bin
复制代码
3.png 

11、此时手机会显示如下画面
13.jpg 

音量键上下控制光标选择Yes,然后按电源键确认。

到此官方解锁完成!

注意:官方解锁会清空数据!!!


二、刷入第三方Recovery
官解后,你需要做的就是刷入第三方Recovery,因为后面无论是刷ROM还是刷补丁,都需要第三方Recovery。
常见的第三方Recovery有TWRP和CWM,个人推荐TWRP。由于TWRP不定时更新,所以这里我只提供官网,看不懂英文的可以去论坛找。
TWRP官网:http://teamw.in/devices/htconem9.html
下载到的Recovery文件是.img文件,放到adb文件夹。

手机进入download mode,电脑端adb下输入
  1. fastboot flash recovery 文件名.img
复制代码
4.png 

看到OK则说明Recovery成功刷入。

三、TWRP Recovery基本使用介绍
这里以TWRP Recovery 2.8.7.0为例,不同版本、不同主题界面可能略有不同,但大同小异。
rec1.png 
顶部第一行是TWRP版本,第二行是时间、点亮、CPU温度。
下面八个按键分别为:
安装 清除
备份 恢复
挂载 设置
高级 重启
左下角为主页键,右下角为返回键,正下方为显示log键。

这里重点介绍安装、清除、备份、恢复:
1、Install(安装):
rec2.png 

顶部Storage: Micro SDcard(外置存储)可以点击,然后选择Internal Storage,这样可以实现外置TF卡、内置存储的切换。
rec3.png 

如果要刷ROM或者补丁,直接在中间的选择框里选择,这里以SuperSU为例
rec4.png 

选中后,滑动底部的蓝色圆圈按钮,即可开始刷写。

2、Wipe(清除):
现在很多基于Aroma界面的ROM都自带清除选项了,如果你需要自己清除数据,可以进入这个选项。
rec5.png 

直接滑动底部,则清除Data、Cache、Dalvik Cache,不包括内置存储。
如果你想自己选择清除什么,点击Advanced Wipe
rec6.png 

选择你想要清除的项,然后滑动底部即可。

3、Backup(备份):
第三方Recovery很强大的一个功能就是对系统的完整备份,如果你想尝试一个ROM,却担心不喜欢,只需要先在Recovery里备份现有系统,之后如果不喜欢,随时恢复即可,数据全部保留,非常方便!

进入Backup后,如下图所示:
rec7.png 

一般备份选择默认的即可,即Boot、System、Data,然后滑动底部,等待备份完成即可。
如果你想备份官方系统,建议选择备份System Image(前提是在Mount里选择Mount System Only),这样不会破坏系统分区校验。而且System Image备份下来单个文件超过4G,因此如果备份到外置TF卡上,卡的格式必须为exFAT或者NTFS。

4、Restore(恢复):
rec8.png 

如果有备份,直接点击,然后滑动即可恢复。

四、S-OFF
如果你不满足于官解的权限,这时你需要S-OFF了。
不过,由于M9不再有system写保护,也就是说,官解后ROOT是完整的(M8如果只官解,ROOT不完整)。这样一来,S-OFF也并非必须。如果你要跨地区刷RUU、firmware,那还是得S-OFF的。
对于M9,现在S-OFF就两个办法,并且都不免费:
1、Sunshine S-OFF,具体看这个教程:Sunshine S-OFF 正式支持 HTC One M9 (附使用教程)
2、金卡硬解。此方法需要当面进行,无法远程,是通过一张类似于TF卡的金卡实现的。由于金卡很贵,所以不建议普通用户购买。你可以在当地找有金卡的人进行硬解,或者在淘宝找卖家硬解(需要邮寄手机,因此有风险,请谨慎选择)。

五、S-OFF后修改CID、MID
一般推荐S-OFF用户直接修改为超级CID。
手机进入download mode并连接电脑,
电脑端adb输入:
  1. fastboot oem writecid 11111111
复制代码
QQ截图20150419093923.png 

这时重启download mode,即可看到CID变为11111111。

当然,11111111也可以变为任何你想修改的CID,比如港版的HTC__622、台版的HTC__621、国行的HTCCN701等,注意CID为8位,港版、台版CID中间是两个下划线。

修改MID请看这里:http://bbs.gfan.com/android-8205791-1-1.html

六、刷RUU、Firmware
刷RUU和Firmware类似,所以这里一起讲。
至于为什么要刷固件,如果固件的版本和ROM版本不匹配,很有可能出现各种灵异问题,比如固件版本是1.32.xxx.x,ROM版本是1.40.xxx.x就会出现睡死问题。
首先,对于S-ON用户,你只能刷带官方签名的RUU和Firmware;对于S-OFF用户,你还可以刷破解、修改过的RUU和Firmware。
一般官方固件里包括官方Recovery和Boot,如果刷入,一是第三方Recovery会被替代,二是boot.img也被替代,这样可能会导致无法开机。因此论坛上会出现一些仅限S-OFF刷入的删除了recovery.img和boot.img的固件。
刷固件或RUU一般可以通过线刷或者卡刷,这里两个方法都讲一下。

线刷固件(Firmware)的步骤:
1、手机进入download mode,电脑端adb下输入
  1. fastboot oem rebootRUU
复制代码
此时,手机会进入黑底、白色HTC界面。

2、将固件或RUU放入adb文件夹,继续输入
  1. fastboot flash zip 固件或RUU文件名.zip
复制代码
比如,我刷入unsigned_firmware_1.40.401.5.zip固件,则执行fastboot flash zip unsigned_firmware_1.40.401.5.zip。

3、这时,手机出现进度条,开始刷入。
然而,这里会遇到一个问题,就是会提示FAILED 90: HBOOT PRE-UPDATE,这里不要惊慌,这是因为系统会先将aboot.img刷入,aboot就是手机的Bootloader。此时如下图所示:
1.png 
2015-6-8 15:21 上传
下载附件 (80.47 KB)

这种情况分两种,一种情况系统会自动重启,并自动回到黑底、白色HTC界面继续操作,然后直到执行完毕。
还有一种情况,系统会自动重启,然后开机。如果遇到这种情况,长按音量上+电源键强制重启,当屏幕熄灭后立即长按音量下进入download mode,然后重新执行第1、2步即可。(此时CMD是无法输入的,按一下Ctrl+C即可输入)
全部刷完后,如下图所示:
2.png 

4、当全部刷写完毕后,输入
  1. fastboot reboot-bootloader
复制代码
进入Bootloader后,建议进入download mode确认下是否成功刷入,也可以直接重启。

卡刷固件(Firmware)的步骤:
将固件或RUU改名为0PJAIMG.zip,这里需要注意一下,很多人Windows系统是设置的不显示后缀的,这种情况重命名时不要再加zip了,否则就变成0PJAIMG.zip.zip了。
将0PJAIMG.zip放到外置存储内。注意:外置存储必须格式化成FAT32格式,实测exFAT格式无法被download mode识别。
重启进入download mode,系统会自动检测,并提示刷入,只需要根据提示用音量键操作即可。

好了,至此,这两个方法都讲完了。
Enjoy yourself!

0 0