Essential Phone PH-1をアップデートする
を参考に実施していきます。ちなみにAndroidのことはほとんどわかりません。
javaはasdfのものを使う。JDK v8以降は対応していないらしい(参考)。
asdf install java adoptopenjdk-8.0.312+7
asdf global java adoptopenjdk-8.0.312+7
# Warningが出たのでファイルを作っておく
mkdir -p .android && touch ~/.android/repositories.cfg
sdkmanager
sdkmanager platform-tools
# adb はここにいる
/usr/local/share/android-sdk/platform-tools/adb
ARM64+GMS を使う。
lockされているとダメらしい。
asataka@tailmoon ~ % adb reboot bootloader
asataka@tailmoon ~ % fastboot flash vendor_a ~/Downloads/vendor-QQ1A.200105.088.img
Sending 'vendor_a' (392296 KB) OKAY [ 10.184s]
Writing 'vendor_a' FAILED (remote: 'Flashing is not allowed in Lock State')
fastboot: error: Command failed
asataka@tailmoon ~ %
https://www.droidguides.com/unlock-bootloader-essential-phone/ を参考にunlockする。
asataka@tailmoon ~ % fastboot flashing unlock
OKAY [ 0.078s]
Finished. Total time: 0.078s
asataka@tailmoon ~ %
unlockしたら端末が初期化された。いいのかなこれで…
asataka@tailmoon ~ % adb reboot bootloader
asataka@tailmoon ~ % fastboot flash vendor_a ~/Downloads/vendor-QQ1A.200105.088.img
Sending 'vendor_a' (392296 KB) OKAY [ 9.064s]
Writing 'vendor_a' OKAY [ 1.867s]
Finished. Total time: 10.934s
asataka@tailmoon ~ %
できた。
USBケーブルで繋いでadb reboot bootloaderした画面。
Androidってこういう風になるんだな。これはiPhoneにはない面白さ。残りの手順は一気に進めてしまおう。
fastboot flashing unlock
# OKAY [ 0.078s]
# Finished. Total time: 0.078s
adb devices
# List of devices attached
# PM1LHMA842100233 device
adb reboot bootloader
fastboot flash vendor_a ~/Downloads/vendor-QQ1A.200105.088.img
# Sending 'vendor_a' (392296 KB) OKAY [ 9.064s]
# Writing 'vendor_a' OKAY [ 1.867s]
# Finished. Total time: 10.934s
fastboot erase system_a
# Erasing 'system_a' OKAY [ 0.788s]
# Finished. Total time: 0.789s
fastboot flash system_a ~/Downloads/gsi_gms_arm64-exp-RP1A/system.img
# Invalid sparse file format at header magic
# Sending sparse 'system_a' 1/5 (524228 KB) OKAY [ 12.071s]
# Writing 'system_a' OKAY [ 2.492s]
# Sending sparse 'system_a' 2/5 (524228 KB) OKAY [ 12.019s]
# Writing 'system_a' OKAY [ 2.493s]
# Sending sparse 'system_a' 3/5 (524240 KB) OKAY [ 12.029s]
# Writing 'system_a' OKAY [ 2.493s]
# Sending sparse 'system_a' 4/5 (518832 KB) OKAY [ 11.925s]
# Writing 'system_a' OKAY [ 6.449s]
# Sending sparse 'system_a' 5/5 (34192 KB) OKAY [ 0.868s]
# Writing 'system_a' OKAY [ 0.197s]
# Finished. Total time: 69.741s
fastboot flash boot_a ~/Downloads/magisk_patched.img
# Sending 'boot_a' (24144 KB) OKAY [ 0.639s]
# Writing 'boot_a' OKAY [ 0.143s]
# Finished. Total time: 0.847s
# updating plugin repository...HEAD is now at 071e261 chore: format README.md
# 1password-cli https://github.com/NeoHsu/asdf-1password-cli.git
# R https://github.com/asdf-community/asdf-r.git
# act https://github.com/grimoh/asdf-act.git
# :
# guile https://github.com/indiebrain/asdf-guile.git
# gwvault https://github.com/GoodwayGroup/asdf-gwvault.git
# hadolint https://github.com/looztra/asdf-hadolint.git
fastboot set_active a
# Setting current slot to 'a' OKAY [ 0.029s]
# Finished. Total time: 0.030s
fastboot -w
# Erasing 'userdata' OKAY [ 0.440s]
# mke2fs 1.46.2 (28-Feb-2021)
# Creating filesystem with 26768215 4k blocks and 6692864 inodes
# Filesystem UUID: 6088cbac-e6ee-4cf8-a289-476d0c1bd9cf
# Superblock backups stored on blocks:
# 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
# 4096000, 7962624, 11239424, 20480000, 23887872
#
# Allocating group tables: done
# Writing inode tables: done
# Creating journal (131072 blocks): done
# Writing superblocks and filesystem accounting information: done
#
# Sending 'userdata' (544 KB) OKAY [ 0.100s]
# Writing 'userdata' OKAY [ 0.009s]
# Finished. Total time: 1.022s
アップデートも行えて、一通り動作が確認できた。一息つけたので、ここまでで自分が何をダウンロードして、何を動かして何をしたのかを振り返ろう。
正直、Qittaの記事はともかくとして、見知らぬサイトからデータを落としてそれを実行するのは怖かった。Redditの票数だけが判断材料だったし、それだって決して確かな指標ではないだろう。せめて使い捨てのVM内で実施すべきだったかな。
作業マシンで動かすのは結局platform-toolsのadb
とfastboot
だけだからあまり気にする必要もないのか。
ツールや用語を整理しよう。
コマンド系
作業マシン上で動かすのはAndroid公式のplatform-toolsのコンポーネントのみ。簡単な違いとして、adbはOSレベル、fastbootはbootloaderレベルを操作するツールとなる。
-
adb: Android Debug Bridge
- client - server(on PC) - daemon(on device) という形で動作する
- Wi-Fi経由でも接続できるみたいだが調べるのが面倒なのでまだ試してない
- AndroidのOSレベルでのツールっぽい
- 今回の手順では
adb reboot bootloader
しか使っていない
- 今回の手順では
-
fastboot
- bootloaderとUSB/Ethernet経由で通信するプロトコル/ツール
- The fastboot protocol is a mechanism for communicating with bootloaders over USB or ethernet.
- 今回の手順では設定やデータを消したり書き込んだりした
- bootloaderとUSB/Ethernet経由で通信するプロトコル/ツール
イメージ・パッチ
- system.img: Android OS本体
- vendor-****.img: 機種固有の設定とか?
- magisk_patched.img
-
Magisk: The Magic Mask for Android
- Google/Android 非公式のツール
- Androidのイメージにパッチを当てるもの
-
Magisk: The Magic Mask for Android
その他の用語
- GSI: Generic System Images
- GMS: Google Mobile Service
- system_a, vendor_a: A/B(seamless) System Updates
ついでにバッテリーが膨らんでディスプレイが外れてしまっているので、バッテリーの交換もしたい。
これが参考になりそう。
ディスプレイは既に外れていたのでヒートシンクだけ取り外すとバッテリーが見えた。
ディスプレイの端子はネジの圧力だけで固定されているんだなとか、この端子に規格はあるんだろうかとか、ヒートシンクはこうなっているんだなとか、色々面白い。
これは先に放電しておいた方が良かったのかな。自然放電に任せればいいのかな。
交換後に古いものは廃棄することになりそうなので考えておく。Li-ionのリサイクルマークがついているとリサイクルできるらしい。お住まいの市町村のゴミ捨てルールに従って廃棄する。
バッテリーのパッケージのラベルを見ると
- Model: HE323
- Normal Voltage: 3.85V
- Capacity 3040mAh 11.7Wh
- 親能源科技有限公司 Amperex Technology Limited
とある。「PH-1 バッテリー」や「HE323」などのキーワードで探してみる。型番でも普通にヒットする。
-
https://www.amazon.co.jp/Pattaya-Hssential-Phone-互換バッテリー-HE323/dp/B08PC3NQ37
- Hssential Phoneとは…🤔
- https://www.amazon.co.jp/ノーブランド品-Essential-Phone-PH-1用バッテリー-新品/dp/B08LBTRF7N
- https://store.shopping.yahoo.co.jp/roop3r/he323.html
レビューが多かったのと業者の評価も高かったのでYahooショッピングのアカウントを作って
を購入した。この業者さんの資料も読んでおく。
バッテリー交換の記事に
新しいバッテリーを取り付ける際は
バッテリーテープを忘れずに貼り付けて作業完了です。
もし、ご自身でバッテリー交換を行う際はバッテリーテープを忘れずに!
と書かれていたのでテープも買っておこう。あと画面をくっつけるノリも買わないと。とりあえず適当にこれとこれを買った。
交換用のバッテリーが届いたのでバッテリーを外した。途中で千切れたのでドライバーをねじ込んで外した。気づいてなるほどだったが、バッテリーテープは引っ張ると粘着が解除されるようになる。しかし気付くのが遅かった。
ドライバーを突っ込んで外したので黒いテープのような部分がズタズタになった。
左が新品で、右が外したもの。無理矢理剥がすハメになったのでパッケージにだいぶ皺が寄ってしまった。廃棄するので別に気にしない。バッテリーテープはまだ届いていないけれど、配置してみた感じ特にガタつきも無いので、このままヒートシンクで押さえるだけでも良さそうだ。
バッテリーを入れ替えた。普通に起動した。
爆発しないかまぁまぁ不安だ。