2015-08-26

Xperia Z1 f を root + Lollipop 化して、ついでにデータ通信専用 MVNO SIM 向きにカスタマイズした話。

少し前の投稿で、Xperia Z1/Z1 f (SO-01F/SO-02F) の Lollipop アップデートの署名活動について書いたりして、定期的に動きを観察してきたのですが、最近あまり動きが見られない。

たとえその思いが docomo に届いたとしても、アップデートされるかどうかは結局 docomo 次第で、期待薄。

でも、やっぱり Lollipop への想いは膨らむばかり。

キャリアアプリも、停止はしてるけど、「邪魔だな」と思い始め。

ただ、日本向け機能
  • おサイフケータイ (自分は使ったことないけど。ただ、NFC リーダとして Suica や PASMO の残高確認ができないのは少し困るけど……)
  • ワンセグ (たまに使ってた。無くても困らないけど。)
  • など (なんか他にもあった気もするけど、忘れるくらいなので、大したことじゃないかと。)
との別れは少し惜しいという思いも。

……とか言いながら、やっちゃったんですけどね(笑)



私の相棒 Xperia Z1 f のファームウェアのビルドは、14.3.B.0.346
2015年6月にリリースされたビルド。
ただ、docomo から見放されたので、これ以降のアップデートは降ってこないと思う。
なので、おそらく最終ビルド。

そして、今回の目標 (ゴール) は次の通り。
  • Lollipop 化
  • ついでに root 化
  • データ通信専用 MVNO SIM での運用のため、セルスタンバイ問題への対策
Lollipop 化は大前提。
root 化 (rooted) は、前々からやってみようと思ってたのと、セルスタンバイ問題を解決するため。
# セルスタンバイ問題とか、全くと言っていいほど気にせず使ってきたけど、なんとなくやってみたくなっただけ。やってみたけど、あんまり恩恵無い気がする。

root 化するので、端末の保証が効かなくなります。
ちゃんと戻せれば修理に出せないことはないと思うけど、修理に出して直すくらいなら、新しい端末を買ったほうがいいと思う、個人的には。

# 一言添えておくと、root 化しなくても Lollipop 化は可能です。Flashtool で、XperiFirm で拾った Z1 Compact のファームウェアを焼けばいいみたいです。今回はやらないけどね。


今回の大まかな流れ。
  • 14.3.B.0.346 から 14.3.B.0.288 にダウングレード
  • 14.3.B.0.288 で root 化
  • カスタムリカバリ (XZDualRecovery) の導入
  • PRFCreator で、rooted を維持したまま Lollipop 化できるイメージを作成
  • カスタムリカバリを使って、作成したイメージを焼き、アップグレード
  • Xposed を導入し、 AndroPlusMod をインストール (セルスタンバイ問題への対策)
  • 完成!

Xperia Z1 (SO-01F) でも同じようにできると思います。使用するファームウェアを Z1 のもの (C6903 あたりがいいのかな?) に置き換えれば同じ手順でいけるはずです。

初めてやったこともあり、細かいことまで調べるのに結構時間がかかりました(^-^;)
とは言っても、先人の知恵はネット上に大量に転がっており、大抵のことは調べれば解決できました。
本当に、先人の方々には足を向けて寝られません。



これ以降、私の取り組みの覚書となります。

真似をするのは勝手ですが、くれぐれも自己責任でよろしくお願いします。

助言くらいなら出来るかも知れませんが、それ以上のサポートはできませんので、あしからず。

また、しっかりとバックアップを取った上で試してください。



■ 14.3.B.0.288 へのダウングレード


ダウングレードする理由としては、root 化するため。
root 化するには、Android の脆弱性を突く必要があるのですが、その脆弱性があるビルドが 14.3.B.0.288 というわけ。

もう少し言うと、14.3.B.0.288 より古くてもいい。
1つ前になると 14.1.H.2.119、そのもう1つ前だと 14.1.H.1.281。
# 更に古くなると、初期ビルドの 14.1.H.0.542。まぁ、初期ビルドの復元用のデータを持ってる人なんてほとんどいないだろうけど、多分できるじゃない? 責任は取れないけど。
→ 14.1.H.2.119 から Lollipop 化をやったところ、rooted Lollipop を焼いた後、Soft Brick してしまいました…… Android 4.2.2 からの Android 5.0.x は無理があったようです。完全 Wipe してから焼けば上手くいくかもしれません。が、試していないので、自己責任で。

