PC関連のチラ裏

自分用(素人)

Xperia10IV(SO-52C)を買ったのでMagiskインストールくらいまで。

ぼくのかんがえたさいきょうの日常用メインスマホ

  • rootを取れる、できればカスロム開発も活発(アプデ捨てられても最悪何とかなる)
  • 横幅小さめで握りやすい、片手で操作しやすい
  • スペックも(ゲームしない範囲で)快適であれば十分
  • 裸運用で手荒にも扱える価格帯
  • 古すぎない(5G非対応とかは悲しい)

そんなスマホ(ゲームはサブ機のPixel6で十分)を求めていまして、これまではiPhone SE1だったのですが。
バッテリーを何度か交換している(DIY)+予備機まである2台体制なのにバッテリーがすぐ限界になってしまうのと、なによりiOSの脱獄事情に嫌気が差してきました。
まず脱獄可能なOSバージョンが周回遅れで制約も多いのが困る。ver15.*.*で脱獄待機とかダルいし、古いOSverで脱獄待ってるうちに自分の古いCPUには脱獄が降りてこなくてアプリ対応が切られるなんてこともしばしば。
最近はrootlessになっていて脱獄してやれることの幅が狭い(脱獄アプリが少ない)というのも悲しいです。ios15で脱獄してもVirtualHomeすら使えなくて、これには限界を感じました。

ということでAndroidの小型機を探していたのですけど、海外のドマイナーで小さい以外は色々難ありみたいなスマホしか見つからなくてため息。しかしXperia 10 IVが安売りされてるということで、BLUできるそうだしもうこれでいいかなぁと。
Pixel3が5Gに対応していればそれでよかったんですけどね。

Xperia 10 IV(もしくは5 IV)は最近のシリーズで唯一横幅67mm、IIIもVも68mmなのでIVだけちょっと小さい。5IVの安売りを拾うべきだったかなぁと後からちょい後悔。
スナドラ695で微妙なチップらしいけど性能的にはまぁ大丈夫でしょう。縦長で上の方は操作しづらそうだけど、最近はそもそも片手でホールドしづらいデカスマホばかりなのでマシな方。

ちゅうことで10IV(SO-52C)をroot取る辺りまで進めます。
SO-52CにもAndroid14が降ってきたし、Felicaも使えるし、MVNO版ROMはドコモ機に焼くことすらできないしで、ドコモのstockROMでroot取ります。ちなみに最初にBLUした段階ではAndroid13。
MVNO版ROMは焼こうとしてみましたけど本当にできなかった。もしかしたらsinを選択的にすれば焼けるのかもだけど、やり方わからず。partitionimageのsignatureチェックする段階でFailed to verify cms!で焼けません。



ガラスフィルム非推奨

root取る前の本体の話なのですが、この機種はガラスフィルム貼らない方がよかったです。剥がしました。
元々上下左右の反応が悪い機種のようで、画面外から画面内へのスワイプが機能しないことがあるのですが、ガラスフィルム貼るとその感度がオワります。
3ボタンでなくジェスチャーナビゲーションで操作したい人は非推奨。

Bootloader Unlock

BLUはqUnlock Toolでやりました。
NetworkUnlockingCanadaUnlockingが見つかったのですが、それぞれ23ポンドと35ドルだったので、NUの方が安いかなぁと。カードへの請求は3/18付で4,432円きました。

NUで初回REGISTERしてもパスワードが発行されなかったので、ログアウトされた画面でパスワード再発行。
不正防止で住所とIP等を見ているらしいので(どうせ国の一致くらいやろ)、そこそこ正しいものを入力。今のを入れる気にならなかったので、昔の住所の丁目まで。
支払いはPayPal、日本円ではなくポンドをクレカ支払い(手数料安いカードで)。月曜日18:54に支払い、19:45にすぐコードが届いた。思ったより早いな。
qUnlock Toolはもらったリンクのgoogle driveから保存、解凍パス1111。起動したらソフトのバージョンは11.06.2021だった。

はじめに
	stockROMでアプデを進めきっておく。
	*#*#4636#*#* から、 bootloader unlock allowed: No を確認


BLU前にnewflasherでtaをバックアップ、一応。(これでできてるのかわからん)
	newflasher起動
	n→s→y だかでtaファイルをバックアップ
	tadump/tadump_2.ta を保管


