2015年2月3日火曜日

MVNOでドコモから逃げる算段をする(GPS篇)

10年以上ドコモを使ってきたけど、スマートフォンからは迷走が続いてるような気がする。
それ以前は護送船団方式を取らないと自分たちの実現したいサービスを均一に保てないのは当然だったと思うけど、今のスマートフォン戦略は色んな意味で私の望む方向性とは違う。

  • 昔のメーカ製PCじゃないんだからプリインアプリをてんこ盛りにしないで欲しい(しかもバッテリドレインやメモリ大量消費・バグ満載のオマケ付き)。
    特にドコモ専用のホームアプリは不要だと思う。
  • キャリア販売店の保障は要らない。端末メーカからのハードウェア保障は欲しい。
    自分のように端末を弄りたい人間にとってはドコモの端末保障は不要。
    (わかってやっているのだから逃げ道まで塞がないで欲しい)
  • インフラ整備は確かに投資が厳しいのは非常によく分かるのだが、今の料金体系は正直高過ぎと感じる。
    家族3人分で新しいカケホーダイ+パケットシェアパックの見積もりを取ったが、現状より月9千円高くなった(そのうち2台分はパケットを使用していない契約からシェアパックに切替なので高くなるのはわかるとしても)。
というわけで、今まではお世話になったり我慢して使ってきたけど、MVNOという便利な仕組みが出来てキャリアの縛りは不要になってきたので、現状使用しているSO-02Eをそのまま移行する場合はどのようなデメリットが出るかをざっと考えてみた。
あ、あえて言うけど他のキャリア2社との契約はありえない。ドコモと同じく端末の縛りがあるのが一番の理由だけどそれ以外も以下の通り。
  • KDDI:CDMA-Oneの頃の交換網接続にかかる時間が遅過ぎのイメージがあったり、結局万年2位の染み付いたようなプロモのやり方(様子見後追いで同様のサービスを派手に盛り上げようとする態度)が嫌い
  • ソフトバンク:商売は上手だと思うけど、企業倫理的に気に食わない。ゴリ押しと必要性で900MHz帯域を整備出来たのはいいけど、その皺寄せを保守受託先や施工会社に押し付けたのは知ってるぞ。
それにドコモのスマホなのでMVNOで他社キャリアへ乗り換えても電波的にメリットはないから、自ずとドコモ系のMVNOとなる。という訳で以下でMVNO化してサービスが低下しそうな項目を挙げてみた。
  • 電子メール:キャリア独自のものは使えない。もともとそんなに使っていなかったので問題なし。
  • ネットワーク速度:現状はXiのパケホーダイダブルのため、普段はモバイルネットワーク常時無効であった。MVNO化してパケットが使えるのならば通信速度が落ちてもサービスは向上したので問題なし。
  • Felica:ひとつの問題点。ドコモのサービスに直結しているものはどうしようもないだろう(iDとかは使ってないので問題なし)。
    Suicaとかはドコモのサーバとは関係なく独立しているようなので動くようだ。
    正直交通系のうち、使いそうなのは航空会社のモノだけだし、普段は使わないので実害はなさそうだ。
  • GPS:今回の最大の問題点。とは言っても全く使えなくなるわけではない。ColdStartの時に非常に現在値表示までに時間を要するだけ。
という訳で今回はMVNOで問題となっているGPSの件、どうやったら解決できるか考察してみた。

1)問題となるGPSの接続について

 GPSを使用する場合、衛星からすぐに情報自体は受信しているのですが、それが位置情報となるには手順を踏む必要があるようです。
 初期化状態で受信する際はColdStartと言われる手順で衛星の位置情報を収集する必要があります。
 一度位置情報を確立したあとでは、WarmStartHotStartという手順で再測位を高速化可能なのですが、要はColdStart時に出来るだけ測位を早くする仕組みが(A-GPS)現在のスマホは内蔵されています。方法は以下の2種類あるようです。
  • SUPL 通信キャリアが提供するSUPLサーバより補正情報を受信する
  • GPSチップ独自規格 SUPLを使用出来ない環境でも同様のサービスを提供する
 ただし、ドコモのスマホ内部設定ではSUPLにドコモのサーバを指定しその接続にはSPモード(ドコモ内部の通信網)を使用するため、MVNOに移行した端末(普段モバイルネットワークを無効にした端末も)はColdStart時の接続確立に非常に時間がかかります。
 ちなみにSO-02EにはGPSチップ独自規格としてQualcommのgpsOneXTRAが使用できるようですが、これもGPSチップドライバのハードコードで機能自体を無効化されているようです。
 ちなみにMVNOによるGPSの動作に関する詳細はこちらを読むと非常にわかりやすい。MVNOの代表格とも言えるIIJの方が検証した内容なので非常によくまとまっているし、信頼度は高いです。

