Xperia XZs の ROM 焼き

mobile

今回は Xperia の ROM 焼きです。たまにしかやらないのですぐに忘れてしまうため、今回はしっかりまとめておきたいと思います。

一応念のためではありますが、やる場合は自己責任でお願いいたします。

そもそも ROM 焼きとは

公式な用語なのかどうかわかりませんが、スマートフォンに対してファームウェアイメージ(ROM)を書き込むことです。ROM は公式・非公式問いません。

何がうれしいの?

個人的に、プライベートのスマートフォンは2年に1度買い替えることにしています。だいたい、以下の理由からです。

  • スマホは既に生活インフラであり、常に良いものを使っているべき(そのために2年に1回、5~10万の支出は決して高くない)
  • 数年経つとサポート対象外となり、セキュリティ上の懸念が出てくる。
  • 一応技術屋でもあるので、ある程度最新の機能に触れておきたい。

以前はそもそも遅くて使い物にならない→最新機種に変えたい、という理由もありましたが、最近はパフォーマンスに関しては全然気にならなくなりました。

最新ゲームでもやらない限り、2年前のものであっても(パフォーマンス観点では)全然現役です。

しかしサポートは切れるので、セキュリティ上の懸念は拭えません。

Xperia X(SO-04H) の最新版。セキュリティパッチは 2018年6月と古い。

そこで活きてくるのが ROM 焼きです。

公式のファームウェア以外の ROM を焼くことで、〇コモ様がリリースしてくれない最新バージョンの Android OS に更新することができます。

もちろん最新のセキュリティパッチが適用されているので安心して使えます。

環境

今回の対象は Xperia XZs Dual (G8232) です。Snapdragon 820, RAM 4GB, Storage 64GB とスペック上はまだまだ現役ですが、ソニー公式イメージでは Android 8.0 までとなっています。

OS は Windows 10 を使用します。

ROM 焼きの方式

ROM 焼きの方式・・・というか方針ですが、ベンダー(スマートフォンのメーカー)公式 ROM を焼くか、非公式 ROM を焼くか、によって大きく2つに分けられます。

公式 ROM を焼く場合、ベンダーごとに何らかのツールがリリースされていることが多い(はず)です。Xperia の場合は Flashtool がそれにあたります。

Flashtool - Xperia device flashing
Flashtool - Software to flash sony phones (S1 protocol).

かなり便利&楽なので、公式 ROM を焼くのであれば Flashtool を使いましょう。

ただ、G8232 はグローバル版であり、そもそも日本の意味不明なキャリア制限はないため何もしなくても通常のファームウェアアップデートでソニー公式の最新イメージを適用できます。

最近は少なくなってきましたが、以前はハードウェア的にはほぼ同じ機種であっても、グローバル版はアップデートされて、日本版のみアップデートされない、ということがよくありました。

この場合、グローバル版の公式 ROM を焼くことで、より新しいバージョンの OS を利用することができます。

Flashtool による ROM 焼きは基本的に公式 ROM が対象のため、Android 9 などの非公式 ROM を焼きたい場合には使えません。

非公式 ROM を焼く場合は、bootloader のロックを外し、fastboot コマンドで ROM イメージを焼きこむ、という方式を採ることになります。

ROM 焼き手順

SDK Platform-Tools のインストール

公式サイトからサクッとダウンロードしましょう。簡単なのでここは省略します。

SDK Platform-Tools リリースノート  |  Android デベロッパー  |  Android Developers
Android SDK Platform-Tools は Android SDK のコンポーネントです。

Fastboot ドライバのインストール

非公式 ROM を焼くためには、Windows とスマホを Fastboot モードで接続できるようにする必要があります。そのために、まずは Windows10 環境に Fastboot ドライバをインストールします。

わりとめんどくさいのですが、すでに先人のみなさまがわかりやすくまとめてくださっているので、そちらをご覧ください。

Bootloader アンロック

続いて bootloader をアンロックします。bootloader というのは、スマホの電源を ON した時に動作するソフトウェアで、OS(今回の場合は Android)を起動する役割を担います。

ただし、OS なら何でも起動できて良いのかというと、そういうわけにもいきません。なんでもかんでも起動できてしまうと、ベンダーが想定していない不具合が発生する可能性があるからです。

そこでベンダーは、自分たちが動作保証した OS しか起動できないように、bootloader にロックをかけます。このロックを外すのが、bootloader のアンロックです。

bootloader をアンロックすると、ベンダーの保証を受けられなくなりますのでご注意ください。

なお、国内版はそもそもアンロックさせてくれませんできません。

アンロック用コードの生成

アンロックするためには、以下のサイトでアンロック用のコードを入手する必要があります。

Unlock Bootloader - Open Devices - Sony Developer World