S1 UNLOCK TOOL(qunlock)にて
	USERNAME,PASSWORDをメールで届いたものを入力
	Check Creditsで回数確認、LEFT/USED: 1/0を確認
	まだスマホはPCから外しておく方がいいかも
	SIM Unlockを押す
	スマホを接続。VOLUME DOWNを押しながら電源オフXperiaを接続しflashモード(緑ランプ)。
	後は勝手にUNLOCKされる。
	Check Creditsで回数確認、LEFT/USED: 0/1を確認
	終了
	qUnlockのフォルダにできてる謎のバックアップファイルを保管。

*#*#4636#*#* から、 bootloader unlock allowed: Yes を確認


BLUする
	Sony公式からBLUコード取得。保証は消滅する。

	スマホ電源オフ
	音量キー上を押しながらPCに接続、fastbootモード(青ランプ)
	だが認識しない、デバイスマネージャではAndroidとだけ出ている(黄色の警告マーク)
		色々ドライバ入れようと試みたが、デバイスマネージャのドライバ手動更新から
			Sony sa0115 ADB Interface Driver
		を選択したらできた。

	fastboot devices #確認
	fastboot oem unlock 0x[Sonyから取得したコード]
	fastboot reboot

	再起動するとunlock警告が出るようになり、データ消去が開始され、自動的に再起動。
	そのまま通常起動される。
	開発者オプションからBLU済みを確認


TA書き戻しをしておく(できてるのか不明)
	tadump_2.taとnewflasher.exeを同じフォルダに入れて実行
	flashモードで接続
	n→s→n でtadump_2.taだけ書き戻す
	書き込んでるログは見れるが、違いが出てるのかは不明。

Magisk導入

KernelSUは非対応と出るので導入不可。カーネルバージョンが古すぎるのかな?Sonyさん・・
FlashToolだと古くてsinを展開できないので、sony_dump_toolを使う。

stockROMのboot.img入手、パッチを当てる
	XperiFirmで SO-52C_NTT DoCoMo JP_65.1.B.4.150 のイメージをダウンロード
	sony_dumpでbootとvbmetaのsinを展開する
		sony_dump out boot_X-FLASH-ALL-D000.sin
		sony_dump out vbmeta_X-FLASH-ALL-D000.sin #不要かも
	できたboot.img(boot_X-FLASH-ALL-D000.000)を10ivに転送、magisk27.0インストール、パッチを当ててPCに返送


fastbootでパッチ済boot.imgを焼く
	bootloader起動
	fastboot flash boot magisk_patched-27000_*****.img
		ちなみに fastboot boot boot.img だと起動しない。fastbootDでやっても起動しない。
			bootloaderにて→ Booting  FAILED (remote: 'not supported')
			fastbootD にて→ Booting  FAILED (remote: 'Unrecognized command boot')
		なので仕方なくflashする。
	fastboot --disable-verity --disable-verification flash vbmeta_a vbmeta_X-FLASH-ALL-D000.000 #不要かも
	fastboot --disable-verity --disable-verification flash vbmeta_b vbmeta_X-FLASH-ALL-D000.000 #不要かも
	fastboot reboot
	再起動、Android正常起動OK。MagiskインストールOK


確認
	adb shell
	su
	root取得を確認!

/oemをRWマウントできるようにしておく

現状のままだと/systemや/oemはRWでマウントできません。それでも/systemのアプリはde-bloaterで読み込ませないことが可能なのですが、/oemにあるアプリはできません。de-bloaterが古いせいかな?
/oemには正真正銘のキッショいゴミアプリしかなく、 /oem/app や /oem/deletable-app はディレクトリごとリネームして消し去って良いレベルなので、RWマウントできるようにします。
/oem/media/bootanimation.zip もドコモのやつはキショいし。

