Pixel 3で中国電信SIMを使えるようにする

公開日

原文言語: 中国語 。 AI翻訳: 英語 日本語


2021年、Pixel 3をメイン機にする予定だった。


先にいくつか記事を読んだ。思ったより複雑ではなさそう。

Ref:

大まかな流れはこんな感じ。
アンロック -> Magiskでroot -> 電信モジュールを有効化。
Pixel 3のハード自体は電信に対応しているので、設定を少し弄れば動くはず。

作業は4ステップ。

  • フルバックアップ
  • 最新システムへ更新
  • Magiskを導入
  • 電信モジュールを有効化

フルバックアップ

ド素人なので、刷く前から「文鎮化したらどうしよう」と考えていた
なのでまずはフルバックアップ。

参考:How to fully backup and restore your Android device without root
adbでバックアップ/復元するのはそれなりに堅そう。

  1. USB Debuggingを有効化
  2. adb backup -apk -shared -all -f <filepath>/backup.ab
    backupの後ろの4つの引数が何を意味するのか、.ab拡張子が何なのかは当時よく分かっていなかった
  3. 端末側に確認画面が出る。パスワードも設定できるので、できれば設定(推奨)
  4. ひたすら待つ
  5. 復元はadb restore <filepath>/backup.ab

2021/10/07 update
adb restore <filepath>/backup.abがうまく動かず、復元に失敗した…
adb backupの標準に従わないアプリがあるらしく、バックアップ時に壊れていてもCLI側はエラーを出さないことがあるらしい。
2〜3回復元を試したが、データは戻ってこなかった。幸い今回はそこまで重要なデータではなかった。
別のバックアップ方法が必要(未定)。


最新システムへ更新

手元のPixel 3は中古で、すでにroot化されていた。データを消すときにMagiskをアンインストールしていなかったせいで検証に通らず、自動でアップデートが入らない状態になった。

ネットで手動アップデートの方法を調べる。
XDA - How to flash a monthly security update on Google Pixel without wiping data
この記事は最新のFactory Imageを落としてflash-all.shを編集し(末尾付近の-wを削除)、ユーザーデータを消さずに更新するというやり方。

ただ、なんとなく怖い。

Google公式が推奨しているのはFull OTA Imagesでの更新:
Full OTA Images for Nexus and Pixel Devices - Updating instructions
手順がかなり丁寧で、公式ガイド通りにやったら問題なく最新版に更新できた。


Magiskを導入

この端末はBootloaderアンロック済みなので、そのままMagiskを入れられる。

未アンロックの場合はGoogleの手順を参照:
Factory Images for Nexus and Pixel Devices - Flashing instructions
注意:アンロックすると全データが消える。必ず先にバックアップ。

Magisk導入は複数記事を突き合わせた。

magisk.apk をインストール

  • Github - Magiskから最新APKをダウンロードし、端末へインストール。

