2018/05/25(金)Huawei nova liteにTWRPを入れてroot化
この記事は「Android 7.0/EMUI 5.0のNova lite(PRA-LX2)」用に書かれています。他のHUAWEIの端末でも似たような方法で大丈夫だと思いますが、Android 8.0(Oreo)は色々と違います。ご注意ください。
なお「nova lite」は日本国内での販売名で、海外では「P8 lite 2017」「Honor 8 Lite」という名称で売られています。また開発コード(?)の「PRAGUE」やチップセットを示す「Hi6250」も併記されることがあります。海外情報を探すときはこれらの名称で検索しましょう。
- HUAWEI IDの登録と解除コード取得
- UNLOCK操作(要PC)
- TWRPのインストール
- 領域のバックアップ
- root取得とDATA領域の暗号化解除
- カスタムROMの導入
- 文鎮からの復旧方法
- 起動方法メモ
- 参考リンク
- 関連リンク
この操作は最悪スマホが起動しなくなりますので必ず自己責任で。
HUAWEI IDの登録と解除コード取得
※2018年7月をもってHUAWEI公式のブートローダーアンロックサービスは終了しました。以下の方法はもう使えません。
- IDの登録 https://emui.huawei.com/ の右上から(要Email)
- https://emui.huawei.com/en/unlock_detail(もしくは上のページのUNLOCKのリンク)
- 「Since EMUI5.0」を選択
- 「Smartphone」を選択
- Product Serial Number(製造番号)は端末情報→端末の状態に。
- Product IMEIは端末情報に(上側で良さそう)
- product IDは端末から「*#*#1357946#*#*」に電話をかける。
- Verification Codeを入れて送信(Commit)
表示された解除コードをメモっておきましょう。
UNLOCK操作(要PC)
Android SDK Platform Toolsをパスの通ったところにインストールして、adbとfastbootコマンドを使えるようにしておきます。
またWindowsではGoogle USB ドライバを用意しておきます。
- 「設定」→「端末情報」→「ビルド番号」を連打→開発者モード有効化
- 「開発者向けオプション」のOEMロック解除を有効化
- 「設定」→「開発者向けオプション」→「USBデバッグ」を有効化
- 端末を接続後、adbコマンドから端末を認識しているか確認する。
- USBデバッグ用のドライバ(ADB Interface)が必要になるので、Google USB ドライバをインストールします。自動では見つからないので「ADB Interface」→「ADB Testing Interface」を直接指定してください。
- 端末を認識しているか確認します(きちんと認識していれば製造番号が表示されます)
C:\>adb device List of devices attached 6MU7N17300000101 unauthorized
- 「ボリュームの下側(-側)」を押しながら端末を再起動してbootloaderに移動します。
C:\>adb reboot bootloader
- fastbootコマンドを使用してbootloaderのロックを外します。最後の数字は解除コードです。
C:\>fastboot oem unlock 0421234567897012
- 警告画面が出てくるので、Yesを選んでください。
途中のbootloader画面で「FRP Locked」になっている場合、開発者オプションの「OEMロック解除有効」を忘れています(最終的にロック解除に成功すると、両方共unlockになります)。
再度FRP lockedになった場合
root状態からAndroid上でOEMロックを外すツールや、PCと接続してADBコマンドでOEMロックを外すツール等々がありますので、それを利用するのが無難です。
再度ロックをしてからOEMロック解除の再操作をする方法もありますが、この方法は一歩間違えると文鎮化させてしまう(2度と起動しなくなる)ため大変危険です。止めましょう(経験談)。
再ロックをかける前に「必ず boot.img と system.img と recovery.img をオリジナルに焼き戻し」、oem relock(以下)を実行してから再起動させます。
C:\>fastboot oem relock 0421234567897012
繰り返しになりますが、再ロックは本当に危険なので止めたほうがよいです。
TWRPのインストール
- このサイトから、prague311.img(TWRP)をダウンロードします。
- Hauwei novaシリーズ用のカスタムリカバリではうまく行きませんでした。
- TWRP 3.2.1-0 for Huawei P8 lite 2017 これなら動きそう?
- ボリーム下側を押しながら電源onでbootloaderを起動。
- リカバリを書き込み。
C:\>fastboot flash recovery twrp_huawei_hwcan_20170218.img target reported max download size of 471859200 bytes sending 'recovery' (34926 KB)... OKAY [ 0.874s] writing 'recovery'... OKAY [ 0.499s] finished. total time: 1.373s
- カスタムリカバリの起動。ボリュームの上下(+と-)を押しながら以下。
C:\>fastboot reboot recovery
- もしくは「ボリュームの上下(+と-)」と「電源」を同時押しで起動。
- TWRPが起動すれば成功です。
ちなみに、TWRPを起動してしばらく放置するとMTPデバイスとして認識するようです。データコピーが楽できます。
領域のバックアップ
バックアップを取る方法を解説します。Huaweiの公式ROM(Stock ROM)は簡単に手に入るので、自信のある方はdataとvendor領域以外のバックアップは省略しても構いません。*1
またdata領域をバックアップしておくことで、ロック解除後に書き戻すこともできるようになります。
TWRPのバックアップではdata領域のバックアップが取れないので、ddコマンドでバックアップを取ります。Androidシステムで予めexFATで初期化済の16GB以上*2のsdカードを挿入し、TWRPのターミナルを開きます。
まず各領域のパーティションを確認します。
# ls -l /dev/block/platform/hi_mci.0/by-name/
そして各領域をバックアップします。パーティション番号は異なると思うので必ず確認してください。
# cd /external_sd /external_sd # dd if=/dev/block/mmcblk0p28 of=boot.img /external_sd # dd if=/dev/block/mmcblk0p44 of=system.img /external_sd # dd if=/dev/block/mmcblk0p49 of=userdata.img /external_sd # dd if=/dev/block/mmcblk0p47 of=vendor.img
元に戻す時
起動しなくなるなどして元に戻す時は以下です。
# cd /external_sd /external_sd # dd if=boot.img of=/dev/block/mmcblk0p28 /external_sd # dd if=system.img of=/dev/block/mmcblk0p44 /external_sd # dd if=userdata.img of=/dev/block/mmcblk0p49 /external_sd # dd if=vendor.img of=/dev/block/mmcblk0p47
ofの先を間違えたりifとofを逆にしたりすると致命傷になります。SDカードを取り出して、PC等でバックアップをとっておくと良いでしょう。
手元の環境では、起動しなくなっても boot と system だけ戻せば復活していました。
root取得とDATA領域の暗号化解除
supersuは使えるものと使えないものがありますが、EMUI5.0対応のsupersuを用意します。ここでは以下を使用しました。
dm-verityというdata領域の暗号化も一緒に解除してくれるsuも置かれています。好きな方を選んでください。
- SuperSU-v2.82-EMUI5-SELPermissive SELinux Permissive
- SuperSUv2.82-EMUI5-noverity-Permissive.zip SELinux Permissive/dm-verity DISABLED
後者を使って話を進めます。
このzipファイルをダウンロードして、TWRP上からインストールすればよいのですが、このファイルをDATA領域(Androidシステムが起動した状態の/sdcard等)に置いても、暗号化のせいで読み込めません。
ですので、このファイルをSDカードに置いて読み込ませることにします。
- Androidシステムを起動し、ファイラー等を使って内蔵領域(DATA)の /MagazineUnlock をSDカードにバックアップします。
- リカバリーモードに入りTWRPを起動します。
- 「Wipe」→「Format DATA」してデータ領域をフォーマットする*3
- TWRP起動時にスライドさせ modifiy を有効にします。
- INSATALLから SuperSUxxxxxx.zip」をインストールします。
- 再起動します。
- 初回起動時にシステムの改変を行い自動再起動を行うようです。この間電源を切ってはいけません。
- しばらく待つとAndriodシステムが起動します。
DATAをフォーマットせずにAndroidシステムを起動すると暗号化が維持されます。Androidシステムを起動させることなく、フォーマットとzipインストールを両方同時に行う必要があるようです。
キーボードの設定
DATA領域をフォーマットするとキーボードがなくなり(音声入力のみになり)、WiFiの接続すらままならないので、適当なkeyboard.apkをSDに入れてインストールします。
DATA領域をもとに戻す
バックアップイメージを戻しても良いですが、公式リカバリを使ってファクトリーリセットをかける方が簡単かも知れません。
C:\>fastboot flash recovery recovery.img
あとは「Vol+」と「電源」でリカバリを起動するなり、普通に起動させてエラーにしてから自動ファクトリーリセットを行うなりします。*4
カスタムROMの導入
EMUIを使うなら以上で終わりなのですが、せっかくなのでカスタムROMを入れてみます。色々とnova lite用カスタムROMが転がっていますが、今回は「AOSP」ベースの「AOSPA」を入れることにしました。*5
カスタムROM導入前にbootloaderを起動してFRP unlockになっていることを確認してください。カスタムROM導入後にこのロックを解除するのは困難です。
TRWPを起動します。カスタムROM導入前にvendor.imgをバックアップしておきます。vendor.imgは「fastboot flash」では焼けないので必ずバックアップしておいてください。
# cd /external_sd /external_sd # dd if=/dev/block/mmcblk0p47 of=vendor.img
- Open GappsからARM64用のGoogle Appsをダウンロード。microあたりが良いと思います。
- カスタムROMとGappsのzipをSDカードに入れておきます。
- TWRPを起動します。
- Wipe→Advance Wipe。Data領域を選びファイルシステムを「EXT4」に変更してフォーマットします。
- 続けて「cache」「dalvik」「system」をWipeします。
- InstallからカスタムROMを導入(flash)します。
- このとき Add more Zips で、Google Appsも選択しておきます(後でflashしてもよい)
- 再起動します。
文鎮からの復旧方法
bootとsystemを改変したまま、うっかりoem relockしてしまい文鎮化させてしまいました……。FRP Unlockならば再度ロックを外すだけですが、FRP Lockedの状態で、oem relockすると高確率で文鎮になります……。
起動方法メモ
モード | 操作(USB接続) | 操作(USBなし) |
---|---|---|
Fastboot | vol- | 通常起動 |
eRecovery | vol+ | vol+/vol- |
Recovery | vol+/vol- | vol+ |
eRecovery(recovery2)にTWRPを導入した方が運用が楽な気がします。