/oem をRWマウントできるようにする
	XperiFirmのSO-52C_NTT DoCoMo JP_65.1.B.4.150のイメージから oem_X-FLASH-ALL-D000.sin 入手
	sony_dump out oem_X-FLASH-ALL-D000.sin
		oem_X-FLASH-ALL-D000.ext4 を作成。(これはoem.img)
		若しくはroot取ってあるのでパーティションをddしたものを使ってもいい。(ハッシュ一致してるはず)

	oem_X-FLASH-ALL-D000.ext4を適当なlinuxにコピー。僕はラズパイ
	e2fsck -E unshare_blocks oem_X-FLASH-ALL-D000.ext4
		ログで色々ブロック共有されてるのが解除されるのを確認
	oem_X-FLASH-ALL-D000_unshared.ext4 にリネームし、windowsに転送。

	bootloader起動
	fastboot flash oem oem_X-FLASH-ALL-D000_unshared.ext4
		#pixel6にgsiのevo14を焼くときに得た知見。
		#実質容量の削減のために?ファイルのブロック共有機能が有効になっているとRWにできない。
	fastboot reboot

	/oem 書き換えOK!


/oemでとりあえずやること
	/oem/app を退避			#app___ にリネーム。ゴミアプリの消去
	/oem/deletable-app を退避	#deletable-app___ にリネーム。ゴミアプリの消去
	/oem/overlay/Camera-Force-Shutter-Sound-Overlay-305-release.apk を.bakにリネームして退避
		#カメラシャッター音消去、ただしAndroid13のみ。14ではこのファイルは無い
	/oem/media/bootanimation.zip をMVNO用のoemから抜き出して差し替え。
		XperiFirmでMVNO用のイメージをダウンロード、oem.ext4を作成。
		oem.ext47-zipなどで展開、bootanimation.zipを抽出しスマホに投入。

/systemもRO2RWでRWにできるんですが、OTAに影響あったら嫌なのと(BLUや/oemだけでもありそうだけど)、ブロートウェアをアプデの度に手動でapk退避させるのも面倒なので、そこはde-bloaterに頼ろう(設定復元して一発退避)と考えてROのままにします。


Android14をnewflasherで焼けなかった話

上記から更にRO2RWなどでシステムもRWマウントできるようにしていたAndroid13ですが、弄っている間にAndroid14が配信され始めました。遅いよドコモ・・
newflasherで焼こうとしたところ、焼けませんでした。多分スキル不足。

はじめは SO-52C_NTT DoCoMo JP_65.2.B.2.112 を焼こうとしたのですが起動せず、文鎮化したかと思いました。
65.2.B.2.112、65.1.B.4.150、65.0.B.0.815のROMが手に入るので、それぞれtaを含める/含めない、userdataをwipeする/しないで焼いてみたものの、ログ上は失敗しているように見えないのですが起動せず。どうして・・・
仕方ないのでXperia Companionに泣きつきました。BLUしてるとソフトウェアを焼いてくれず詰んだかと思いましたが、relockしたら何とかなりました。

bootloaderでPCと接続
fastboot oem lock
電源断、flashモードで接続
Xperia Companion 2.20から修復
	65.2.B.2.112がインストールされた。
fastboot oem unlock 0x[Sonyから取得したコード]
fastboot reboot
通常起動、問題なし。

この後入れたアプリやMagiskモジュール等は次にします。



使用ツール

参考文献

Pixel6にEvolutionX8.3(Android14)を入れた

Pixel6をstock romでroot取って使おうと一度は思ったのですが、AOSPMODS(PixelXpert)を入れないとまともにカスタマイズできず、また古の経験からXposedはバッテリー食うような気がしてしまってあまり使いたくない気持ち。特にLSPosedとか色々入れてもインターネットタイルの分離をできなさそうだったのが一番の不満点。
ということでカスロムを導入することに。

XDAを見ると、Android 14のカスロムはEvolutionX、DerpFest、Matrixxの3種類のようだった。で、入れてみた感想。だいぶ適当。

EvolutionX(240205)

  • スレッドが伸びてて人気そう。
  • wakelockやalarmの停止ができる。
  • 2ボタンナビゲーションの挙動が変。
  • 5GHz-wifiテザリングできない?(最近気付いた)
  • 充電開始/終了のバッテリー%を設定できる(簡単なACCの機能)
  • レコーダーアプリで文字起こしできる。
  • root取ってもシステムをrwマウントできない。→RO2RWで対応できた

DerpFest(20240211)

  • クイック設定の折りたたみで5アイコンにできる。
  • 時刻の日付表示ができない。
  • 充電開始/終了のバッテリー%を設定できる(簡単なACCの機能)
  • レコーダーアプリで文字起こしできる。
  • root取るだけでシステムをrwマウントできる。

