格安SIM(MVNO)を使用していると、GPSの測位が極端に遅くなることがあります。特にNTTドコモなどのキャリアが販売するスマートフォンで発生することが多く、地図などの位置情報を利用したアプリで長い時間で現在地の特定ができない場合があります。
測位ができない原因
Xperiaシリーズを始めとしたスマートフォンでは、現在地の特定に “GPS” に加えてA-GPSと呼ばれるアシスト機能を搭載しています。このアシスト機能を正常に動作させるには、2つの条件をクリアする必要があります。
参考 スマホの “位置情報” を設定する方法
音声回線が使える
A-GPSは、携帯電話の音声回線を介して位置情報の測位をサポートするので、必須条件として “音声対応SIM” または “SMS対応データ通信SIM” が必要です。
そのため、SMS無しのデータ通信専用SIMを使っていない限りは問題はありません。仮に使っていても契約変更などを行ってSIMカードを交換するだけで解決することができます。
A-GPSサーバーにアクセスできる
A-GPSを利用するためには、音声回線のほかにA-GPSサーバーへアクセスできる必要があります。しかし、NTTドコモなどが販売するスマートフォンではSPモード接続しか許可しないA-GPSサーバー “dcm-supl.com” が用意されており、格安SIM(MVNO)などでは利用できません。
ですが、逆に言えばSPモード以外でもA-GPSが動作するように修正すれば、A-GPSが使えるようになりGPSの測位ができるようになります。
A-GPSサーバーに接続するには?
A-GPSには “gpsOneXTRA” と“supl” の2種類の方法があります、gpsOneXTRAの修正にはドライバの更新が必要となってしまうため困難ですが、suplでは設定ファイル “gps.conf” に記載されたA-GPSサーバーの接続先を変えるだけです。
どちらの方式が使われているかは機種によって異なりますが、Android4.4以上であれば “supl” が使われていることが多いようなので、A-GPSサーバーの接続先を変えるだけでGPSの測位スピードを改善させることができます。
接続可能なA-GPSサーバーは?
SIMフリー版のXperiaシリーズを見てみると “supl.sonyericsson.com” と言うサーバーが設定されており、格安SIM(MVNO)からでもアクセスすることができます。また、Googleが用意しているサーバ “supl.google.com” へアクセスしている他の機種もありますが、Xperiaの場合にはSIMフリー版と同じサーバーを使うのがベストでしょう。
接続先を変更するやり方
変更する方法は2つあり、1つは「AngryGPS」と呼ばれるアプリで変更します。これは、A-GPSのサーバーを変更できるアプリです。もう一つは、直接に設定ファイルを書き換える方法です。
アプリで変更する【root化不要】
- XDAの[CM7][OMFGB]Software GPS Fix | V1.5.1 – 9/25/11 | Keep the (GPS) lights on!より “Vibrant_CM7_GPSFix_V1.5.1-Script.zip” をダウンロード・展開(解凍)し『AngryGPSmod.apk』をインストールします。
- AngryGPSより『Settings』をタップします。
- Settingsより『General Settings』をタップします。
- General Settingsの “Operation Mode” を『MSBASED』に変更します。
“STANDALONE” はGPSのみ、“MSBASED” はGPS補助情報を使用(本体)、“MSASSISTED” はGPS補助情報を使用(サーバー)、“NETWORK PROVIDER” は補助情報や基地局のみ(GPSなし)を意味しています。
- Settingsより『SUPL Settings』をタップします。
- SUPL Settingsより以下の項目を変更します。
Server supl.google.com Server Port 7276 Server Type 1X PDE AGPS Mode CP+UP SSL Type Google Server
AngryGPSを使うやり方は以上です。
残念ながら “AngryGPS” は機種を選ぶようでgalaxyシリーズなどでは成功例を見聞きしますが、機種によっては「設定が保存されない」「設定が反映されない」と言ったことが起こります。この場合には、設定ファイル “gps.conf” を直接書き換える必要があります。
gps.confを書き換える【要root化】
必要なファイル
- 書き換え対象の本体環境に似たSIMフリー版のFTFファイル(今回はD5833_23.2.A.1.62 R8C_CUSTOMIZED HK.ftfを使用)
- twrp-gps-conf-updater-skeleton.zip※カスタムリカバリ(CWMやTWRPなど)から更新するためのzipファイルで中身の入っていないスケルトンです。
作業
- 海外版(グローバル版)のFTFファイルから設定ファイル『/system/etc/gps.conf』を取り出します。
参考 7-Zipを使ってFTFの.sinファイルから中身を取り出す方法
- “NTP_SERVER” を信頼できる日本のサーバに変更します。【任意】
#NTP_SERVER=time.gpsonextra.net NTP_SERVER=ntp.nict.jp NTP_SERVER=ntp-a1.nict.go.jp NTP_SERVER=ntp-b1.nict.go.jp
“#” とは、「この行は無視する」と言う意味です。 - zipファイルを解凍し『system/etc』ディレクトリに『gps.conf』を配置して再圧縮します。
圧縮する対象は「wrp-gps-conf-updater-skeleton」フォルダの中にあるファイル・フォルダ(META-INF、system)を全選択して圧縮してください。
- 圧縮したzipファイルをスマートフォンの内部ストレージに保存し、カスタムリカバリ(CWMやTWRPなど)からインストール(更新)します。
格安SIM(MVNO)でGPSの測位ができない問題の解決は以上です。
所感
gps.confの書き換えは効果抜群で、位置情報サービスを起動してから位置特定までの時間が “数分” から “数秒” へ短縮されました。しかし、「root化できない」や「よくわからない!」と言う場合には、非常に困難な作業なってしまうのが難点です。
ただ、A-GPSが使用できなくても「GPSが使えない」と言う訳では無く「測位に時間がかかっている」だけなので、5~10分程度待っていればGPSの測位が完了し位置の特定ができます。そのため、GPSを常に測位しておけば、ある程度の時間短縮には繋がるでしょう。
参考 GPS常時測位 – Google Play の Android アプリ
また、そもそもがキャリア向けに販売されているスマートフォンを利用するのが問題なので、国内向けに販売されているSIMフリースマートフォンを利用するのが一番簡単でしょう。