という訳で以下の通り修正が必要なようです。

2)アプリで何とかする方法

先に紹介したIIJの資料によるとGPS Status and Toolbox を使用すると、直接GPSデバイスドライバへAPIを叩いてA-GPSデータを取得するようです(多分この場合はSO-02Eの場合はgpsOneXTRAのサーバへ問い合わせするのでは?)。
 たしかにこの方法ならインターネット接続さえされていればA-GPS情報を取得可能でしょうし、測位終了後別なアプリを開けばスムーズに使えると思います。
 実際このアプリは常用させて頂いております。現在補足中の衛星を全部表示してくれるため非常に見やすいし、自分の場合はモバイルネットワークを常時切りのためSUPLは取得出来なかったので...。

3)gps.confの書換とルート証明書のインストール

 /system/etc/gps.conf がGPSの設定ファイルです。現状のドコモのスマホの場合は大概以下のとおり記載されているので、これを書換えます(要はSUPLはGoogleのサーバを使用し、gpsOneXTRAの設定を有効化、NTPサーバを日本に変更する)。
変更前(対象箇所のみ抜粋)
SUPL_HOST=dcm-supl.com
SUPL_PORT=7275
SUPL_VER=0x20000

#XTRA_SERVER_1=http://xtra1.gpsonextra.net/xtra.bin
#XTRA_SERVER_2=http://xtra2.gpsonextra.net/xtra.bin
#XTRA_SERVER_3=http://xtra3.gpsonextra.net/xtra.bin

NTP_SERVER=time.gpsonextra.net
変更後
SUPL_HOST=supl.google.com
SUPL_PORT=7276
SUPL_SECURE_PORT=7278
SUPL_NO_SECURE_PORT=3425
SUPL_TLS_CERT=/etc/SuplRootCert

AGPS=http://xtra1.gpsonextra.net/xtra.bin
XTRA_SERVER_1=http://xtra1.gpsonextra.net/xtra.bin
XTRA_SERVER_2=http://xtra2.gpsonextra.net/xtra.bin
XTRA_SERVER_3=http://xtra3.gpsonextra.net/xtra.bin

NTP_SERVER=ntp.nict.jp
NTP_SERVER=jp.pool.ntp.org
NTP_SERVER=0.jp.pool.ntp.org
NTP_SERVER=1.jp.pool.ntp.org
NTP_SERVER=2.jp.pool.ntp.org
NTP_SERVER=3.jp.pool.ntp.org
次に以下のサイトを参考にHTTPSでSUPLを接続する際のSSLルート証明書SuplRootCertを作成します。これは自分のPCの内部でコマンドを実行し、作成します。
wget https://www.geotrust.com/resources/root_certificates/certificates/GeoTrust_Global_CA.pem
openssl x509 -inform PEM -in GeoTrust_Global_CA.pem -outform DER -out SuplRootCert
作成・修正したgps.confとSuplRootCertは実機の/system/etcに複写します。念のため、元のgps.confのバックアップは保存して下さい。

4)ドコモ版ではないGPSドライバをインストール

海外版のC6603のftfファイルをダウンロード後、system.sinを抜き出してその中から/system/lib/hw/gps.default.soを取り出します(ここで前日に書いたftfファイルへのアクセス方法が必要になる)。
 あとは自分の端末の/system/lib/hw/gps.default.soと抽出したものを取り替える。


0 件のコメント:

コメントを投稿