Matrixx(20240210)

  • 設定アプリの見た目が良い(上部に絵が出る。ちょっとでかいけど)
  • 無駄なGoogleアプリ少なめ
  • クイック設定の折りたたみで6アイコン(Android11スタイル?)にできる。
  • 充電開始/終了のバッテリー%を設定できる(簡単なACCの機能)
  • クイック設定のQRコードリーダーが起動しない。
  • レコーダーアプリで文字起こしできない。
  • root取るだけでシステムをrwマウントできる。

Matrixxが一番良さそうだったけど、文字起こしやQRコードリーダーが動かないのは致命的に感じるので、まぁEvolutionXでRO2RW使えば良いかな~。EvolutionXで文字起こしできないという記事を見たけど、現在は動いてます。
どれを導入しても簡単な充電制御の機能が付いていて好印象でした。もちろんインターネットタイルはいずれも分離されたものが用意されてました。
ちなみにですがファクトリーイメージを焼いた状態からGSI焼いたら挙動不審でした。wifiが繋がらなかった気がする。

ということでEvolutionXを導入すると決めて、改めてやったこと

Googleのファクトリーイメージの最新版をA,B両方に焼く(webのツールから。省略)

fastboot flash boot_a boot.img
fastboot flash boot_b boot.img
fastboot flash dtbo_a dtbo.img
fastboot flash dtbo_b dtbo.img
fastboot flash vendor_boot_a vendor_boot.img
fastboot flash vendor_boot_b vendor_boot.img

fastboot reboot recovery	#evoのリカバリが起動する
Factory reset -> Format data/factory reset	#再起動求められるがしなくてもいいかも
Apply update -> Apply from ADB
adb sideload evolution_oriole-ota-uq1a.240205.004-02072148-OFFICIAL.zip	#47%とかで止まるが正常

fastbootdに入る
fastboot --disable-verity --disable-verification flash vbmeta_a vbmeta.img	#google配布のgsi用vbmeta
fastboot --disable-verity --disable-verification flash vbmeta_b vbmeta.img
fastboot reboot

システム通常起動


magisk_v27, x-plore, そしてpayload.binから抽出したboot.imgを投入
magisk_v27でboot.imgをパッチ、PCに移す

bootloaderに入る
fastboot boot magisk_patched-27000_r01td.img	#flashはしない
magiskアプリ起動、再起動警告は無視	#無視できた気がする
直接インストール	#初期boot.imgがバックアップされる


RO2RWでシステムを書き換え可能にする (Update 03.01.2023 : Stable Beta v 3.7.2.1)
	magiskでRO2RW-StableBeta.v3.7.2.1.zipをインストール

	adb shell
	su
	RO2RW
		[Check free size]
			#なぜかRW and 0 free sizeと表示される
		[Make/Install]
		11) [enlarge each partition 250Mb]
			#容量指定、どれくらいにすればいいかわからないため250Mb拡大で。
		[Continue]
		[SKIP] #DFE patch
		[NO] #You can remove something, you want? 意味不明
		[NO] #You want to make a backup of original super? 初期superのためバックアップ不要
		[FASTBOOT/SPARSE] #RW-super.img file for fastboot
		[Force disable] #You want to force disable verification and verify.

	super-rw-sparse-fastboot-active-_a.img をPCにコピー
	bootloader起動
	fastboot flash super super-rw-sparse-fastboot-active-_a.img
	fastboot reboot

	X-ploreでシステムファイル書き換えOK!

GSIのEvolutionXを試したときに、EvolutionXではシステムパーティションを小さくするためshared blocksが有効化されている(そのためRO)という話を見つけた。
https://github.com/ahnet-69/treble_yaap/blob/13.0/Make-rw.md
RWにする方法も書いてあって、その方法でGSI版ではRWにできたけど、カスロムのsystem.img等を抽出してもe2fsckで弄ることはできなかった(スキル不足のため)。RO2RWありがとう。

導入したMagiskモジュール

退避させたシステムアプリなど(キモくないものは設定アプリから無効化する)

/apex/にあるアプリは基本的に削除不可能。ブートループする。