どのバージョンでもいいけど、Flashtool [1] で焼けば OK。 (最新の v0.9.19.0 だと、やり方が悪かったのか焼けなかったので、v0.9.18.6 を使用。)

因みに、Flashtool での書き込みは、端末に元々備わった機能でファームウェアを焼くだけなので、危険度は非常に低いです。
bootloader さえ生きていれば、この方法でいつでも復旧可能。 (今回の方法では、bootloader が Unlock になることはないので、おかしくなったらこのツールで戻せばいい。)

焼き方をざっくりと説明すると、
  1. Flashtool を起動
  2. 稲妻マークをクリック
  3. Flashmode を立ち上げる
  4. データをそのまま引き継ぐために、Wipe 内 APPSLOG と DATA のチェックは外す (動いたけど、「連絡先」周りがおかしくなったので、非推奨で。)
  5. Flash を押す
  6. Xperia Z1 f の電源を切る
  7. 30秒くらい放置する
  8. 音量ダウンボタンを押しながら、USB ケーブルを PC に繋ぐ
  9. 書き込み (焼き) が始まる
    てな感じ。


    書き込みには、ファームウェアが必要になる。
    少なくとも、正常な FTF ファイルを 1 つでも持っておくべき。 (復旧のため。作り方は適当にググって。)

    私は、以前ファームウェアのアップデートの際に、必要なファイルを確保しておいたので、それを使った。

    もし持っていないのであれば、"SO-02F_14.3.B.0.288_docomo.ftf" なんて名前で落ちてるんでそれを拾ってもいい。
    # まがい物だったとしても責任は取れませんが。

    そして、何らかの方法で入手した FTF 形式のファームウェアを、"C:\ユーザー\<ユーザー名>\.flashTool\firmwares" に配置すると、上の図のように配置したファームウェアが自動的に読み込まれる。


    また、XperiFirm [2] で入手できるファームウェア (build 14.4.A.0.108) で無理やり root 化している事例もある [3]。 (今回は説明しないけど。)

    結果として、root 化できるのであれば、何でもあり。


    # 参考
    1. Flashtool | Xperia device flashing
    2. [TOOL] XperiFirm ~ Xperia Firmware Downloader [v4.7.3] - XDA Forums
    3. Xperia Z1 f SO-02F 14.3.B.0.310 で、ムリヤリ root 取得 | in Low gear.



    ■ root 化


    root 化で使うのが、キューブキューブさんが作成した、「ワンクリックroot取得ツール」 [1]。

    Kernel の脆弱性「Towel」を使って root 化 (TowelRoot) する (というか、そういうことをしないと root 化できない) ので、ツールをダウンロード or 解凍すると、PC のウィルス対策ソフトが反応すると思いますので、一時的に無効化して、ツールを使ってください。 (当方、ESET Smart Security を使っていて、解凍時に、脅威「Android/Exploit.Towel.Fの亜種 トロイの木馬」が検出された旨が通知されました。)

    また、このツールは、端末を ADB (Android Debug Bridge) という、Google が提供している Android を PC から弄るためのツールを使い、端末の root 化を行います。
    そんなわけで、ADB 環境を用意する必要があるのですが、正当法は結構面倒なので、「15 seconds ADB Installer [2]」というツールを使って ADB 環境を構築します。

    ADB が用意できれば、あとはキューブキューブさんのページに書いてある通りにツールを実行するだけです。めっちゃ簡単です。

    処理後、アプリ一覧に「SuperSU [3]」があれば、正常に root 化されたと判断していいでしょう。


    # 参考
    1. 【Xperia】各機種ワンクリックroot取得【NX/acro HD/GX/SX ~ Z2/A2 等】
    2. [TOOL] [WINDOWS] ADB, Fastboot and Drivers -… | Android Development and Hacking | XDA Forums
    3. SuperSU - Google Play の Android アプリ



    ■ カスタムリカバリ XZDualRecovery の導入


    一般に、カスタムリカバリのためのアプリケーションとして、
    • ClockworkMod (CWM) [1]
    • Team Win Recovery Project (TWRP) [2]
    の2つが2大巨頭として存在しています。
    そして、CWM をタッチ操作できるなどのカスタマイズを施した「PhilZ Touch」というのがあります。

    で、その3つを一度に導入できちゃうのが「XZDualRecovery [3]」。

    「カスタムリカバリってのはわかったけど、とうしてカスタムリカバリなんて用意しなきゃいけないの」と思うかもしれません。
    その理由はこの後、ファームを書き込んでいく作業に必要だから。前項で書き込んだものはメーカーが作成したものだけが使える方法で、同じ方法ではカスタマイズしたファームウェアを焼くことかできないのです。だから、必要になります。

    また、XZDualRecovery のもう1つの効果として、「ric対策」があるよう。
    Xperia 固有のシステム監視機構 ric が、悪さをして、再起動を繰り返してしまう問題があるのですが、その問題を解決してくれるらしい。
    他の方法でも回避は可能らしいのですが、手軽さ的に XZDualRecovery での対策をオススメします。

    で、導入方法。
    今回使ったのは [4] のページに、次の階層で置かれている
    • XZDualRecovery
      • XZDualRecovery 2.8.21
        • Z1C-lockeddualrecovery2.8.21-RELEASE.installer.zip
    というファイル。頭の "Z1C" は Xperia Z1 Compact のことを示している。
    Z1 Compact は Z1 f のグローバル版なので、これを採用した。

    root 化込みの導入もできるよう (前項の代わりに、こっちを使っても行ける気がする) で、これまた、トロイ認定される。
    root 化しないので、対象のファイルが消されても恐らく導入は可能だと思ったが、正常動作しなくなって、導入に失敗されても困るので、先ほどと同じようにウィルス対策ソフトを一時的に無効化して、実行した。

    インストールの仕方は、先ほどのキューブキューブさんの root 化と限りなく同じ。
    端末をデバッグモードで PC に繋ぎ、解凍したフォルダ内のバッチファイルを実行し、「もう SuperSU で root 化してるよ」モード (1番) で実行してあげればおしまい。


    導入すると、自動的に再起動し、TWRP が立ち上がるので、
    1. 「Settings」から、Time Zone を日本時間 (UTC +9) に設定
    2. 「Backup」から、システムのバックアップ
      を一応、しておいたほうがいいかと。


      また、それぞれのカスタムリカバリの起動方法は、
      端末起動時、(正確には通知LEDが緑に光っている&バイブレーションが動いている時に)
      • 音量↑を押すと、「PhilZ Touch」
      • 音量↓を押すと、「TWRP
      が立ち上がります。もう1つの「CWM」は、同時に導入される「NDR Utils [6]」を使うことで起動できるよう。ほとんど使うことはないと思うけど。


      # 参考
      1. ClockworkMod
      2. TeamWin - TWRP
      3. [DEVDB][TWRP][PhilZ Touch][CWM] XZDualRecovery 2.8.21-RELEASE - XDA Forums
      4. -=- [NUT]'s XDADevelopers downloads -=-
      5. 【TWRP】Team Win Recovery Project(チームウィンリカバリプロジェクト:TWRP)の起動と操作・使用 | AndMem
      6. NDRUtils [root] - Google Play の Android アプリ



      ■ root 化を維持したままアップグレード可能なリカバリイメージの作成


      続いて、Xperia Z1 f を Lollipop 化するためのイメージを作成していきます。

      使うのは、「PRFCreator [1]」というツール。


      このツールでイメージを作成するために必要なファイルが次の3つ。
      • 焼きたい FTF ファイル
        今回は、Xperia Z1 f の海外モデル Xperia Z1 Compact (D5503)Customized UK / build 14.5.A.0.270 を XperiFirm でダウンロードし、Flashtool で FTF にしたものを使用。
      • SuperSU [2]
        root 化した時に必要なアプリ。とりあえず必要。使用したのは「UPDATE-SuperSU-v2.46.zip」。解凍する必要はない。
      • Recovery
        カスタムリカバリをセットアップするためのファイル。前項で取り上げた「XZDualRecovery」の flashable 版 (Z1C-lockeddualrecovery2.8.21-RELEASE.flashable.zip) を使用。SuperSU 同様に解凍は不要。

      また、このアプリケーションを使用する場合には、Java (JRE) [3] が必要になるので、適当に導入しておく必要あり。

      肝心のリカバリイメージの作成方法は、
      1. PRFCreator を起動
      2. 上に示した3つのファイルを指定
      3. 右上の「Include」で、少なくとも Kernel にチェックを入れる。 (全部入れても問題はなかったが、FOTAKernel や LTALabel は外していいかと。)
      4. (必要かわからないが、) Sign zip にチェック
      5. 右下の Create でリカバリイメージを生成
        というような流れ。何も難しいことはないはず。
        生成されたファイル flashable-prerooted-signed.zip は、端末の内蔵ストレージかSDカードに移動してあげてください。


        # 参考
        1. [TOOL] PRFCreator - easily create pre-rooted firmwares - XDA Forums
        2. SuperSU Download
        3. Windows版Javaのダウンロード



        ■ カスタムリカバリでイメージを焼く


        前項で作成した、イメージを焼いていきます。

        まず、端末の電源を切ります。

        「SONY」のロゴが出ているような状況のとき、通知 LED が緑/バイブレーションが動いたら、音量↓を連打してください。 (赤紫になれば OK です。)

        すると、TWRP が立ち上がると思います。

        続いて「Install」を選び、前項で作成した flashable-prerooted-signed.zip を選びます。

        その後、「Swipe to Confirm Flash」をスライドすると、書き込みが始まります。

        終わったら、リブートしてあげてください。 (「Wipe cache/dalvik」したほうがいいかも。)
        無事起動すれば、Lollipop 化成功です!
        起動しない場合には、恐らく Soft Brick してると思うので、下記トラブルシューティングを参考に、ファームウェアを焼いて、元に戻し、問題点を推測&修正し、やり直してみてください。



        ■ Xposed の導入


        最後に、Xposed [1] を導入し、セルスタンバイ対策をします。

        Xposed の導入手順は、
        1. Xposed の APK を使って、Xposed をインストール
        2. カスタムリカバリで、Xposed のフレームワークをインストール (リカバリイメージを焼いた時と同じようにやればいい。)
        というような流れ。

        投稿作成時点で、Lollipop 向けの Xposed は、アルファリリース状態。
        つまり、ベータにも達していない、かなり不完全なものとなっています。なので、自己責任で。
        この投稿で使用したファイルは、
        • XposedInstaller_3.0_alpha4.apk
        • xposed-v71-sdk21-arm.zip
        です。参考まで。

        その後、AndroPlusMod [2] という、Xperia 向けの Xposed モジュールをインストールします。
        この中に、セルスタンバイ対策が含まれているので、有効化するのを忘れずに。
        # AndroPlusMod は WedyMod-res の Android 5.0 Lollipop 対応版ということらしい。

        導入は、APK ファイルからインストールし、Xposed から有効化して、再起動してあげればおしまいです。 (ここでブートループに陥る可能性もあるみたいなので、一応覚悟してやってください。)
        # 今回は、org.androplus.wedymod_v3_45df6f.apk (AndroPlusMod v1.2) を使用しました。

        他にも、より細かな音量調節をするために「VolumeSteps+ [3]」というモジュールも導入してみました。私の環境では問題なく動作しています。

        # 参考
        1. [OFFICIAL] Xposed for Lollipop - XDA Forums
        2. AndroPlusMod | Xposed Module Repository
        3. VolumeSteps+ | Xposed Module Repository



        ■ トラブルシューティングなど

        Q. TWRP で焼いたら、電源ボタンを長押ししても、バイブレーションが動くだけで、起動しなくなった。
        A. 音量↓を押しながら、PC と接続し、Flashtool で適当なファームウェアを焼いてください。

        Q. 元に戻したい。
        A. Flashtool で適当なファームを焼いて、元に戻してあげてください。



        結果としては無事、Xperia Z1 f の root 化 + Lollipop 化 (Compact 化) + MVNO 向きカスタマイズに成功。
        数日間使っていますが、特に問題もなさそう。

        自己責任でお試しください。

        0 件のコメント :

        コメントを投稿