今回は Xperia の ROM 焼きです。たまにしかやらないのですぐに忘れてしまうため、今回はしっかりまとめておきたいと思います。
一応念のためではありますが、やる場合は自己責任でお願いいたします。
そもそも ROM 焼きとは
公式な用語なのかどうかわかりませんが、スマートフォンに対してファームウェアイメージ(ROM)を書き込むことです。ROM は公式・非公式問いません。
何がうれしいの?
個人的に、プライベートのスマートフォンは2年に1度買い替えることにしています。だいたい、以下の理由からです。
- スマホは既に生活インフラであり、常に良いものを使っているべき(そのために2年に1回、5~10万の支出は決して高くない)。
- 数年経つとサポート対象外となり、セキュリティ上の懸念が出てくる。
- 一応技術屋でもあるので、ある程度最新の機能に触れておきたい。
以前はそもそも遅くて使い物にならない→最新機種に変えたい、という理由もありましたが、最近はパフォーマンスに関しては全然気にならなくなりました。
最新ゲームでもやらない限り、2年前のものであっても(パフォーマンス観点では)全然現役です。
しかしサポートは切れるので、セキュリティ上の懸念は拭えません。
そこで活きてくるのが 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 がそれにあたります。
かなり便利&楽なので、公式 ROM を焼くのであれば Flashtool を使いましょう。
ただ、G8232 はグローバル版であり、そもそも日本の意味不明なキャリア制限はないため何もしなくても通常のファームウェアアップデートでソニー公式の最新イメージを適用できます。
Flashtool による ROM 焼きは基本的に公式 ROM が対象のため、Android 9 などの非公式 ROM を焼きたい場合には使えません。
非公式 ROM を焼く場合は、bootloader のロックを外し、fastboot コマンドで ROM イメージを焼きこむ、という方式を採ることになります。
ROM 焼き手順
SDK Platform-Tools のインストール
公式サイトからサクッとダウンロードしましょう。簡単なのでここは省略します。
Fastboot ドライバのインストール
非公式 ROM を焼くためには、Windows とスマホを Fastboot モードで接続できるようにする必要があります。そのために、まずは Windows10 環境に Fastboot ドライバをインストールします。
わりとめんどくさいのですが、すでに先人のみなさまがわかりやすくまとめてくださっているので、そちらをご覧ください。
Bootloader アンロック
続いて bootloader をアンロックします。bootloader というのは、スマホの電源を ON した時に動作するソフトウェアで、OS(今回の場合は Android)を起動する役割を担います。
ただし、OS なら何でも起動できて良いのかというと、そういうわけにもいきません。なんでもかんでも起動できてしまうと、ベンダーが想定していない不具合が発生する可能性があるからです。
そこでベンダーは、自分たちが動作保証した OS しか起動できないように、bootloader にロックをかけます。このロックを外すのが、bootloader のアンロックです。
アンロック用コードの生成
アンロックするためには、以下のサイトでアンロック用のコードを入手する必要があります。
ページ下部のドロップダウンリストで「Xperia XZs」を選びます。
IMEI を入力し、チェックボックスにチェックを入れて Submit ボタンをクリックすると、アンロック用のコードが生成されます。
アンロックの実行
アンロックの方法は、公式サイトにシンプルにまとめられています(英語ですがわかりやすい)。
まず、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 にしたかったということもあり、以下を試させていだきます(感謝)。
ただ、G8232 (Dual SIM)に対応したものは少し探した限りではなさそうでした。Dual で使いたい場合はこちらが良さそうです。
(一応こちらも試して、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 のリストをご参照ください。
xz 形式のアーカイブなので、ダウンロードして 7Zip などで展開しておきます。
焼きこむ
再び 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
再起動するとなんか怖そうなメッセージが出ますが、要は「もう保証しないよ」ということです。やっちまったものは仕方ないので気にせず先に進みます。
しばらく待つと起動します。
今回は 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 (ドコモ カケホーダイライトプラン)は認識しなかったからです。できそうな気はするのですが、この辺りはいずれ気が向いたら確認するようにします・・・。
コメント
参考になりました。
Android10で成功したあと、ダメだろうと思いつつAndroid 11とAndroid 12で試してみたところ、やっぱりダメでした。
Android11だとfastbootモードに戻って、Android12(Googleのやつ)だとSONYロゴのまま電源オフもできなくなる、という状態になりましたw
とりあえず放電しつくして電源が切れるのを待っているところです
OSAKANA TARO さま
コメントありがとうございます。
ちょうど先日 Android11 はどうかな?と思って少し試してみたところでした。
結果としては焼いて起動するところまでは行きましたが、非認証デバイス扱いとなって Google のサービスに一切接続できない状態でした。
https://victor-mochere.com/how-to-fix-device-is-not-play-protect-certified-error
上記サイトなども参考にさせていただいて少し対応してみたものの時間切れ・・・
今度また時間があるときにもう少し試してみたいと思います。
いろいろ調べた結果、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などは普通に使える状態になりました