以下にあるapkは削除(リネーム)しても大体大丈夫。
	/product/app
	/product/priv-app
	/system/app
	/system/priv-app
	/system_ext/app
	/system_ext/priv-app
	ここにapkがあっても、読み込まれていないと思われるアプリもある。よくわからない。


リネーム退避させたもの(システムアプデしたら戻されそうなのでメモ)
	/product/app/CalendarGooglePrebuilt	#Googleカレンダー
	/product/app/GoogleContacts		#Google連絡先
	/product/app/Photos			#Googleフォト

	/product/priv-app/HotwordEnrollmentOKGoogleFUSION	#OKGoogle
	/product/priv-app/HotwordEnrollmentXGoogleFUSION	#OKGoogle
	/product/priv-app/MaestroPrebuilt	#Google Pixel Buds(Pixelブランドのイヤホン)ストアに出てきちゃう
	/product/priv-app/SafetyHubPrebuilt	#緊急連絡先
	/product/priv-app/SettingsIntelligenceGooglePrebuilt	#設定サービス、com.google.settings.intelligence
	/product/priv-app/Velvet		#Googleアプリ
	/product/priv-app/WeatherPixelPrebuilt	#天気うんちゃらかんちゃら
	/product/priv-app/WellbeingPrebuilt	#Digital Wellbeing

	/system/app/Papers			#EvolutionXの壁紙アプリ、不要だが消せもせず

ACCは不要!カスロムに組み込まれているなんて素敵な時代です。というかACCが挙動不審でよろしくない。Battery Charge Limitは良かったのに。
あとアプリクローン機能も付いてました。Island等で仕事プロファイルを作ると同じアプリ3つ設置できます。
rootが取れてカスロムも豊富なAndroidは素晴らしいねぇ、早くメイン機iPhoneを卒業したい。コンパクトなPixelさえ出ればなぁ


参考

Pixel3のIMEIを書き換えた

[GUIDE] How to change IMEI on Snapdragon devices https://gist.github.com/uragiristereo/7668e067e3b0525d6e4d4b12d9f71344

Pixel3で幸い同じデバイスだったので、ほとんどこの通り。一部通らないところがあったので変更した。
以下は自分用に和訳と要約したものだけど、間違えてるかもしれないので基本的に元のを見た方がいい。

用意するもの

  • 自己責任の心
  • BLUされたrootedなPixel3、自分のは国内版シングルSIMでビルドはSP1A.210812.016.C1 (他の似たチップセットの似たデバイスでも同様にやれるかは知らない)
  • 自分が所持しているデバイスのIMEI
  • adbやドライバ類をちゃんと入れておく
  • QFIL (githubの元ページより)
  • QCN IMEI Writer (githubの元ページより。パスワードがかかってるのでpassも控えておく)
A. EFSパーティションをバックアップ。これがstockのIMEIを含むデータ。
	TWRP起動
		adb pull /dev/block/bootdevice/by-name/modemst1
		adb pull /dev/block/bootdevice/by-name/modemst2
		adb pull /dev/block/bootdevice/by-name/fsg
		adb pull /dev/block/bootdevice/by-name/fsc



B. QCNファイルをバックアップ。
	デバイスを通常起動、diagモードに入る
		adb shell
		su
		resetprop ro.bootmode usbradio
		resetprop ro.build.type userdebug
		setprop sys.usb.config diag,diag_mdm,adb
	USBモードを変更してUSBモードをリロード
	(ここでデバイスマネージャを見てポート(COMとLPT)にスマホがあるか確認した方がいい)
	QFILのソフトウェアを起動してデバイスのCOMポートを選択
		Tools→QCN Backup Restoreを選択、stockのQCNファイルを指定
		Backup QCNを押す。



D. QCNファイル改変(先にこっち)
	diagモードに入る(B.と同じ)
	QCN IMEI Toolを起動
		Load QCNから、保存したQCNを選択
		1,2番目のフィールドが入力されてるはず。シングルSIMなら1番目だけ。
		3番目のフィールドに書き換えたいIMEIを入力。(デュアルSIMなら4番目にも?)
		Replace and export QCN、で保存。



