前回紹介した通り、私の Nexus 5X が起動しなくなりました。これを解消し動くようにできたので紹介します。ソフト的に壊れている場合は、この方法では直りません。同じように、H/W故障が原因でブートループに入った方は、この方法で復活できると思います。ただし、メーカーやキャリアの補償の対象外となりますので、無償修理期限が残っている方には、この方法はお勧めしません。
なお、この方法で修正した Nexus 5X は、ひと手間必要ではありますが、純正のファームウェアが利用できるので、OSのアップデートなどがあった場合も、利用できるので私的には満足しています。OSアップデートに関しては、別の記事で紹介します。
参考(引用):
https://www.xda-developers.com/nexus-5x-bootloop-fix-boot-phone/
https://forum.xda-developers.com/nexus-5x/general/tool-bootloop-death-blod-workaround-t3819497
本作業での復旧の仕組み
Nexus 5X で採用されているSnapdragon 808というCPUですが、6コア :”ARM Cortex-A57×2コア” と”ARM Cortex-A53×4コア” で構成されています。このうちCortex-A57の何らかの破損が、ブートループに関係していて、起動時にこのA57のコアだけ無効に設定することで、起動させるというアプローチです。
そのため、この方法で起動した Nexus 5X は、若干パフォーマンスが落ちます。ブラウジングや軽いゲームの用途であれば、問題なく使えます。
起動しない Nexus 5x の復旧方法
復旧には、以下の手順が必要です。
- ブートローダのアンロック
- TWRP(カスタムリカバリー)の書き込み
- 4コア動作パッチ適用
それぞれの手順を、以下で詳しく説明していきます。
ブートローダのアンロック
ブートローダのアンロックするには、Android が起動している必要があります。起動しないので、いきなり「え?」ダメじゃんって感じですが、実は、Nexus 5Xには、高温時に6コアを4コア(A53のみ)で動作させるセーフモードがあります。これを利用することで高温時は普通に起動させることができます。ブートループに陥った場合でもたまに起動したりする理由はここにあるのでしょう。
具体的には、充電すると電源が入る端末は、充電したままブートループを放置します。5~20分ほどで指紋センサーあたりが熱くなり、懐かしのAndroid画面が起動すると思います。充電放置で暖かく(熱く)ならない端末はドライヤーなどで温めてください。表面だけではなく、基盤内部の温度温度が高くなる必要があります。
Androidが起動したら、「設定」>「システム」>「開発者向けオプション」>「OEMロック解除」をタップします。(※「開発者向けオプション」の出し方は、他のサイトで検索してください。)
OEMロック解除をONにしたら、Nexus5Xの電源を落とした後に、「ボリュームダウンボタン」と「電源ボタン」を同時に長押ししてブートローダーを起動し、PCとUSBケーブルでつなぎ、以下のコマンドを実行します。
1 | fastboot oem unlock |
携帯に以下の画面が出てきたら成功です。出てこない場合は、fastbootへのパスが通っていない可能性もしくは、PC に Andoroid スマホを認識させるための USBドライバ(Google USB Driver)が入っていない可能性があります。(2019/08/20 コメントをいただきましたので加筆修正)
Google USB Driver のインストールは公式の以下が参考になります。
https://developer.android.com/studio/run/oem-usb?hl=ja
Google USB Driver のダウンロードは以下からできると思います。
https://developer.android.com/studio/run/win-usb.html?hl=ja
Android SDK/adbツール類が正しくインストールされていることを確認してください。(※Android SDK/adbツール類のインストールの仕方は、以下で紹介しています。参考にしてください。)
以下の画面が無事に出たら、ボリュームボタンのUpでYes側を選択し、Powerボタンで決定します。(※これでメーカ&キャリア補償がなくなります。)
TWRPの書き込み
アンロックが完了したら、一度端末を再起動します。(これにより、ユーザデータの初期化等が行われるようです)。その後、4コアで動作するTWRP(リカバリー)を書き込みます。まず、以下からTWRPをダウンロードしてください。アンケートに答えるか、スキップすると、「Download File」ボタンが出てきます。
twrp-3.2.1-0-fbe-4core-bullhead.img
basketbuild.com が停止していてファイルが落とせないことがあるようです。その場合は、冒頭で紹介しているフォーラムの Attached Files のところにある
twrp-3.2.1-0-fbe-4core-bullhead.img – [Click for QR Code] からダウンロードしてみてください。(ブラウザのセキュリティーレベルによっては落とせないかもしれません。)念のため、こちらで動作確認できているファイルのハッシュ値(SHA-256)もはっておきます。
228F834A0ABC3B52A000596691E06EF8FC1F8A28C83E94C3372405A299DB595E
ダウンロードが完了したら、以下のコマンドで書き込みを行います。上記TWRPをダウンロードしたパスで行ってください。(端末は、先ほどunlockしたブートローダが起動している状態です。)
1 | fastboot flash recovery twrp-3.2.1-0-fbe-4core-bullhead.img |
Finished. total time~と出力されれば、TWRPの書き込みが成功していると思います。ブートローダの画面で、「ボリューム Up/Down」ボタンで「recovery mode」を選択し、「電源」ボタンを押して、TWRPを起動してください。以上で、リカバリーは4コア動作するTWRPに書き込めました。
TWRP起動時にパスワードを求められたら
ブートローダのアンロック後、TWRPを書き込む前に端末を再起動しなかった場合は、TWRP起動時にパスワードを聞かれると思います。「覚えのあるパスワード」または、「default_password」を入力しても、「Password Failed, Please Try Again」でうまくいかない場合は、ユーザデータの初期化が必要です。
参考:
https://forum.xda-developers.com/nexus-6/help/twrp-password-t2987936
パスワード入力画面をキャンセルで進み、wipeから、Factory Reset と Format Data を実行します。Factory Reset は 右にswipeで実行、Format Dataは「yes」と打ち込み実行します。
4コア動作パッチ適用
続いて通常のAndroidを4コアで起動するためのパッチをインストールします。パッチは以下から、ダウンロードします。
N5X-6P_BLOD_Workaround_Injector_Addon-AK2-signed.zip
ダウンロードが完了したら、TWRPが起動している状態で、以下のコマンドを打ってファイルを端末に送ります。上記パッチをダウンロードしたパスで行ってください。
1 | adb push N5X-6P_BLOD_Workaround_Injector_Addon-AK2-signed.zip /sdcard/ |
端末への送信がすんだら、TWRPでパッチのinstallを行います。
インストールが終わったら、「Reboot System」で再起動すればAndroidが立ち上がると思います。
以下の google の公式にも紹介されていますが、自分でソフトウェアを変更したため出てくるもので、利用には問題はありません。
https://g.co/ABH
最後に
グローバルモデル(製品)の良さが生きたDIYになったかと思います。国内メーカの製品だったら、これだけの情報は集まらなかったと思いますす。4コア化のアイディアや気づき、それを実現するためのパッチの作成など、海外勢の考えることには驚きです。
技術的な話ではありませんが、今回記事を書くための画像はスクリーンショットではなく、写真で撮らざるを得なかったため、画面がきれいに撮れなかったのが残念です。スマホの画面をうまくとるコツはあるのでしょうか。