HTC U12+にGSIを焼く

備忘録。変な色分けになってるが気にしないことにする。

前提条件

  • bootloaderアンロック状態(S-ON)
  • ファームウェアバージョンがPieであること
  • PieバージョンのRUUが手元にあること、実機からSystemやVendor、Boot、vbmeta等をバックアップしてあること

注意事項

  • 必ず片方のスロットのみを使用する
    • 例えばAB双方にvbmeta.imgを焼いた際、データが誤っているとリカバリーの起動すらできなくなり詰む
    • 起動失敗によるフォールバック機能で使用中のスロットが変更されることもあるので、データを送り込む前にスロットの確認を怠らないこと
  • S-ONではfastbootでvbmeta.imgは焼けない
    • かといって恒久的なS-OFFは多分できないので、TWRPを起動してddコマンドで送り込む(つまりしくじると詰む)
    • vbmetaはブート検証を行うので、ここがおかしいとリカバリーのブートが出来ない(上記写真のようにbootloaderに戻ってくる)→S-ON環境ではリカバリーからしかvbmetaの書き換えが行えない→AとBの両方に間違ったものを焼くと詰む
  • TWRPの起動やスロット変更はbootloader mode
  • system.imgを焼くときだけdownload mode
  • ddコマンドを間違えない
    • dd if=コピー元 of=コピー先 bs=4096
    • 送り先を間違えると死ぬぞ
  • 本ページを鵜呑みにせず、一次ソースを確認する
  • 全て自己責任で実行する

前準備

  1. GSIのダウンロード(今回はViper Experience 11を使用)
  2. TWRPのダウンロード
  3. ブート検証無効化済みのvbmetaのダウンロード(vbmeta_2.55.401.1_noverity.zip)(解凍しておく)
  4. 必要に応じて各種パッチのダウンロード
  5. bootloader modeで現在使用中パーティションの確認
    1. fastboot  getvar current-slot
    2. fastboot --set-active=b(Bスロットに焼く場合)

万が一起動しなくなった場合にもう片方のスロットから起動できるので、バージョンの古い方(2.59.454.1)のパーティションを指定して焼くのを推奨。(2021年5月1日現在2.61.454.1が最新)

インストール

  1. bootloader modeで起動
  2. TWRPをブート
    1. fastboot boot twrp.img
  3. TWRPを焼く
    1. "Advanced"→"Install Recovery Ramdisk"→ダウンロードしておいたtwrp.imgを選択
  4. vbmeta_2.55.401.1_noverity.imgをddで送り込む
    1. adb push vbmeta_2.55.401.1_noverity.img /sdcard
    2. (Bスロットに焼く場合)dd if=/sdcard/vbmeta_2.55.401.1_noverity.img of=/dev/block/bootdevice/by-name/vbmeta_b bs=4096
  5. Vendorパッチ、TWRPパッチ、Kernel、Magiskのインストール(任意)
  6. ブートループの修正(Magiskを焼く場合は不要)
    1. "Advanced"→"Fix Recovery Bootloop"
  7. download modeで再起動
  8. システムとユーザーデータの消去
    1. fastboot erase userdata
    2. fastboot erase system
  9. GSIのインストール
    1. fastboot flash system system.img
  10. 再起動

GSIのインストールで止まる場合

target reported max download size of 1073600000 bytes
Invalid sparse file format at header magi

上記メッセージから進まず戻ってくる場合は、fastbootが古い可能性。

最新のSDK Platform-Toolsをダウンロードする。

SDK Platform-Tools リリースノート  |  Android デベロッパー  |  Android Developers

正常時

Invalid sparse file format at header magic
Sending sparse 'system' 1/4 (917404 KB) OKAY [ 31.668s]
Writing 'system' (bootloader) HOSD CL#1100665
(bootloader) start@1
(bootloader) system_b@100%
(bootloader) Update partition OK
(bootloader) end@Done
OKAY [ 65.382s]
~中略~
Sending sparse 'system' 4/4 (893045 KB) OKAY [ 31.054s]
Writing 'system' (bootloader) HOSD CL#1100665
(bootloader) start@1
(bootloader) system_b@100%
(bootloader) Update partition OK
(bootloader) end@Done
OKAY [ 63.713s]
Finished. Total time: 395.093s

その他(ViperExperience Beta4)

fingerprint

HTC Exodus 1として指定すると通る。

2099年12月1日

本当は2021年4月5日らしいのだが、見なかったことにする。