C. EFSパーティションを初期化
	EFSパーティションをリセットしないと書き換えが成功しないため必要。
	TWRPに入る。
	EFSパーティションをリセット
		adb shell
		dd if=/dev/zero of=/dev/block/bootdevice/by-name/modemst1
		dd if=/dev/zero of=/dev/block/bootdevice/by-name/modemst2
		dd if=/dev/zero of=/dev/block/bootdevice/by-name/fsg
		dd if=/dev/zero of=/dev/block/bootdevice/by-name/fsc
		reboot

		↑これがwrite error: No space left on device.で通らない。代案。

		TWRPからfastbootを起動(bootloaderからだとエラー出た)
			fastboot erase modemst1
			fastboot erase modemst2
			fastboot erase fsg
			fastboot erase fsc


	再起動すると、電波を掴まなくなる。IMEIが空だとそうなる。「*#06#」を入力すると、004~のIMEIが見えるはず。



E. 編集したQCNファイルを書き戻す
	diagモードに入る
	QFILのソフトウェアを起動してデバイスのCOMポートを選択
		Tools→QCN Backup Restoreを選択、書き換え済みのQCNファイルを指定
		Restore QCNを押す。
	通常再起動
	IMEI書き換え完了!
stockのIMEIを書き戻したいとき
	TWRPに入る。
	windowsでEFSパーティションファイルと同じ位置でcmd起動
	以下を実行
		adb push modemst1 /tmp
		adb push modemst2 /tmp
		adb push fsg /tmp
		adb push fsc /tmp
		adb shell
		dd if=/tmp/modemst1 of=/dev/block/bootdevice/by-name/modemst1
		dd if=/tmp/modemst2 of=/dev/block/bootdevice/by-name/modemst2
		dd if=/tmp/fsg of=/dev/block/bootdevice/by-name/fsg
		dd if=/tmp/fsc of=/dev/block/bootdevice/by-name/fsc
	通常再起動
	書き戻し完了!

adb shellから/dev/zeroをddするのは失敗したのに、バックアップしたstockのmodemst1等を書き戻すときはddが成功したの、助かるけど解せん。まぁ通ればいいか。
なんとなくだけど、Nexus5Xのときに使ったQPSTのツールでもQCNファイルの読み書きはできるような気がする。2つのツールで読み出しファイルには相違があるので、ちょっと怪しいけど。
IMEI制限があるSIMを挿して、通話通信することができるのを確認。ちょろいぜ。そのうちカスロム焼く予定だけど、もしNG例などを観測したら追記します。観測したら。

参考

Google Playで OR-DVASA2-04 と出てキャリア決済を追加できない

Google Playで OR-DVASA2-04 と出てキャリア決済を追加できなかった。
結論からいうと、自分の場合の話だが、キャリア決済を短期間に何度も登録されることを防ぐGoogle側のタイムアウトであるパターンがあると思う。他のパターンもあるかもしれないけど。

試行錯誤履歴

  1. 2024/1/7 : スマホA、GoogleアカウントKに回線Wの決済を登録。成功。
  2. 2024/1/11: スマホA、GoogleアカウントKに回線Xの決済を登録、失敗。
  3. 2024/1/11: スマホA、GoogleアカウントKに回線Yの決済を登録、失敗。
  4. 2024/1/11: スマホB、GoogleアカウントKに回線Xの決済を登録、失敗。
  5. 2024/1/11: スマホB、GoogleアカウントKに回線Yの決済を登録、失敗。
  6. 2024/1/11: スマホB、GoogleアカウントKに回線Zの決済を登録、失敗。
  7. 2024/1/11: スマホB(仕事プロファイル)、GoogleアカウントLに回線Zの決済を登録、成功。
  8. 2024/1/11: スマホB(仕事プロファイル)、GoogleアカウントLに回線Xの決済を登録、失敗。
  9. 2024/1/11: スマホB(仕事プロファイル)、GoogleアカウントMに回線Xの決済を登録、成功。

ちなみに回線YはGoogle上では登録に成功したことはないものの、決済登録ありがとうございますのSMSが届いた。そのため、キャリアに登録を通した後からGoogle側で弾いている模様。
初登録が条件のキャリア決済キャンペーンを1回線(いや、2回線分か)空振りしてしまったので、いい迷惑。

Androidの仕事用プロファイルのLINEを端末間移設した(要root)