ページ下部のドロップダウンリストで「Xperia XZs」を選びます。

IMEI を入力し、チェックボックスにチェックを入れて Submit ボタンをクリックすると、アンロック用のコードが生成されます。

アンロックの実行

アンロックの方法は、公式サイトにシンプルにまとめられています(英語ですがわかりやすい)。

How to unlock bootloader - Open Devices - Sony Developer World

まず、Xperia を Fastboot モードで起動します。

いったん電源を切り、ボリュームボタンの+を押しながら、USB ケーブルで Windows PC と接続します。LED が青く光ったら、Fastboot モードで起動しています。

念のため、fastboot devices コマンドで正しく接続されているかどうかを確認します。以下のように何か反応があれば問題ありません。正しく接続されていない場合は、何も表示されません。

C:\>fastboot.exe devices
XXXXXXXXXX      fastboot

つづいていよいよ bootloader をアンロックします。といっても1秒でアッサリ終わりますが・・・

C:\>fastboot oem unlock 0xXXXXXXXXXXXXXXXX
                                                   OKAY [  1.173s]
Finished. Total time: 1.176s

0x に続いて、先ほど生成されたアンロック用コードを入力します。くどいようですが、これを実行すると保証が受けられなくなるのでご注意ください。

ROM を選ぶ

ここまできたら後は好きな ROM を焼くだけです。焼き方は ROM によって異なるので、詳しくは配布元のドキュメントをご参照ください。今回は Android 10 にしたかったということもあり、以下を試させていだきます(感謝)。

[10.0] Project Treble for Xperia XZs [2020.03.18]
Project Treble 10.0 For XZs Based on Sony Open Devices I am not responsible for bricked devices, dead SD cards. Special Thanks: local__hero 请中文用户遵守XDA规则,使用双...

ただ、G8232 (Dual SIM)に対応したものは少し探した限りではなさそうでした。Dual で使いたい場合はこちらが良さそうです。

[ROM][G8231][G8232] AOSP 9.0 Pie for Xperia XZs
I made this custom ROM project based from Sony Xperia AOSP project. Despite Sony will never release a Pie update for Xperia XZs, Sony still provides some stuffs...

(一応こちらも試して、SIM1 と SIM2 が使える(通話&データ通信)ことは確認しましたが、表示が逆になっているところがあるような・・・)

GSI (Generic System Image) は Official Android 10 の AOSP のものを使用させていただきます(今回は AOSP 10.0 v217 の system-quack-arm64-ab-gapps.img.xz を使用。この「Official」は、AOSP(Android Open Source Project)の公式という意味であって、ソニー公式ということではないので注意)。

他にもあるのでいろいろ試したい方は GitHub のリストをご参照ください。

phhusson/treble_experimentations
Notes about tinkering with Android Project Treble. Contribute to phhusson/treble_experimentations development by creating an account on GitHub.

xz 形式のアーカイブなので、ダウンロードして 7Zip などで展開しておきます。

圧縮・解凍ソフト 7-Zip
圧縮・解凍ソフト7-Zipは、7z、ZIP、RAR、LZH、ISO、TAR、DMG、MSIなど、さまざまなデータフォーマットに1つで対応している世界的にデファクトのフリーソフトウェアです。AES256による暗号化(パスワード圧縮および解凍)も可能なおすすめのソフトです。

焼きこむ

再び Xperia を Fastboot モードで接続し、順に焼いていきます。

C:\>fastboot -w
Erasing 'userdata'                                 OKAY [  1.509s]
mke2fs 1.45.4 (23-Sep-2019)
Creating filesystem with 13089792 4k blocks and 3276800 inodes
Filesystem UUID: 9ef5857a-a246-11ea-a958-8b78f556210c
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424

Allocating group tables: done
Writing inode tables: done
Creating journal (65536 blocks): done
Writing superblocks and filesystem accounting information: done

Sending 'userdata' (312 KB)                        OKAY [  0.037s]
Writing 'userdata'                                 OKAY [  0.041s]
Erasing 'cache'                                    OKAY [  0.030s]
mke2fs 1.45.4 (23-Sep-2019)
Creating filesystem with 65536 4k blocks and 65536 inodes
Filesystem UUID: 9f25e210-a246-11ea-bf31-31bf06b5954e
Superblock backups stored on blocks:
        32768

Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

