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の登録と解除コード取得

※2018年7月をもってHUAWEI公式のブートローダーアンロックサービスは終了しました。以下の方法はもう使えません。

  1. IDの登録 https://emui.huawei.com/ の右上から(要Email)
  2. https://emui.huawei.com/en/unlock_detail(もしくは上のページのUNLOCKのリンク)
    • 「Since EMUI5.0」を選択
    • 「Smartphone」を選択
    • Product Serial Number(製造番号)は端末情報→端末の状態に。
    • Product IMEIは端末情報に(上側で良さそう)
    • product IDは端末から「*#*#1357946#*#*」に電話をかける。
  3. Verification Codeを入れて送信(Commit)

表示された解除コードをメモっておきましょう。

UNLOCK操作(要PC)

Android SDK Platform Toolsをパスの通ったところにインストールして、adbとfastbootコマンドを使えるようにしておきます。

またWindowsではGoogle USB ドライバを用意しておきます。

  1. 「設定」→「端末情報」→「ビルド番号」を連打→開発者モード有効化
  2. 「開発者向けオプション」のOEMロック解除を有効化
  3. 「設定」→「開発者向けオプション」→「USBデバッグ」を有効化
  4. 端末を接続後、adbコマンドから端末を認識しているか確認する。
  5. USBデバッグ用のドライバ(ADB Interface)が必要になるので、Google USB ドライバをインストールします。自動では見つからないので「ADB Interface」→「ADB Testing Interface」を直接指定してください。
  6. 端末を認識しているか確認します(きちんと認識していれば製造番号が表示されます)
    C:\>adb device
    List of devices attached
    6MU7N17300000101        unauthorized
    
  7. 「ボリュームの下側(-側)」を押しながら端末を再起動してbootloaderに移動します。
    nova_lite_bootloader.png

    C:\>adb reboot bootloader
    
  8. fastbootコマンドを使用してbootloaderのロックを外します。最後の数字は解除コードです。
    C:\>fastboot oem unlock 0421234567897012
    
  9. 警告画面が出てくるので、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のインストール

  1. このサイトから、prague311.img(TWRP)をダウンロードします。
  2. ボリーム下側を押しながら電源onでbootloaderを起動。
  3. リカバリを書き込み。
    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
    
  4. カスタムリカバリの起動。ボリュームの上下(+と-)を押しながら以下。
    C:\>fastboot reboot recovery
    
    • もしくは「ボリュームの上下(+と-)」と「電源」を同時押しで起動。
  5. 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 だけ戻せば復活していました。

*1 : ただし「fastboot oem get-build-number」で得られるビルド番号まで含めて完全に一致する公式ROMのデータが必要です。不安な場合は boot/system のバックアップも必ず取っておいてください。

*2 : nova liteの場合。端末の容量により変わります。

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カードに置いて読み込ませることにします。

  1. Androidシステムを起動し、ファイラー等を使って内蔵領域(DATA)の /MagazineUnlock をSDカードにバックアップします。
  2. リカバリーモードに入りTWRPを起動します。
  3. 「Wipe」→「Format DATA」してデータ領域をフォーマットする*3
  4. TWRP起動時にスライドさせ modifiy を有効にします。
  5. INSATALLから SuperSUxxxxxx.zip」をインストールします。
  6. 再起動します。
    • 初回起動時にシステムの改変を行い自動再起動を行うようです。この間電源を切ってはいけません。
  7. しばらく待つとAndriodシステムが起動します。

DATAをフォーマットせずにAndroidシステムを起動すると暗号化が維持されます。Androidシステムを起動させることなく、フォーマットとzipインストールを両方同時に行う必要があるようです。

キーボードの設定

DATA領域をフォーマットするとキーボードがなくなり(音声入力のみになり)、WiFiの接続すらままならないので、適当なkeyboard.apkをSDに入れてインストールします。

DATA領域をもとに戻す

バックアップイメージを戻しても良いですが、公式リカバリを使ってファクトリーリセットをかける方が簡単かも知れません。

C:\>fastboot flash recovery recovery.img

あとは「Vol+」と「電源」でリカバリを起動するなり、普通に起動させてエラーにしてから自動ファクトリーリセットを行うなりします。*4

*3 : noverityバイナリで暗号化解除しなければ不要

*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
  1. Open GappsからARM64用のGoogle Appsをダウンロード。microあたりが良いと思います。
  2. カスタムROMとGappsのzipをSDカードに入れておきます。
  3. TWRPを起動します。
  4. Wipe→Advance Wipe。Data領域を選びファイルシステムを「EXT4」に変更してフォーマットします。
  5. 続けて「cache」「dalvik」「system」をWipeします。
  6. InstallからカスタムROMを導入(flash)します。
    • このとき Add more Zips で、Google Appsも選択しておきます(後でflashしてもよい)
  7. 再起動します。

*5 : EMUIベース以外のカスタムROMはディアルSIMが動作しないようです。ご注意ください。

文鎮からの復旧方法

bootとsystemを改変したまま、うっかりoem relockしてしまい文鎮化させてしまいました……。FRP Unlockならば再度ロックを外すだけですが、FRP Lockedの状態で、oem relockすると高確率で文鎮になります……。

詳しくは別記事にまとめました。

起動方法メモ

モード操作(USB接続)操作(USBなし)
Fastbootvol-通常起動
eRecoveryvol+vol+/vol-
Recoveryvol+/vol-vol+

eRecovery(recovery2)にTWRPを導入した方が運用が楽な気がします。

関連リンク