IS12M(RAZR)という2012年発売の3Gスマホが家に転がっておりまして、LineageOS 14.1(Android 7)が入っており、仕事用プロファイルにLINEが入っていたのですが。
起動し動作はするものの、バッテリーは妊娠済、画面はOLED特有の焼付き、恐ろしいほどのモッサリ感、画面をタッチしてもタッチしていない箇所が反応するなど、地獄のような有様となっていたので、移設することにしました。

とはいえ大抵のデータの移設はちょろいもんで、一番大変だったのはLINE、それも仕事用プロファイルで入れたサブのLINEのデータでした。
電話番号も解約済のもので昔取った物だったので、再ログインすることはできず。使っていないアカウントだったので別に消してもよかったのですけど、勉強がてら移設することに。
もちろん要root。

LINEの移設先はUbuntu Touchを入れていたNexus 5にしました。こっちもかなり古いですが、IS12Mよりは相当マシです。Quadrantというベンチマークで10倍ほど性能差があるようです。
わざわざUbuntu Touchまで入れたものの、もう使わなくなっていたので、コイツでいいや。

移設前IS12M(Nougat)での作業

  • LINEのデータの回収

    メインのプロファイルのLINEはTitanium Backupがぶっちゃけ楽なのですが、仕事用のサブのLINEはTitaniumを使えません。その上現行のTitanium BackupがAndroid13非対応と考えられ、13だとメインプロファイルでも復元後起動しませんでした。
    ということでファイラー(X-plore)で開いてzipで固めてUSBメモリやNWドライブ等へ回収します。回収したものを新スマホパーミッション等修正すると起動できるようになります。
    パスは、
    メイン: /data/data/jp.naver.line.android
    仕事用: /data/user/10/jp.naver.line.android

  • Android IDの確認

    LINEの移設には /data/data/jp.naver.line.android (あるいはその類のディレクトリ)のデータを移設した上でAndroid IDを合わせる必要があるので、元のスマホAndroid IDは確認する必要があります。
    ということで com.appzdevelopers.anddevinfof のアプリで通常と仕事用プロファイルの両方のAndroid ID(16桁の16進数)を確認しておきます。アプリのapkは適当にネットで拾いました。
    なおNougatまではファクトリーリセット毎に共通のものが1つ付与され、Oreo以降はアプリ毎に付与されるらしいです。もちろんプロファイル別。

    ちなみにMigrateというアプリで仕事用ユーザーのデータを移設できるという情報も得たのですが、私ではIS12MにMagiskはおろかSuperSUすら入れられなかったので断念しました。lineageosのaddonsuを入れてしまったからかもしれない。addonsu-removeも試したんですけどね・・
    また、Android IDはかつてはTitaniumでストレージの設定からバックアップ取れたらしいですが、Oreo以降はアプリ毎に付与ということなので、8以降はおそらくTitaniumで復元できないんだろうなぁ・・というより、できなくて色々調べる羽目になりました。

移設先Nexus 5の用意

Nexus 5の状況

  • バッテリー妊娠

    開封しピンセットでバッテリーの表面だけに穴を開けてガス抜き、テープで封。もちろん自己責任。開封時にやらかしたのかモバイルネットワークだけ挙動不審になってしまったけど、まぁNexus5くんにはSIM挿さないしOKです。

  • Ubuntu TouchをAndroidに戻す

    Ubuntu TouchからAndroidに戻すには、fastbootからGoogleのファクトリーイメージをflash-allするだけ。userdataがどうこうとエラー吐いた気がしましたが、待っていたら普通に起動しました。NGだったらzip内ファイルを手動でflashすれば良い・・らしいです。

  • TWRP

    以下の新しいverのカスROM導入には/systemの容量を増やさないといけないらしく、xdaの改造版(twrp-3.7.0_9-HH.R.17.img)を利用。

  • ROM

    xdaに非公式LineageOSがver20(Android 13)まで豊富に用意されていたので、新しい方から順に試行。したところ、Android13で何とかなったので13で。正直10くらいのインターフェースが気に入っている。

