Open20

Essential Phone PH-1をアップデートする

astkastk

https://zenn.dev/ik11235/articles/essential-phone-update-android11

を参考に実施していきます。ちなみにAndroidのことはほとんどわかりません。

astkastk

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
astkastk

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 ~ %

できた。

astkastk

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
astkastk

アップデートも行えて、一通り動作が確認できた。一息つけたので、ここまでで自分が何をダウンロードして、何を動かして何をしたのかを振り返ろう。

正直、Qittaの記事はともかくとして、見知らぬサイトからデータを落としてそれを実行するのは怖かった。Redditの票数だけが判断材料だったし、それだって決して確かな指標ではないだろう。せめて使い捨てのVM内で実施すべきだったかな。

astkastk

作業マシンで動かすのは結局platform-toolsのadbfastbootだけだからあまり気にする必要もないのか。

astkastk

ツールや用語を整理しよう。

コマンド系

作業マシン上で動かすのは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.
    • 今回の手順では設定やデータを消したり書き込んだりした

イメージ・パッチ

  • system.img: Android OS本体
  • vendor-****.img: 機種固有の設定とか?
  • magisk_patched.img
    • Magisk: The Magic Mask for Android
      • Google/Android 非公式のツール
      • Androidのイメージにパッチを当てるもの

その他の用語

astkastk

ついでにバッテリーが膨らんでディスプレイが外れてしまっているので、バッテリーの交換もしたい。

astkastk

これが参考になりそう。
https://www.iphone-d.jp/blog/battery/16349.php

ディスプレイは既に外れていたのでヒートシンクだけ取り外すとバッテリーが見えた。

ディスプレイの端子はネジの圧力だけで固定されているんだなとか、この端子に規格はあるんだろうかとか、ヒートシンクはこうなっているんだなとか、色々面白い。

astkastk

これは先に放電しておいた方が良かったのかな。自然放電に任せればいいのかな。

astkastk

バッテリーのパッケージのラベルを見ると

  • Model: HE323
  • Normal Voltage: 3.85V
  • Capacity 3040mAh 11.7Wh
  • 親能源科技有限公司 Amperex Technology Limited

とある。「PH-1 バッテリー」や「HE323」などのキーワードで探してみる。型番でも普通にヒットする。

レビューが多かったのと業者の評価も高かったのでYahooショッピングのアカウントを作って

https://store.shopping.yahoo.co.jp/roop3r/he323.html

を購入した。この業者さんの資料も読んでおく。

astkastk

バッテリー交換の記事に

新しいバッテリーを取り付ける際は
バッテリーテープを忘れずに貼り付けて作業完了です。
もし、ご自身でバッテリー交換を行う際はバッテリーテープを忘れずに!

と書かれていたのでテープも買っておこう。あと画面をくっつけるノリも買わないと。とりあえず適当にこれとこれを買った。

astkastk

交換用のバッテリーが届いたのでバッテリーを外した。途中で千切れたのでドライバーをねじ込んで外した。気づいてなるほどだったが、バッテリーテープは引っ張ると粘着が解除されるようになる。しかし気付くのが遅かった。

ドライバーを突っ込んで外したので黒いテープのような部分がズタズタになった。

左が新品で、右が外したもの。無理矢理剥がすハメになったのでパッケージにだいぶ皺が寄ってしまった。廃棄するので別に気にしない。バッテリーテープはまだ届いていないけれど、配置してみた感じ特にガタつきも無いので、このままヒートシンクで押さえるだけでも良さそうだ。

astkastk

スマホのディスプレイの裏側を知ってしまうと、これミニPCとかRaspberry Piのディスプレイとして流用できるのではと思ってしまう。