Sending 'cache' (56 KB)                            OKAY [  0.027s]
Writing 'cache'                                    OKAY [  0.027s]
Finished. Total time: 2.011s
C:\>fastboot flash oem vendor.img
Sending 'oem' (248608 KB)                          OKAY [  5.968s]
Writing 'oem'                                      OKAY [  1.851s]
Finished. Total time: 7.974s
C:\>fastboot flash boot boot.img
Sending 'boot' (12368 KB)                          OKAY [  0.317s]
Writing 'boot'                                     OKAY [  0.111s]
Finished. Total time: 0.473s
C:\>fastboot flash system system-quack-arm64-ab-gapps.img
Sending sparse 'system' 1/8 (262140 KB)            OKAY [  6.473s]
Writing 'system'                                   OKAY [  1.934s]
Sending sparse 'system' 2/8 (262140 KB)            OKAY [  6.466s]
Writing 'system'                                   OKAY [  1.942s]
Sending sparse 'system' 3/8 (262140 KB)            OKAY [  6.467s]
Writing 'system'                                   OKAY [  2.015s]
Sending sparse 'system' 4/8 (262140 KB)            OKAY [  6.465s]
Writing 'system'                                   OKAY [  1.985s]
Sending sparse 'system' 5/8 (262140 KB)            OKAY [  6.484s]
Writing 'system'                                   OKAY [  2.027s]
Sending sparse 'system' 6/8 (262140 KB)            OKAY [  6.454s]
Writing 'system'                                   OKAY [  1.939s]
Sending sparse 'system' 7/8 (262140 KB)            OKAY [  6.450s]
Writing 'system'                                   OKAY [  2.084s]
Sending sparse 'system' 8/8 (247884 KB)            OKAY [  6.107s]
Writing 'system'                                   OKAY [  2.168s]
Finished. Total time: 72.593s

最後に再起動します。

C:\>fastboot reboot
Rebooting                                          OKAY [  0.008s]
Finished. Total time: 0.009s

再起動するとなんか怖そうなメッセージが出ますが、要は「もう保証しないよ」ということです。やっちまったものは仕方ないので気にせず先に進みます。

しばらく待つと起動します。

Hi there

今回は GApps (Google の Application 同梱版)の GSI を使用したので、Google の初期設定が実行されています。適当に設定してください。

起動しました。

SIM は1つ(Slot1)しか認識しません(SIM カードは挿入していないため、SIM status は Not available と表示されています)。ただし、micro SD カードはきちんと認識するのでご安心を。

これで、Android 10 および最新のセキュリティパッチ(2020年5月)があたった状態になりました(bootloader アンロックして su が入った状態がセキュアかどうか、というのはまた別の話・・・)。

動作確認

以下の項目については動作することを確認しました。

  • micro SD カードの読み込み(SDXC 64GB, exFAT)
  • WiFi 接続(5GHz)
  • カメラ(静止画・動画)
  • サウンド
  • NFC(bluetooth ヘッドセットとのペアリングの確認)
  • bluetooth ヘッドセット
  • 指紋認証
  • Play Store への接続

データ通信については、APN 設定をすれば電波を拾って通信できることは確認できたのですが、アンテナピクト表示が 4G ではなく H(SDPA) になっているのが少し気になります。今のところ SIM いれてガッツリ使う予定がないので、この辺りはあまり検証していません。

また通話については、確認できませんでした。できなかったというのは、自分の手持ちの通話用 SIM (ドコモ カケホーダイライトプラン)は認識しなかったからです。できそうな気はするのですが、この辺りはいずれ気が向いたら確認するようにします・・・。

コメント

  1. OSAKANA TARO より:

    参考になりました。
    Android10で成功したあと、ダメだろうと思いつつAndroid 11とAndroid 12で試してみたところ、やっぱりダメでした。
    Android11だとfastbootモードに戻って、Android12(Googleのやつ)だとSONYロゴのまま電源オフもできなくなる、という状態になりましたw

    とりあえず放電しつくして電源が切れるのを待っているところです

    • kz より:

      OSAKANA TARO さま

      コメントありがとうございます。

      ちょうど先日 Android11 はどうかな?と思って少し試してみたところでした。

      結果としては焼いて起動するところまでは行きましたが、非認証デバイス扱いとなって Google のサービスに一切接続できない状態でした。

      https://victor-mochere.com/how-to-fix-device-is-not-play-protect-certified-error

      上記サイトなども参考にさせていただいて少し対応してみたものの時間切れ・・・

      今度また時間があるときにもう少し試してみたいと思います。

      • OSAKANA TARO より:

        いろいろ調べた結果、Android 8.x以降対応となるVNDK lite対応のGSIファイルならいけるんじゃないかと
        Pixel Experience Plus and non-Plus
        https://github.com/ponces/treble_build_pe/releases
        PixelExperience_Plus_arm32_binder64-ab-vndklite-11.0-20210825-UNOFFICIAL.img.xz
        を試したところPlayプロテクト認定はされていないものの、GooglePlayやgmailなどは普通に使える状態になりました

タイトルとURLをコピーしました