boot image をパッチ

  • Google公式から端末に対応するFactory Images(フルファームウェア)をダウンロード: https://developers.google.com/android/images
  • 展開するとflash-***スクリプト類、bootloaderradio.img、一番大きいimage-***.zipが出てくる
  • image-***.zipをさらに展開してboot.imgを取り出し、端末に送る(例:adb push boot.img /sdcard/Download/
  • Magiskを開き、上のInstallからSelect and Patch a Fileを選んで、送ったboot.imgを指定
  • Magiskがパッチを当ててmagisk_patched_*****.imgが生成される
  • 生成されたイメージをPCに戻して、書き込みに使う

boot をフラッシュ

ここは記事によって微妙に手順が違っていて、少し混乱した。

  • bootloaderモードへ再起動:adb reboot bootloader
  • fastbootモードへ再起動:adb reboot fastboot(または電源+音量下などのキーコンボ)

当時はこの2つの違いがよく分からなかったので、ダメなら次のノリで試した。

  • fastboot flash boot magisk_patched_*****.imgでbootに書き込み、fastboot rebootで再起動
  • あるいはfastboot boot magisk_patched_*****.imgで一時起動し、MagiskアプリからInstall -> Direct Installで恒久化
    (前者のほうが楽)
以前ちょっとバグった
  • 2021/08/19 update(このメモは間違っているかも)
    たぶんadb reboot fastboot + fastboot flash boot magisk_patched_*****.img
    adb reboot bootloader + fastboot boot magisk_patched_*****.img
    で組み合わせるべきだった気がする。
    当時fastbootモードでfastboot boot magisk_patched_*****.imgを叩いてエラーになった。
  • 2021/10/31 update
    上の2021/08/19のメモは正確ではないかもしれない。エラーは出たが、どのコマンドだったか忘れた。

OTAアップデートの話

Pixel 3 完美支持中國電信の記事に、Magiskを残しつつOTA更新する手順が詳しく書かれていて便利だった。
要点としては「OTAのために一時的にstockへ戻す」->「再起動する前にinactive slotへMagiskを入れ直す」みたいな流れ。
原文ドキュメント:https://topjohnwu.github.io/Magisk/tutorials.html

更新:何度か試したが自分の環境ではうまくいかなかった。結局は手動で更新パッケージを焼くことが多く、この方法は安定しなかった。


電信モジュールを有効化

ここが一番簡単だった。

MagiskアプリのModulesにいろいろあるが、China Telecom Enablerは自分のPixel 3には入らなかった。

代わりにこれを使った:
Github - China Telecom Supporter
作者が導入方法を書いてくれている。
最初はGitHubのDownload as ZIPで落として、そのままMagiskから入れようとして失敗した。ZIPの中がディレクトリ1階層ぶん余計で、それを取り除いたら通った。

インストール後に再起動し、電信SIMを挿すと通話できた。完結、撒花~~~


Android 12へアップグレード

2021/10/23 update

Pixel 3の公式サポートは2021年10月までで、ちょうどAndroid 12の安定版配信と重なった。Magisk入りのPixel 3にもOTAが来た。
2日ほど悩んだが、結局この最後の晩餐に抗えず、系统升级を押した。

アップデート後、電信破解が消えていて焦った。
ただ、一通り試してみたら「Magiskで電信モジュールをアンインストールして、もう一度インストールする」と復活した。

だいたいこんな感じ:

  • Android 12へアップグレード
  • Magiskがパッチしたboot.imgが上書きされる
  • Magiskを入れ直す
  • 以前入れていたMagiskモジュールは残っている(良い)
  • しかし電信が死んでいる(悪い)
  • いろいろ試す
  • Magiskで電信モジュールをアンインストール
  • 再起動
  • 電信モジュールを再インストール
  • もう一度再起動
  • 電信が復活(良い)

adbコマンド

Magisk周りを触る中で覚えたadbコマンドを、忘れないようにメモ。

  • adb push/pull
    PCと端末間でファイルをやり取りする。例:adb push boot.img /sdcard/Download/

  • adb shell
    端末にシェルで入る(SSHっぽい)。lspwdcdなどが使える。adb push/pull先のパス確認に使った。

  • adb install *.apk
    コマンドラインからAPKをインストールする。

  • adb shell pm uninstall
    adb shell pm list packagesでインストール済みパッケージ一覧
    adb shell pm uninstall -k --user 0 软件包名で指定パッケージを削除

    この方法は、端末上から通常は削除できないプリインアプリを「削除」できるが、完全なアンインストールではなく無効化に近い。端末の容量も空かない。
    Ref:bilibili专栏 - 无法解锁bootloader时,如何使用ADB工具精简日版系统 & ntt docomo软件对照表


2021/08/25 update

  • アプリをアンインストール(無効化)
    adb shell pm uninstall -k --user 0 <package-name>

    • -k : Keep the data and cache directories around after package removal.
    • —user 0: The user to disable
  • 既にアンインストールしたパッケージを再インストール
    adb shell pm install-existing <package-name>

  • アンインストールしたパッケージ一覧を出す(bash上で実行。adb shell内ではない)

    Terminal window
    diff <(adb shell pm list packages) <(adb shell pm list packages -u) -n | grep ^package:

Ref:
XDA - Uninstall bloatwares [No root]
XDA - few questions about root and more - Use adb shell to remove Google apps and more..

Bashスクリプト
Terminal window
https://forum.xda-developers.com/t/uninstall-bloatwares-no-root.4321387/
Here is a list of packages identified as bloatware / ads / junks / useless / optional.
Please read comments and remove the lines where you want to keep the package.
Uninstall at your own risks.
pm uninstall -k --user 0 com.google.android.apps.googleassistant
pm uninstall -k --user 0 com.google.android.googlequicksearchbox
pm uninstall -k --user 0 com.google.android.apps.subscriptions.red
pm uninstall -k --user 0 com.xiaomi.midrop
pm uninstall -k --user 0 com.xiaomi.miplay_client Mi Play. This is an unnecessary process that hasn't really been used for years.
pm uninstall -k --user 0 cn.wps.xiaomi.abroad.lite WPS Office. Has been flagged for years for malware. This was banned in India for a reason.
pm uninstall -k --user 0 com.miui.msa.global MSA. This is the main service that displays ads in Xiaomi phones. This is already removed in Xiaomi.EU.
pm uninstall -k --user 0 com.xiaomi.payment Unless you live in China or India, Xiaomi's own payment service is redundant and unnecessary.
pm uninstall -k --user 0 com.ebay.carrier In case bloatware from Ebay is installed.
pm uninstall -k --user 0 com.android.browser Mi Browser. It's a buggy unnecessary mess. Recommend you use other browsers like Chrome.
pm uninstall -k --user 0 com.mi.globalbrowser Also part of Mi Browser.
pm uninstall -k --user 0 com.miui.videoplayer Mi Video player. Uninstall if you prefer to use MX Player or VLC that actually support more formats.
pm uninstall -k --user 0 com.miui.micloudsync Include if you don't use Mi Cloud.
pm uninstall -k --user 0 com.miui.hybrid Found to be a data mining app that unnecesarily uses your phone's resources.
pm uninstall -k --user 0 com.miui.hybrid.accessory Also a data mining app. Very recommend that you get rid of this.
pm uninstall -k --user 0 com.miui.player Include if you don't use Xiaomi's music app.
pm uninstall -k --user 0 com.facebook.services In case Facebook bloatware was preinstalled.
pm uninstall -k --user 0 com.facebook.system Also Facebook bloat.
pm uninstall -k --user 0 com.facebook.appmanager Also Facebook bloat.
pm uninstall -k --user 0 com.xiaomi.glgm Mi Games. Very unncessary.
pm uninstall -k --user 0 com.xiaomi.mipicks Very unnecessary. Xiaomi's way to advertise their own apps.
pm uninstall -k --user 0 com.xiaomi.joyose Junk and safe to remove.
pm uninstall -k --user 0 com.miui.notes Include if you use other notes apps.
pm uninstall -k --user 0 com.miui.cleanmaster Together with WPS Office, Cleaner Master was found to be affiliated with Cheetah Mobile, that included spyware and adware in their software.
pm uninstall -k --user 0 com.miui.weather2 Include if you use other apps to get the weather like Google or Yahoo.
pm uninstall -k --user 0 com.micredit.in Mi Credit. Basically useless if you live outside India.
pm uninstall -k --user 0 com.mipay.wallet.in Part of Mi Credit.

Pixel C タブレット

2021/10/27 update

最近Google Pixel Cタブレットを入手して遊んでいる。遭遇した問題のメモ。

  • adbは認識するのにfastbootno permissionで落ちた。lspciでUSBデバイスを手で追加する方法も見かけたが、結局はsudo fastbootが一番簡単だった…
  • TWRPでサードパーティROMを入れるときは、手順通りにSYSTEMDATAをワイプすること。自分はそこを見落として再起動したらブートアニメで停止し、強制電源OFF -> TWRPに戻ってDATAを消そうとしても消えず、formatting data using make_ext4fsで固まった。さらにfailed to mount datafailed to mount systemも出て、両パーティションが壊れていた。
    解決はこれを参照:XDA - How to fix unable to mount data internal storage 0mb in twrp permanently
    TWRPAdvanced Wipe -> Repair File System -> Change File SystemでいったんExt2にして、刷り直したあとExt4に戻す(両方のパーティションで同様にやる)。
    その後は手順通りに焼き直して無事起動した。
  • 焼いた後は少しカクつくが、使えなくはない
    ただ面倒だったのは、サードパーティROMだと純正キーボードのショートカットが効かなくなったこと。純正キーボードにはESCがなく、...+1ESC相当を出すのだが、それが潰れてしまった。Magiskのモジュールでリマップできないものか(技術力がほしい.jpg)

あとで読み返す用に、XDAのリンクをメモ。

2015年の端末が、2021年になっても開発者にメンテされてAndroid 11まで動き、しかも開発者がAndroid 12対応まで計画しているのはすごい。寿命が長い。

もちろん運もある。公式サポートはAndroid 6〜8で終わって、その後GoogleがChrome OS路線に振って製品ラインを投げた…
しかもこのタブレットはQualcommではなくNvidiaのTegra X1で、よく分からない制約も多く、開発者も撤退しかけた。
ところがNvidiaが同じチップを積んだNvidia Shield TVを出し、そこからカーネルを移植することで延命できた(たぶんそういう流れ。詳しくはXDAのFuture of our Pixel C - Goal reached)。

オープンソースに感謝。
開発者に感謝。

Pixel 5

2022/10/11 update

Pixel 5も入手。
良いニュース:最新Android 13が使える。
悪いニュース:電信SIMが死んだ…

数時間粘ったが、結局は完全に解決できなかった。成果としては「VoLTEは出る」「発信はできる」「着信できない」(通信は未検証)くらい。

参考になったリンクをメモ。

電信は結局解決できず。寝る。