OnePlusスマートフォンでは日本キャリア向けのVoLTEが有効になりませんが、Magiskモジュールで簡単に維持できるようにしてみました。
アップデート後もVoLTEを維持
OnePlusはまだ日本に進出していないため、OPPO / realmeブランドのスマートフォンとは違って日本のキャリアではVoLTEが有効になりません。
未発売の地域で有効にならないのは当然のことなのでこれでOnePlusを責めるのは筋違いというものですが、実際に使う上ではVoLTEが有効でないとデータ通信すらできないSIMもあるため死活問題です。
そのためこれまではFTM・PDCやEFSToolsなどを使って強制的にVoLTEを有効化していました。
OnePlus 8Tを非rootでVoLTE有効化する方法。Android 11のFactory Test Modeを使用 – AndroPlus
OnePlus 9 Proレビュー。広角でも綺麗なHasselbladカメラに最短29分で満充電の有線/無線充電も – AndroPlus
ただ、この方法だとアップデートがある度にPC上で操作をしないといけないので面倒です。
そこで、VoLTEを有効化・維持するMagiskモジュールを作成してみました。
【追記】OxygenOS 12・13以降ではColorOS化の影響でファイルパスなどが変更されているため、こちらの汎用VoLTE有効化モジュールを使ってください。
念のため、インストール前に
adb shell
su
dd if=/dev/block/bootdevice/by-name/modem_a of=/sdcard/modem_a.img
dd if=/dev/block/bootdevice/by-name/modem_b of=/sdcard/modem_b.img
dd if=/dev/block/bootdevice/by-name/modemst1 of=/sdcard/modemst1.img
dd if=/dev/block/bootdevice/by-name/modemst2 of=/sdcard/modemst2.img
dd if=/dev/block/bootdevice/by-name/fsc of=/sdcard/fsc.img
dd if=/dev/block/bootdevice/by-name/fsg of=/sdcard/fsg.img
でモデム関係のパーティションをバックアップしておいてください。(もしくはこちらのコマンドで全パーティションバックアップ)
特にmodemst、fsc、fsgはEFSと呼ばれるものでIMEIなどの情報が入っており端末固有のため、万が一壊れた時バックアップがないと復元が難しくなります。
リストアの際はコマンドのifとofのパスを逆にすれば書き込めます。たまに書き込みに失敗することがあるようなので、sha1sum /dev/block/bootdevice/by-name/modemst1
などでバックアップしたimgと書き込み先のハッシュ値が一致するか確認してください。
次にmagisk-module-oneplus-mbn.zipをダウンロードして、Magiskアプリでインストールして再起動してください。
これだけでVoLTEプロファイルがモデムファームウェア内に追加されるため、今後はPCでの面倒な操作は一切不要でVoLTE通話が可能となります。
もちろんアップデートした後も、このMagiskモジュールが有効化されていればそのまま維持されます。
インストール後、有効化せずに放置しておくと何らかのタイミングでVoLTEが無効になってしまうようなので注意してください。
Android 11のOnePlus 9 Pro、OnePlus 8Tにて動作確認しています。
Y! mobileやSoftBank、LINEMOといったSoftBank系の回線、楽天モバイルなどでVoLTE通話できることを確認済みです。SIMを持っていないので確認できませんが、IIJmioやOCN モバイル ONEなどdocomo・au回線でも問題ないと思います。
OPPOの協力を得ることで今後のアップデートサイクルも早まるでしょうし、Bootloader Unlock・root化済みの方はこれで面倒くさい作業から解放されて気兼ねなくアップデートできるようになります。
非root環境の方は…これまで通り頑張ってください。
日本進出済みのOPPOで利用されているColorOSと統合されたことで、OxygenOS 12からは日本キャリアのVoLTEもデフォルトで有効化されるようになりました。