最近、MVNOやキャリアのSIMで、稀に LTE をなかなか掴まず 3G のままになったり、そもそも3Gの電波すら掴まなくなって困っていたのですが、ある設定で解決できたのでメモしておきます。
APN 設定を触るので自己責任にはなりますが、困っている人は参考にしてください。
現在のところ、Android 5.0 / 5.1 / 6.0 の幅広い機種でこの症状が確認されていますが、今回の方法で症状が改善した方は、機種名とキャリア・MVNO名、Android のバージョンをTwitterかコメント欄に流していただけると助かります。※2015/11/6 Android 6.0 / Nexus 6P でも症状が出ることが判明したので反映※2015/4/27 情報最新化。MVNOだけでなく、ドコモなどのキャリアSIM+SIMフリー機でも発生する可能性がある件などを反映。大幅更新と告知のため新記事扱い。
僕が困っていた症状は以下の2つ。
症状が出るタイミングは、Wi-Fi → LTE/3G への切り換え時や、電源投入時が多かったですが、それ以外のタイミングでもなった事があります。
この他、症状「1」が発生 → いったん接続先APNを切り替えて戻せばすぐに繋がる→でも症状「2」が出ちゃう。というパターンもあったりと、けっこう複雑だったような。
簡単にまとめると、「3G/LTE接続に時間がかかる」とか、「LTEを安定して掴んでくれない」という感じと思います。
また、関係あるかどうか分かりませんが、この症状が出ていたときは、標準電話アプリで電話を発信しても、ダイヤル後すぐに終話してしまう。という謎の症状も出ていた気がします。
で、色々調べたり試したところ、最終的には、
「不要なAPN設定をすべて削除」
すれば、確実にLTE接続できるようになりました。
(余談ですが、僕の環境では、今回の設定と、/cache のフォーマットで、スリープ時のバッテリ消費異常問題はほぼ改善しました(@Nexus 5 / Android 5.0,5.1。詳細は後述))
不要なAPNを削除する手順は以下のとおり。
※すべてのケースで今回の方法が効くとは限りません。また、APN 変更作業は自己責任でお願いします。特に、キャリアSIMを挿す可能性のある端末では、思わぬ高額料金が発生する原因となる可能性があります。
まずは、Android の設定→「その他の設定」または「もっと見る」→「モバイルネットワーク」→「アクセスポイント名」を開きます。
下の画面で、削除するAPN設定を開きます。
右上のメニューをタップ。
「APNを削除」をタップ。
使う可能性のある MVNO の APN だけを残し、他をすべて削除します。
また、Lollipop 以降に内在するバグを避ける目的で、APNプロトコルには「IPv6」や「IPv4/IPv6」ではなく、「IPv4」を指定するのが良いです。
設定は以上です。
ちなみにこの画面で、メニュー→「初期設定にリセット」をタップすれば、APN リストを初期状態に戻せます。
ただし、リセットしても自分で登録した APN は復活しません。また、OS アップデート前から引き継いだAPNも、現バージョンのOSのデフォルトAPNリストに書き換わるので、APN は自己責任で管理願います。
今回の症状については、MVNO事業者である IIJ さんの調査結果や、当サイトにお寄せいただいた情報などから、MVNOやキャリア側の問題というよりも、Android 5.0 / 5.1(Lollipop) / 6.0(marshmallow)が抱えている LTE初期接続シーケンスが内在する問題であろう、ということが分かっています。
このあたりの詳細については IIJmio meeting 7 で詳しく報告されているので、(かなり難しい内容ですが)興味のある方はご参照ください。
と、ここで今回の症状に関連する Android 共通の挙動について軽く触れておきましょう。
少なくとも国内では、という前提にはなりますが、Android のシステム視点で見たとき、SIM カードから取得できる情報だけではドコモや au などのいわゆる MNO と、NTT Com や IIJmio のような MVNO の違いを判別することはできない。という技術的制約がまずあります。
これは例えば IIJmio のSIM とドコモSIMとの区別が付かない、という事ですので、APN リストに存在しているのであれば、IIJmio のSIM が挿さっていたとしてもドコモSPモードのAPN にも認証しにいく仕様になっているのです。
専門用語を交えて今回の問題を解説させていただくと、Android では、SIM カードから取得した MCC / MNC(通信事業者識別コード) と合致する APN 設定リストに順次、認証をチャレンジしにいくわけですが、LTE 初期接続シーケンスの処理にバグ、ないしクセが内在しており、そのせいでAPNサーチ問題が発生している、ということのようです。
実際にNexus 系デバイスなどのSIMフリー機で今回の「不要なAPN設定を削除」して以来、LTE/3G接続時のスリープ電力消費が「気のせいではないくらいに減った」のを見ても、なんとなーく、不要な APN 設定が入っている状態で MVNO SIM を使うと、Android 5.0/5.1 / 6.0 側のバグだかクセだかを踏んでるんだろうなー。と感覚的にも予想できる部分だったり。
なお、現在、症状が報告されている端末・環境については、コメント欄をご確認ください。
情報によると、Android 5.x系、6.0のSIMフリー機+ドコモ系MVNOでの症状報告が多く、その範囲であれば MVNO 間での差は無いようです。
また、APNリストの並び順によっては MVNO だけでなく、SIMフリー機+ドコモSIMでも同症状が出る。との情報も把握しています。
MVNOであれMNOであれ、無線区間にドコモ設備を共通利用している事に変わりは無いわけですから、Android 側のバグ、という事であれば、MVNO・MNOに関係なく症状が出ても不思議はありません。
ただ、通常、キャリアのAPNはAPNリストの上位に登録されているため、顕在化しにくい。という事情はあるかもしれません。
各MVNOはMNOの無線区間について感知できず、ユーザーが今LTE/3Gのどちらで接続しているのかすら判別できない立場であることから、今回の問題はMVNO単独では調査しづらい問題なのではないか、と考えていましたが、この問題に果敢に挑戦され、成果を出された IIJmio の技術陣の方には経緯を表します。
一方で、とりあえず今回の症状については対処方法があったので良かったですが、端末メーカーやGoogle、また、MNOの無線区間に対するMVNOの発言力が限られている現状においては、色々と政治的・技術的限界もある。という部分は意識しておいた方が、MVNO を利用するユーザーとしても幸せなのではないか、とは思ったり。
なお、当サイトでは、2015年1月13日には今回の症状に対する技術的回避方法を解説しておりました。
関連情報:
検索用キーワード:APNサーチ問題、ZenFone 2, Nexus 6P, Nexus 5