Edge Sense

片手モードは無し、エッジスクロールなるものが増える。

HTCカメラ

動画撮影モードで設定を変更すると落ちる模様。ボケモードもファインダーがフリーズする他、HTCカメラ自体が起動しなくなることもあるため安定感はない。HTCカメラとは別にAOSP GSI付属のカメラがある。

 

写りは多分問題ないと思われる。

HTC Uソニック・ハイレゾイヤホン

動作を確認。アナログイヤホンなのでAOSP GSIなどでは動作しない可能性があるが、ViperExperienceでは動作する。しかし設定項目は無いため、ANCは動作していないと思われる。

バッテリー

5時間のスタンバイで5%程度消費。Y!モバイルのSIMカードを使用しているが、キャリアによって電波状況が異なるので参考程度に。

ディープスリープにはちゃんと入っている様子。

使用中のバッテリー消費については、バッテリーの劣化や燃費の悪さを加味してもこんなものだろうといったところ。

発売当初のときと比べてどうだったか思い出せなかったので、自分で書いたレビュー(HTC速報)を読み直してみたところ、「(バッテリーが持たない)HTCデバイスとしてはこんなもん、正直燃費は悪い」といった感想だったので、やはりこんなもん。

最新プロセッサと大容量メモリ搭載、パフォーマンスとバッテリーを確認 ― HTC U12+レビュー(3) | HTC速報

パーティションリスト(Bスロットがメインの場合)