LINE移設先(Nexus5)での作業

  1. TWRPを焼く

    fastboot flash recovery twrp-3.7.0_9-HH.R.17.img
    TWRP起動後、/system パーティションを広げるためにAdvanced > Terminalから"hh_repart -m"を実行。TWRPの配布フォーラムに詳細あり

  2. USBメモリに以下を用意
    • 各LineageOSのROM。今回は lineage-20.0-20230511-UNOFFICIAL-hammerhead-signed.zip
    • 各LOSの推奨Gapps。今回は BiTGApps-arm-13.0.0-v2.0-CORE.zip
    • Magisk_26.1.zip (最新)
    • IS12MのLINEのデータ (jp.naver.line.androidのzip)
  3. LOSとMagiskを焼く
    1. TWRPを起動してUSBメモリ接続、USB-OTGをMount
    2. Format Data含めて全てWipe
    3. LOSイメージをInstall
    4. 直後にGappsをInstall
    5. 一度システム起動、初期設定したらTWRPへ再起動
    6. LINEのデータのzipを内部ストレージ(/sdcard)にコピー
    7. Magiskをインストール。初回起動前にインストールしても入らないっぽい(or認識遅い?)
    8. システム起動して、MagiskアプリからMagiskを再導入(直接インストール)。要ネットワーク
    9. システム再起動
    10. Google PlayにログインしてLINE、Island、X-ploreをインストール
  4. LINEのデータを移設する
    1. メインと仕事用のLINEをそれぞれ正常起動させる。(Android IDの項目の生成)
    2. LINE終了、設定から各LINEのストレージを消去。
    3. X-ploreでAndroid IDが生成されているのを確認する。

      メイン: /data/system/users/0/settings_ssaid.xml
      仕事用: /data/system/users/10/settings_ssaid.xml

    4. LINEのデータを復元する。

      jp.naver.line.android のzipファイル2つをそれぞれのプロファイルの位置に展開する。まだLINEは起動しないこと。
      メイン: /data/data/jp.naver.line.android
      仕事用: /data/user/10/jp.naver.line.android
      アプリデータがそこになかったら /data_mirror/null にあるかも?
      Android12以下の場合はメインプロファイルはTitanium Backupの方が以下の作業不要で楽。

    5. 再起動しTWRPへ。
    6. Android ID(SSAID)を書き換える

      Advanced > File Managerで上記の settings_ssaid.xml をEditし、jp.naver.line.androidの項目のvalueとdefaultValueの値を、旧スマホAndroid IDに書き換える。
      エディタの機能なのか勝手に改行されるけど修正する。もしかしたらX-plore上で編集したファイルを/sdcardにでも保存して、TWRP上で上書きすれば十分かもしれないけど試してない。
      Android上で編集すると再起動で元の値に上書きされるので、TWRPで作業した方がいい。

    7. LINEのデータのパーミッションを書き換える

      Advanced > Terminal でターミナル起動

      cd /data/data		#メインプロファイル
      ls -l			#owner確認。"u0_a123"みたいになってる
      cd jp.naver.line.android
      chown -R u0_a123:u0_a123 *	#グループと所有者をu0_a~~~にする。u0_a123は確認したものに適宜変更
      chmod -R 771 *			#アクセス権限を全て771にする。700とか660とか色々なファイルあったけど、全て771で動いたのでヨシ
      
      cd /data/user/10	#仕事用プロファイル
      ls -l			#owner確認。"u10_a123"みたいになってる
      cd jp.naver.line.android
      chown -R u10_a123:u10_a123 *	#グループと所有者をu10_a~~~にする。u10_a123は確認したものに適宜変更
      chmod -R 771 *			#アクセス権限を全て771にする。700とか660とか色々なファイルあったけど、全て771で動いたのでヨシ
    8. システム起動、X-ploreでAndroid IDやパーミッション等が書き換わっているかチェック。Androidから見ると所有者が数字に変更されていますが、グループが書き換わっているので大丈夫かも。
    9. LINE起動、成功したらかつてのトークが表示される。された
    10. 成功確認したらTWRPに入って丸ごとバックアップ!

[APP][ROOT][5.0+][1st Nov 2020] Migrate - custom ROM migration tool | XDA Forums

マルチユーザー対応のsuアプリが使えてMigrateが使えたら、Migrateの方がお手軽なんだろうなぁとは思います。

Androidのこと何もわからないですが、とりあえずメイン/仕事用プロファイルの2つのLINEを再ログインすることなく移設出来たので、一般人的には達成感あり。
IS12M、さすがに性能がなさすぎて何にも使えませんし、どうしましょう・・捨てるしかねえ。


参考文献