PC関連のチラ裏

自分用(素人)

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例などを観測したら追記します。観測したら。

参考