htc_imedugl:/dev/block/platform/soc/1d84000.ufshc/by-name # ls -l
total 0
lrwxrwxrwx 1 root root 15 1972-10-27 07:23 abl_a -> /dev/block/sde9
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 abl_b -> /dev/block/sde30
lrwxrwxrwx 1 root root 15 1972-10-27 07:23 aop_a -> /dev/block/sde1
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 aop_b -> /dev/block/sde22
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 apdp -> /dev/block/sde46
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 avb_rec -> /dev/block/sde56
lrwxrwxrwx 1 root root 15 1972-10-27 07:23 bluetooth_a -> /dev/block/sde6
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 bluetooth_b -> /dev/block/sde27
lrwxrwxrwx 1 root root 15 1972-10-27 07:23 board_info -> /dev/block/sdf1
lrwxrwxrwx 1 root root 36 2021-05-01 08:28 boot -> /dev/block/bootdevice/by-name/boot_b
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 boot_a -> /dev/block/sde13
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 boot_b -> /dev/block/sde34
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 carrier -> /dev/block/sda16
lrwxrwxrwx 1 root root 15 1972-10-27 07:23 cdt -> /dev/block/sdd2
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 cmnlib64_a -> /dev/block/sde16
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 cmnlib64_b -> /dev/block/sde37
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 cmnlib_a -> /dev/block/sde15
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 cmnlib_b -> /dev/block/sde36
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 control -> /dev/block/sda13
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 cota -> /dev/block/sda17
lrwxrwxrwx 1 root root 15 1972-10-27 07:23 ddr -> /dev/block/sdd3
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 devcfg_a -> /dev/block/sde17
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 devcfg_b -> /dev/block/sde38
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 devinfo -> /dev/block/sde44
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 devlog -> /dev/block/sda10
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 dip -> /dev/block/sde45
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 dpo -> /dev/block/sde48
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 dsp_a -> /dev/block/sde10
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 dsp_b -> /dev/block/sde31
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 dtbo_a -> /dev/block/sde21
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 dtbo_b -> /dev/block/sde42
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 extra -> /dev/block/sda12
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 fataldevlog -> /dev/block/sda11
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 frp -> /dev/block/sda14
lrwxrwxrwx 1 root root 15 1972-10-27 07:23 fsc -> /dev/block/sdf4
lrwxrwxrwx 1 root root 15 1972-10-27 07:23 fsg -> /dev/block/sdf3
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 hosd_a -> /dev/block/sde14
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 hosd_b -> /dev/block/sde35
lrwxrwxrwx 1 root root 15 1972-10-27 07:23 hvbmeta -> /dev/block/sda4
lrwxrwxrwx 1 root root 15 1972-10-27 07:23 hyp_a -> /dev/block/sde3
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 hyp_b -> /dev/block/sde24
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 keymaster_a -> /dev/block/sde11
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 keymaster_b -> /dev/block/sde32
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 limits -> /dev/block/sde50
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 local -> /dev/block/sda15
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 lockbooter_a -> /dev/block/sde12
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 lockbooter_b -> /dev/block/sde33
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 logdump -> /dev/block/sde54
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 logfs -> /dev/block/sde52
lrwxrwxrwx 1 root root 15 1972-10-27 07:23 mdtp_a -> /dev/block/sde8
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 mdtp_b -> /dev/block/sde29
lrwxrwxrwx 1 root root 15 1972-10-27 07:23 mdtpsecapp_a -> /dev/block/sde7
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 mdtpsecapp_b -> /dev/block/sde28
lrwxrwxrwx 1 root root 15 1972-10-27 07:23 mfg -> /dev/block/sdf2
lrwxrwxrwx 1 root root 15 1972-10-27 07:23 misc -> /dev/block/sda6
lrwxrwxrwx 1 root root 15 1972-10-27 07:23 modemst1 -> /dev/block/sdf5
lrwxrwxrwx 1 root root 15 1972-10-27 07:23 modemst2 -> /dev/block/sdf6
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 msadp -> /dev/block/sde47
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 nfc_record -> /dev/block/sda18
lrwxrwxrwx 1 root root 15 1972-10-27 07:23 oem_misc -> /dev/block/sda7
lrwxrwxrwx 1 root root 15 1972-10-27 07:23 padding0 -> /dev/block/sda1
lrwxrwxrwx 1 root root 15 1972-10-27 07:23 padding3 -> /dev/block/sdd1
lrwxrwxrwx 1 root root 15 1972-10-27 07:23 persist -> /dev/block/sda3
lrwxrwxrwx 1 root root 15 1972-10-27 07:23 pg1fs -> /dev/block/sda5
lrwxrwxrwx 1 root root 15 1972-10-27 07:23 pmic_a -> /dev/block/sde4
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 pmic_b -> /dev/block/sde25
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 qupfw_a -> /dev/block/sde18
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 qupfw_b -> /dev/block/sde39
lrwxrwxrwx 1 root root 15 1972-10-27 07:23 radio_a -> /dev/block/sde5
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 radio_b -> /dev/block/sde26
lrwxrwxrwx 1 root root 15 1972-10-27 07:23 ramdump -> /dev/block/sda8
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 reserve0 -> /dev/block/sda22
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 reserve4 -> /dev/block/sde57
lrwxrwxrwx 1 root root 15 1972-10-27 07:23 reserve5 -> /dev/block/sdf7
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 sec -> /dev/block/sde43
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 sp1 -> /dev/block/sde49
lrwxrwxrwx 1 root root 15 1972-10-27 07:23 ssd -> /dev/block/sda2
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 sti -> /dev/block/sde53
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 storsec -> /dev/block/sde55
lrwxrwxrwx 1 root root 38 2021-05-01 08:28 system -> /dev/block/bootdevice/by-name/system_b
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 system_a -> /dev/block/sda19
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 system_b -> /dev/block/sda20
lrwxrwxrwx 1 root root 15 1972-10-27 07:23 tool_diag -> /dev/block/sda9
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 toolsfv -> /dev/block/sde51
lrwxrwxrwx 1 root root 15 1972-10-27 07:23 tz_a -> /dev/block/sde2
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 tz_b -> /dev/block/sde23
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 userdata -> /dev/block/sda21
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 vbmeta_a -> /dev/block/sde20
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 vbmeta_b -> /dev/block/sde41
lrwxrwxrwx 1 root root 38 2021-05-01 08:28 vendor -> /dev/block/bootdevice/by-name/vendor_b
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 vendor_a -> /dev/block/sde19
lrwxrwxrwx 1 root root 16 1972-10-27 07:23 vendor_b -> /dev/block/sde40
lrwxrwxrwx 1 root root 15 1972-10-27 07:23 xbl_a -> /dev/block/sdb1
lrwxrwxrwx 1 root root 15 1972-10-27 07:23 xbl_b -> /dev/block/sdc1
lrwxrwxrwx 1 root root 15 1972-10-27 07:23 xbl_config_a -> /dev/block/sdb2
lrwxrwxrwx 1 root root 15 1972-10-27 07:23 xbl_config_b -> /dev/block/sdc2

12-04 – ViperExperience Beta 4 | Android 11 | April 2021 Security Patch |GSI | XDA Developers Forums

[GUIDE]*How to install a Generic System Image (GSI) on your HTC U12+ | XDA Developers Forums

2021-05-04:利用状況を追記。

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