読者です 読者をやめる 読者になる 読者になる

手元の HTC One (M7_UL) を完全に Google Play Edition にする

Android ハードウェア

f:id:espresso3389:20141126001024j:plain

今更なんですが、手元の HTC One (M7_UL) を Google Play Edition にしてみようと思いました。
というのも、そろそろ、 Android 5.0 (Lollipop) の OTA が来るらしいので、今、GPEにしておけば、直ぐにアップデートできるんじゃなかろうかという思惑もあるからです。

何か、既に Google からストップがかかっているらしく、少し遅れているらしいですけど・・・。

基本的には、下記の記事に従っています:

とりあえず、ここでは、 Android SDK とか adb については説明しません。適当にインストールしてパスが通っていることが前提です。

S-OFF する

完全に Google Play Edition のふりをするためにはいろいろと弄らないといけないんですが、これには S-OFF (Security Offかな?)しないといけません。

adb が繋がっていれば(そして繋がっている Android デバイスが1台だけならば: 誤爆とか防ぐためにも作業対象の Android 端末以外は全部、外しておくべきです)、

C:\work>adb reboot-bootloader

とやれば、 HTC One がブートローダーモードで起動します。ここで、ボリュームキーで、 FASTBOOT を選択して、電源ボタンでモード変更します。

で、ここで、 fastboot というコマンドが使えるようになるはずです。
試しに、次の様に打ってみましょう:

C:\work>fastboot getvar modelid
modelid: PN0710000
finished. total time: 0.004s

なんですが、 Windows 8/8.1 だと反応がない状態になると思います。そういう人は、

を参考にして頑張ってください。

あとは、 revone とか moonshine とか rumrunner とかをダウンロードしてきて、実行すれば、ほぼ自動でS-OFFできますので頑張ってください。


modelid を書き換える

さて、既に最初の記事の内容を無視しますが、ここで提供されている ROM (RUU-HTC_One_GE-2.14.1700.15.zip っていうファイル)が PN0712000 という modelid を前提にしています。
僕の持っている M7_UL だと、PN0710000 なので、最初に modelid を PN0712000 に書き換えないといけません。これには次の記事を参考にします。


PL83IMG.zip をダウンロードする

最初に下記のファイルをダウンロードします。
このファイルは、 modelid を書き換えるための一時的なROMとなります。


PL83IMG.zip を展開して、 android-info.txt を書き換える

PL83IMG.zip を展開すると、中に、android-info.txt というテキストファイルがあるのですが、コレの中の、 modelid, cidnum, mainver を現在の環境に合わせて修正します。

これら(modelid, cidnum, mainver)の値は、それぞれ、 fastboot getvar で取得します:

C:\work>fastboot getvar modelid
modelid: PN0710000
finished. total time: 0.004s
C:\work>fastboot oem readcid
...
(bootloader) cid: HTC__001
OKAY [  0.013s]
finished. total time: 0.013s
C:\work> fastboot getvar mainver
mainver: 2.24.401.8
finished. total time: 0.003s

僕の場合は、 modelid=PN0710000, cidnum=HTC__001, mainver=2.24.401.8 でした。
なので、 android-info.txt を

modelid: PN0710000
cidnum: HTC__001
mainver: 2.24.401.8
btype:1
aareport:1
hbootpreupdate:12

のように書き換えます(改行コードはLFであることに注意)。そして、そのまま、android-info.txt, HBOOT.nb0 を圧縮して、ZIPを作り直します。ここでは、 PN0710000.zip という名前にしました(zipの名前は何でも良い)。

rebootRUU

ROM 書き換えモードに切り替えます。

C:\work>fastboot oem rebootRUU
...
(bootloader) Start Verify: 0
OKAY [  0.047s]
finished. total time: 0.049s

切り替えが終わると、 HTC のロゴの画面になります。

f:id:espresso3389:20141125222450j:plain

ROM 書き換え

さっき作ったファイルで ROM を書き換えます:

C:\work>fastboot flash zip PN0710000.zip
sending 'zip' (475 KB)...
OKAY [  0.246s]
writing 'zip'...
(bootloader) zip header checking...
(bootloader) zip info parsing...
(bootloader) checking model ID...
(bootloader) checking custom ID...
(bootloader) start image[hboot] unzipping & flushing...
(bootloader) [RUU]UZ,hboot,0
(bootloader) [RUU]UZ,hboot,43
(bootloader) [RUU]UZ,hboot,99
(bootloader) [RUU]UZ,hboot,100
(bootloader) [RUU]WP,hboot,0
(bootloader) [RUU]WP,hboot,100
(bootloader) ...... Successful
OKAY [  2.227s]
finished. total time: 2.477s

一度リブート

書き込んだ ROM を有効にするために、一度、再起動します。

C:\work>fastboot reboot-bootloader
rebooting into bootloader...
OKAY [  0.036s]
finished. total time: 0.038s

再起動後の画面がバグってないっていうと嘘ってぐらい恐ろしいことになるけど、気にしなくて良いです。

f:id:espresso3389:20141125224054j:plain

modelid の書き換え

恐ろしい画面のままでも、 fastboot は使えるはずなので、
ここで、 modelid を書き換えます。

C:\work>fastboot oem writemid PN0712000
...
(bootloader) Start Verify: 0
OKAY [  0.079s]
finished. total time: 0.080s

念のためにチェック:

C:\work>fastboot getvar modelid
modelid: PN0712000
finished. total time: 0.004s

マジで modelid が書き換わってる。

cid の書き換え

同じように cid も書き換えます。

C:\work>fastboot oem writecid GOOGL001
...
(bootloader) Start Verify: 0
OKAY [  0.018s]
finished. total time: 0.019s

こっちも念のためにチェック:

C:\work>fastboot getvar cid
cid: GOOGL001
finished. total time: 0.004s

Google Play Edition の ROM を焼く

これでやっと書き換えたい先の ROM に書き換えられます。
Google Play Edition事態の ROM は下記からダウンロードできます:

https://mega.co.nz/#!3cwxzAoR!cNNlvVTqzO1wTnmZLytV2mIHtrtOOFXGMyMQjH-KsIo

でこれを fastboot flash zip で書き込みます:

C:\work>fastboot flash zip RUU-HTC_One_GE-2.14.1700.15.zip
sending 'zip' (467625 KB)...
OKAY [ 17.247s]
writing 'zip'...
(bootloader) zip header checking...
(bootloader) zip info parsing...
(bootloader) checking model ID...
(bootloader) start image[hboot] unzipping for pre-update check...
(bootloader) start image[hboot] flushing...
(bootloader) ...... Successful
FAILED (remote: hboot pre-update! please flush image again immediately)
finished. total time: 18.321s

ここですかさず、もう一度、同じコマンドを実行!

C:\work>fastboot flash zip RUU-HTC_One_GE-2.14.1700.15.zip
target reported max download size of 1526722560 bytes
sending 'zip' (467625 KB)...
OKAY [ 19.929s]
writing 'zip'...
(bootloader) zip header checking...
(bootloader) zip info parsing...
(bootloader) checking model ID...
(bootloader) checking custom ID...
(bootloader) start image[adsp] unzipping & flushing...
.....<省略>....
(bootloader) [RUU]WP,radio,100
(bootloader) ...... Successful
OKAY [181.350s]
finished. total time: 201.282s

あとは、デバイス側にブートローダーの画面が出てくるので、 REBOOT を選んで再起動すればうまく行くんじゃないでしょうか。

f:id:espresso3389:20141125224941j:plain

おしまい!あとは、何度もOTAで降ってくるアップデートをこなすだけの簡単な作業です。

2度目のコマンド入力が間に合わないと・・・・

画面が真っ暗になって・・・・何にも反応がなくなります・・・・・うきゃー
じゃなくて、とりあえず、電源とボリューム下長押しで再起動させます。

そうすると、 HBOOT の画面が表示されますので、ここで、 実機の画面で、FASTBOOT を選択して、 fastboot モードに切り替えます。

そうして、もう一度、ROM 書き換えモードに切り替えます。

C:\work>fastboot oem rebootRUU
...
(bootloader) Start Verify: 0
OKAY [  0.047s]
finished. total time: 0.049s

今度こそって気持ちで、 ROM のアップデート:

C:\work>fastboot flash zip RUU-HTC_One_GE-2.14.1700.15.zip

でどうにかなります。テレビとか見ながらやってるとビックリすることになります(自分)。