44
1 IIJmio mtg #5 MVNOGPSについて 株式会社インターネットイニシアティブ

IIJmio meeting 5 MVNOとGPSについて

Embed Size (px)

DESCRIPTION

この資料はIIJmio meeting 5で発表されたものです。詳細は下記blogをご覧下さい。 http://techlog.iij.ad.jp/archives/1293

Citation preview

Page 1: IIJmio meeting 5 MVNOとGPSについて

1

IIJmio mtg #5

MVNOとGPSについて

株式会社インターネットイニシアティブ

Page 2: IIJmio meeting 5 MVNOとGPSについて

2

•名前大内 宗徳

•所属ネットワーク本部 ネットーワークサービス部 技術開発課

•経歴2002年 IIJ 入社。以降、研究開発部門に所属

•業務内容ネットワークサービス全般の技術調査、機器の動作検証、研究開発

インターネット関連の技術調査、コアルータやスイッチ等機器の動作検証、ツール開発モバイル関連の技術調査、機器の動作検証、ツール開発社内エンジニアの後方支援

最近はモバイルの端末挙動調査からコアネットワーク設備まで色々やっています!

自己紹介/初めてなので

Page 3: IIJmio meeting 5 MVNOとGPSについて

3

MVNOのGPSについて

•ネット上ではMVNOとGPSについて情報があふれています•ただし、古い情報や正しくない情報も散見されます•次の2つ問題に焦点をあてて解説していきます

1. MVNOではGPSが使えない?2. MVNOでGPSの位置情報取得を高速にできるのか?

Page 4: IIJmio meeting 5 MVNOとGPSについて

4

•端末のGPS機能は使うことは出来ます!できるはずです

-> ただし、端末によってGPSの位置情報取得にかなり時間がかかる場合がある(白ロム端末だと顕著になる場合も)

-> MVNOだとGPSが使えない、という誤解に

•この原因を理解するために下記の2つを解説• Android端末の位置情報取得• GPSとA-GPSの仕組みについて解説

1.MVNOではGPSが使えない?

Page 5: IIJmio meeting 5 MVNOとGPSについて

5

(注1)運が良ければこの精度で(注2)GPSを直近で使っていれば、暫くの間は早く取得可能(注3)Android 4.4以降では改善されているらしい。LG G2 mini(4.4.2)で確認

無線LAN MNOの基地局情報 GPS

位置特定に利用する情報

BSSID Cell ID 衛星の信号

位置情報精度 数十~百m(注1)

数百m~数km(注1)

数m

位置取得の時間 早い 早い 遅い(注2)

無線LANをON 必要 不要 不要

Googleサーバへの到達性

必要 必要 不要

音声 or SMS契約 必要なし 必要(注3) 不要

Android端末での位置情報取得

Page 6: IIJmio meeting 5 MVNOとGPSについて

6

Android端末での位置情報取得/Google MAP

• 飯田橋のIIJ本社で試した結果• 端末 SO-03D で、MVNO SIM利用• 大体の位置ならば無線LANでもOK。GPSは時間がかかる

無線LAN 基地局 GPS

Page 7: IIJmio meeting 5 MVNOとGPSについて

7

GPSについて

•ただし、正確な位置把握のためにはGPSが必要-> 本題のGPSの話題に

•GPS概要については省略•GPSによる位置情報の取得は仕組み的に時間が掛かる•この仕組みをもう少し掘り下げて説明

Page 8: IIJmio meeting 5 MVNOとGPSについて

8

GPSで位置情報を取得する手順

•手順の概略1. 端末がGPS衛星からの信号サーチして見つける2. 衛星から信号に含まれるナビゲーションメッセージ得る

GPS時刻/エフェメリス/アルマナック/補正情報3. 衛星からの信号の到達時間を調べる4. 衛星の位置と信号の到達時間、各種補正情報をもとに端末の位置を計算5. この時点で端末の大体の位置がわかる

6. 衛星と端末の関係から最適な衛星を割り出して、最適な衛星からの信号を利用して位置情報を逐次更新

(補足) 1、2の処理は時間がかかる。3,4の処理は短時間で完了エフェメリス: 衛星の詳細な位置情報アルマナック: 衛星の概略の位置情報

Page 9: IIJmio meeting 5 MVNOとGPSについて

9

Time To First Fix(TTFF)

•GPS端末が初期の位置情報取得までにかかる時間• GPS端末の位置情報を取得する性能指標として用いられる• 参考: SiRF StarIII™

http://hyperlogos.org/files/GSC3%28f%29_6.20.05.pdf

•おおまかに分けて3つの状態で値が示されている•Cold Start

GPS衛星に関する情報を何も持ってない状態30秒~数分かかる

•Warm StartGPS時刻、アルマナック、過去に計算済の位置情報を持つ状態30秒~1分

•Hot Start2-3時間以内のエフェメリス、計算済の位置情報を持つ状態数秒以内

Page 10: IIJmio meeting 5 MVNOとGPSについて

10

Cold Startとの関係

•手順の概略1. 端末がGPS衛星からの信号サーチして見つける2. 衛星から信号に含まれるナビゲーションメッセージ得る

GPS時刻/エフェメリス/アルマナック/補正情報3. 衛星からの信号の到達時間を調べる4. 衛星の位置と信号の到達時間、各種補正情報をもとに端末の位置を計算5. この時点で端末の大体の位置がわかる

6. 衛星と端末の関係から最適な衛星を割り出して、最適な衛星からの信号を利用して位置情報を逐次更新

1-5のすべての処理を行うため時間がかかる!

Page 11: IIJmio meeting 5 MVNOとGPSについて

11

Warm Startとの関係

•手順の概略1. 端末がGPS衛星からの信号サーチして見つける2. 衛星から信号に含まれるナビゲーションメッセージ得る

GPS時刻/エフェメリス/アルマナック/補正情報3. 衛星からの信号の到達時間を調べる4. 衛星の位置と信号の到達時間、各種補正情報をもとに端末の位置を計算5. この時点で端末の大体の位置がわかる

6. 衛星と端末の関係から最適な衛星を割り出して、最適な衛星からの信号を利用して位置情報を逐次更新

1は以前に取得したアルマナック等の情報からサーチを高速化でき、また、2のナビゲーションメッセージ取得を一部省ける分、時間が短くなる!

Page 12: IIJmio meeting 5 MVNOとGPSについて

12

Hot Startとの関係

•手順の概略1. 端末がGPS衛星からの信号サーチして見つける2. 衛星から信号に含まれるナビゲーションメッセージ得る

GPS時刻/エフェメリス/アルマナック/補正情報3. 衛星からの信号の到達時間を調べる4. 衛星の位置と信号の到達時間、各種補正情報をもとに端末の位置を計算5. この時点で端末の大体の位置がわかる

6. 衛星と端末の関係から最適な衛星を割り出して、最適な衛星からの信号を利用して位置情報を逐次更新

1,2の処理を省けるため、大幅に時間が短縮される!!

Page 13: IIJmio meeting 5 MVNOとGPSについて

13

GPSとA-GPSの関係について

•手順の概略1. 端末がGPS衛星からの信号サーチして見つける2. 衛星から信号に含まれるナビゲーションメッセージ得る

GPS時刻/エフェメリス/アルマナック/補正情報3. 衛星からの信号の到達時間を調べる4. 衛星の位置と信号の到達時間、各種補正情報をもとに端末の位置を計算5. この時点で端末の大体の位置がわかる

6. 衛星と端末の関係から最適な衛星を割り出して、最適な衛星を割だして位置情報を逐次更新

1,2の部分の情報をIPネットワークから提供することで、Hot Startに近い時間短縮を目指す!=> (MS-based) A-GPS

Page 14: IIJmio meeting 5 MVNOとGPSについて

14

•ここまで説明して最初の話に戻ります

•MVNOでGPSの動作を高速化出来ないのか?-> キャリア端末でもアプリでGPSを高速化できる

ただし、一部端末は無理

•GPSの高速化、A-GPS実装について解説A-GPSについてAndroidのA-GPSの実装(おまけ) A-GPSサーバとの通信プロトコル解析

2.MVNOでGPSの位置情報取得を高速にできるのか?

Page 15: IIJmio meeting 5 MVNOとGPSについて

15

A-GPSについて-1

一般的なA-GPSの実装は2種類に大別される1. SUPLに基づく実装

• SUPL(Secure User Plane Location)• OMA Secure User Plane Location V1.0/V2.X• 3GPP TS 44.031

• Location Services (LCS); Mobile Station (MS) - Serving Mobile LocationCentre (SMLC) Radio Resource LCS Protocol (RRLP)

•特徴• IP通信でのSUPLサーバからGPS測位補助情報を取得可能

• モバイルデータ通信が必要 -> 無線LAN経由は不可• 標準化されたプロトコルを利用

• SSL/TCP port 7275 を利用• SUPLサーバをSSL証明書で確認• GoogleはSSLを使わない port 7276 も利用

• 利用できる端末が制限されることが多い• キャリア網内からしかアクセスできない• IMSI/MSISDNの認証等がある

Page 16: IIJmio meeting 5 MVNOとGPSについて

16

A-GPSについて-2

2. GPSチップメーカー独自実装•特徴

• IP通信でのサーバからGPS測位補助情報を取得可能• アクセスネットワークなんでも良い(3G/LTE/WiFi..)• HTTPでデータをダウンロードしてGPSチップに与える

• エフェメリス、アルマナック等を含む• データフォーマットはベンダー独自• 1週間前後有効な場合が多い

• 情報を取得するのに認証等は不要• MVNOからでも利用可能!

•ベンダー実装例• Qualcomm: gpsOneXTRA• Broadcom: Long Term Orbit (LTO)• MediaTek: Extended Prediction Orbit (EPO)

Page 17: IIJmio meeting 5 MVNOとGPSについて

17

AndroidのA-GPSの実装-1

•A-GPSの実装• SUPLとGPSチップメーカーの独自実装の両対応APIあり

• ただし、端末メーカーによって対応が異なる• 無線LANのみ端末 -> メーカー独自のみ• 3G/LTE端末 -> 両方対応 or SUPLのみ対応

• A-GPSに関する設定• /system/etc/gps.conf – 端末によって違うファイル、隠しモードで設定

• root権限がないと書き換え不可能• 設定からでは変更できない値が多い

• GPSのドライバーにハードコーディング?• SSL利用の有無の設定はできない?

• 3G/LTE経由でSUPLの有効化• APNタイプが 未設定 or default,supl の記述であればOK• 端末によってはこの値を見てない場合も…

• SSL証明書を利用したSUPLサーバの確認• NTTドコモの端末は確認を行っている(?)• SIMフリー端末だとSSLを利用してないものがほとんど

Page 18: IIJmio meeting 5 MVNOとGPSについて

18

•A-GPSの利用1. SUPL利用

• GPSを利用する位置情報取得APIが叩かれると、SUPLサーバへアクセスして補助情報の取得を試みる• SUPLサーバへのアクセス

• ドコモ端末: dcm-supl.com/MSISDN/SSL port 7275• SIMフリー端末:supl.google.com/IMSI/SSLなし port7276

•一部のSIMフリー端末だと、音声/SMS契約がないとSUPLが正常に利用できない場合が

2. GPSチップメーカー独自実装の利用•アプリで明示的にAPIを叩かないと利用出来ない?!

AndroidのA-GPSの実装-2

Page 19: IIJmio meeting 5 MVNOとGPSについて

19

AndroidのA-GPSの実装-3

•GPSチップメーカー独自実装のA-GPSの利用• APIを明示的に叩く場合の例

•実際の利用方法• GPS Status & Toolbox などのAPIを叩くアプリを利用

•注意点• APIを叩いても正常に動作したかはわからない•独自実装がされてなくても、APIは叩ける

android - Problems with sendExtraCommand and force_xtra_injection - Stack Overflowhttp://stackoverflow.com/questions/4961514/problems-with-sendextracommand-and-force-xtra-injection

public static void downloadGPSXtra(Context context){

LocationManager locationmanager = (LocationManager)context.getSystemService("location");Bundle bundle = new Bundle();locationmanager.sendExtraCommand("gps", "force_xtra_injection", bundle);locationmanager.sendExtraCommand("gps", "force_time_injection", bundle);

}

Page 20: IIJmio meeting 5 MVNOとGPSについて

20

AndroidのA-GPSの実装-4

•GPS Status & Toolboxの画面サンプル

Page 21: IIJmio meeting 5 MVNOとGPSについて

21

AndroidのA-GPSの実装-5

•GPS Status & Toolbox を利用してTTFFを測定•それぞれ2回試した。単位は秒• (注)端末のA-GPSデータを消去したCold Start状態で計測

GPS Status & Toolbox -> Manage A-GPS state -> ResetSO-03D: *#*#7378423#*#* -> Service tests -> GPS -> Purge assistance dataLG G2 mini: 3845#*620# -> GNSS Test –> Delete Aiding Data

GPSのみ A-GPS(SUPL) SUPLサーバ A-GPS(メーカー独自)

SO-03D/Xi SIM 35/47 19/20 ドコモ 10/11

SO-03D/IIJ SIM 39/34 34/33(注) ドコモ 8/17

Ascend G6/IIJ SIM 69/70 12/8 Google 10/11

LG G2 mini/IIJ SIM 197/254 42/55 Google 16/27

• GPS信号の捕捉時間は端末に依存• GPSのみに比べて、A-GPSを利用すると早くなる•MVNO SIMでもA-GPS(メーカー独自)利用で高速化!

(注) NTTドコモのSUPLは利用できません。

Page 22: IIJmio meeting 5 MVNOとGPSについて

22

まとめ

1. MVNOではGPSが使えない?-> 使えます!

GPSの仕組み的に時間がかかるため、その理由を解説

2. MVNOでGPSの位置情報取得を高速にできるのか?

-> キャリア端末でもアプリを使えば高速化出来ます!(ただし、一部端末ではダメ)GPSのTTFFを高速化するA-GPSについて解説実際にA-GPSを利用したTTFFを測定して確認

Page 23: IIJmio meeting 5 MVNOとGPSについて

23

おまけ

- Apple(iPhone)のA-GPSの実装- A-GPSサーバとのSUPLプロトコル解析

- dcm-supl.comのSUPLプロトコル解析- supl.google.comのSUPLプロトコル解析

Page 24: IIJmio meeting 5 MVNOとGPSについて

24

Apple(iPhone)のA-GPSの実装-1

•A-GPSの実装• GPSチップメーカーの独自実装のみ?!

• SUPLは利用してないらしい(参考) When Assistance Becomes Dependence: Characterizing the Costs and

Inefficiencies of A-GPShttp://www.tid.es/sites/526e527928a32d6a7400007f/content_entry5321ef0928a32d08900000ac/533c077028a32da56a0024fc/files/agps_mc2r_2013.pdf

• キャプチャでも、TCP port 7275向けの通信は見つからず

• A-GPSに関する設定•設定は一切不可

•位置情報サービスのOFF/ONぐらい• GPSのチップ

•端末世代毎にGPSのチップが異なる•世代毎に異なるデータをダウンロードして利用

• iPhone3G: LTO• iPhone4S: gpsOneXTRA• iPhone5/5S/6: ?

Page 25: IIJmio meeting 5 MVNOとGPSについて

25

• GPSチップメーカー独自実装の利用• iPhone5c(iOS8.1)の場合•位置情報取得APIを叩くと、謎のバイナリデータを取得

•これがA-GPSのデータか?!• モバイル通信/Wi-Fiどちららでも同じ挙動• Appleサーバからなので、MVNO SIMでも問題ない• HTTPS経由で取得

• TTFFの計測テスト• できませんでした。。。• 困った点

• A-GPSデータを消去できない?• コールドスタート状態に戻せないので、比較試験が出来ず• A-GPSデータ無効相当にするは1週間以上の放置が必要

• A-GPSデータが有効であるかの確認がアプリからでは難しい• iOSはNMEA形式でのGPSデータ出力をサポートしてない?

(参考) Android で GPS 衛星からの情報を NMEA 形式で取得する方法 - A Day In The Lifehttp://d.hatena.ne.jp/glass-_-onion/20101123/1290522121

Apple(iPhone)のA-GPSの実装-2

Page 26: IIJmio meeting 5 MVNOとGPSについて

26

•謎バイナリデータ(A-GPSデータ?)• Proxyを設定し、mitmproxyでHTTPS通信を監視して確認(参考) iPhone - iOS実機のSSL通信をプロキシによって傍受したり改ざんする方法 - Qiita---http://qiita.com/yimajo/items/c67cb711851f747c35e5

2014-10-23 15:47:43 GET https://cl2.apple.com/4/v1/124/318/1240000_3180000_0000000001B8000A.gz← 200 application/x-gzip 468.74kB 4.15MB/s

Request ResponseHost: cl2.apple.comUser-Agent: locationd/1753.17 CFNetwork/711.1.12 Darwin/14.0.0Connection: closeProxy-Connection: close

https://cl2.apple.com/4/v1/124/318/1240000_3180000_0000000001B8000A.gz^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

上記 ^ 部分はアクセスされるごとに異なる。ルールは不明上記ファイルを解答して調べたがバイナリーファイルで正体不明頻繁に異なる種類のファイルをダウンロードする場合も

Apple(iPhone)のA-GPSの実装-3

Page 27: IIJmio meeting 5 MVNOとGPSについて

27

(おまけ) 無線LAN/基地局から情報取得するAPI• iPhone5c(iOS8.1)の場合

(参考) Apple 社の GeoLocation システム周りに関するお話http://d.hatena.ne.jp/RobinEgg/20140113/p1

2014-10-23 15:47:43 POST https://gs-loc.apple.com/clls/wlocHost: gs-loc.apple.comProxy-Connection: keep-aliveAccept-Encoding: gzip, deflateContent-Type: application/x-www-form-urlencodedAccept-Language: en-usConnection: keep-aliveAccept: */*Content-Length: 70User-Agent: locationd/1753.17 CFNetwork/711.1.12 Darwin/14.0.0Hex0000000000 00 01 00 05 65 6e 5f 55 53 00 13 63 6f 6d 2e 61 ....en_US..com.a0000000010 70 70 6c 65 2e 6c 6f 63 61 74 69 6f 6e 64 00 0a pple.locationd..0000000020 38 2e 31 2e 31 32 42 34 31 31 00 00 00 01 00 00 8.1.12B411......0000000030 00 14 18 00 20 01 ca 01 0d 08 b8 03 10 0a 18 83 .... ...........0000000040 f6 90 14 20 90 28 ... .(

Apple(iPhone)のA-GPSの実装-4

Page 28: IIJmio meeting 5 MVNOとGPSについて

28

A-GPSサーバとのSUPLプロトコル解析-1

•SUPLサーバとのやりとりをキャプチャ• supl-client/supl-proxy をベースに独自改良

• Assisted GPS (AGPS) SUPL client and proxy• http://www.tajuma.com/supl/

• Patch to build supl-proxy and fallback to non-TLS connection• https://gist.github.com/kanru/3713093

•キャプチャ環境

[supl-client]--(非SSL/TCP)--[supl-proxy]—(SSL/TCP)—[SUPL server]

[端末]-------(非SSL/TCP)--[socat]—--(非SSL/TCP)—[SUPL server]^^^^^^^^^^^^^^ここでキャプチャ

Page 29: IIJmio meeting 5 MVNOとGPSについて

29

A-GPSサーバとのSUPLプロトコル解析-2

•SUPLプロトコルの基本的なやりとり

[端末] ------ SUPLSTART ----- [SUPLサーバ]---- SUPLRESPONSE----

------ SUPLPOSINIT -------- SUPLPOS ---------

• (注意) TCP/SSL通信なので前後に他のシーケンスがあるが詳細略

Page 30: IIJmio meeting 5 MVNOとGPSについて

30

SUPLサーバ: dcm-supl.com - 1

•試験環境• Xiデータ通信サービスSIMを利用• APN:mopera.net• supl-clientツールを利用してアクセス• tcpdumpでキャプチャ•Wiresharkでデコード

•参考: DNSでの名前解決

• IIJmio SIM

(host) /root >host dcm-supl.com

Host dcm-supl.com not found: 2(SERVFAIL)

• Xiデータ通信SIM

(host) /root >host dcm-supl.com

dcm-supl.com has address 61.195.xxx.xxx

Page 31: IIJmio meeting 5 MVNOとGPSについて

31

SUPLSTART例 SUPLRESPONSE例OMA UserPlane Location Protocol

ULP-PDU

length: 30

version

maj: 1

min: 0

servind: 0

sessionID

setSessionID

sessionId: 1

setId: msisdn (0)

msisdn: XXXXXXXXXXXX

message: msSUPLSTART (1)

msSUPLSTART

sETCapabilities

posTechnology

.... ..0. agpsSETassisted: False

.... ...1 agpsSETBased: True

0... .... autonomousGPS: False

.0.. .... aFLT: False

..0. .... eCID: False

...0 .... eOTD: False

.... 0... oTDOA: False

prefMethod: agpsSETBasedPreferred (1)

posProtocol

0... .... tia801: False

.1.. .... rrlp: True

..0. .... rrc: False

locationId

cellInfo: wcdmaCell (1)

wcdmaCell

refMCC: 410

refMNC: 10

refUC: 3752005

status: stale (0)

OMA UserPlane Location Protocol

ULP-PDU

length: 32

version

maj: 1

min: 0

servind: 0

sessionID

setSessionID

sessionId: 1

setId: msisdn (0)

msisdn: XXXXXXXXXXXX

slpSessionID

sessionID: d00535ea

slpId: fQDN (1)

fQDN: dcm-supl.com

message: msSUPLRESPONSE (2)

msSUPLRESPONSE

posMethod: agpsSETbased (1)

SUPLサーバ: dcm-supl.com - 2

Page 32: IIJmio meeting 5 MVNOとGPSについて

32

SUPLPOSINIT例

OMA UserPlane Location Protocol

ULP-PDU

length: 49

version

maj: 1

min: 0

servind: 0

sessionID

setSessionID

sessionId: 1

setId: msisdn (0)

msisdn: XXXXXXXXXXXX

slpSessionID

sessionID: d00535ea

slpId: fQDN (1)

fQDN: dcm-supl.com

message: msSUPLPOSINIT (3)

msSUPLPOSINIT

sETCapabilities

posTechnology

...0 .... agpsSETassisted: False

.... 1... agpsSETBased: True

.... .0.. autonomousGPS: False

.... ..0. aFLT: False

.... ...0 eCID: False

0... .... eOTD: False

.0.. .... oTDOA: False

prefMethod: agpsSETBasedPreferred (1)

posProtocol

.... .0.. tia801: False

.... ..1. rrlp: True

.... ...0 rrc: False

requestedAssistData

..1. .... almanacRequested: True

...0 .... utcModelRequested: False

.... 0... ionosphericModelRequested: False

.... .0.. dgpsCorrectionsRequested: False

.... ..1. referenceLocationRequested: True

.... ...1 referenceTimeRequested: True

1... .... acquisitionAssistanceRequested: True

.0.. .... realTimeIntegrityRequested: False

..1. .... navigationModelRequested: True

navigationModelData

gpsWeek: 0

gpsToe: 0

nSAT: 0

toeLimit: 0

locationId

cellInfo: wcdmaCell (1)

wcdmaCell

refMCC: 410

refMNC: 10

refUC: 13182428

status: stale (0)

SUPLサーバ: dcm-supl.com - 3

Page 33: IIJmio meeting 5 MVNOとGPSについて

33

SUPLPOS例-1OMA UserPlane Location Protocol

ULP-PDU

length: 1689

version

maj: 1

min: 0

servind: 0

sessionID

setSessionID

sessionId: 1

setId: msisdn (0)

msisdn: XXXXXXXXXXXXXXX

slpSessionID

sessionID: d00535ea

slpId: fQDN (1)

fQDN: dcm-supl.com

message: msSUPLPOS (4)

msSUPLPOS

posPayLoad: rrlpPayload (2)

rrlpPayload: 201178de99a9f8998a52618a43...

Radio Resource LCS Protocol (RRLP)

PDU

referenceNumber: 1

component: msrPositionReq (0)

msrPositionReq

positionInstruct

methodType: msBased (1)

msBased: 60

positionMethod: gps (1)

measureResponseTime: 5

useMultipleSets: oneSet (1)

gps-AssistData

controlHeader

referenceTime

gpsTime

gpsTOW23b: 5569612

gpsWeek: 788

gpsTowAssist: 11 items

Item 0

GPSTOWAssistElement

satelliteID: 19

tlmWord: 788

antiSpoof: 1

alert: 0

tlmRsvdBits: 0

Item 1

GPSTOWAssistElement

satelliteID: 27

tlmWord: 788

antiSpoof: 1

alert: 0

tlmRsvdBits: 0

.

refLocation .

threeDLocation: 9032c5ac635f9900401111007f00

1001 .... = Location estimate: Ellipsoid point with altitude and uncertainty Ellipsoid (9)

0... .... = Sign of latitude: North (0)

.011 0010 1100 0101 1010 1100 = Degrees of latitude: 3327404 (35.69918 degrees)

Degrees of longitude: 6512537 (139.74389 degrees)

0... .... .... .... = D: Direction of Altitude: Altitude expresses height (0)

.000 0000 0100 0000 = Altitude in meters: 64

.001 0001 = Uncertainty semi-major: 17 (40.5 m)

.001 0001 = Uncertainty semi-minor: 17 (40.5 m)

Orientation of major axis: 0

.111 1111 = Uncertainty Altitude: 127 (990.5 m)

.000 0000 = Confidence(%): 0

.

GPS時刻 ->

位置情報 ->

SUPLサーバ: dcm-supl.com - 4

Page 34: IIJmio meeting 5 MVNOとGPSについて

34

SUPLPOS例-2navigationModel

navModelList: 11 items

Item 0

NavModelElement

satelliteID: 19

satStatus: newSatelliteAndModelUC (0)

newSatelliteAndModelUC

ephemCodeOnL2: 1

ephemURA: 0

ephemSVhealth: 0

ephemIODC: 92

ephemL2Pflag: 0

ephemSF1Rsvd

reserved1: 0

reserved2: 0

reserved3: 0

reserved4: 0

ephemTgd: -17

ephemToc: 27900

ephemAF2: 0

ephemAF1: 38

ephemAF0: 517171

ephemCrs: 997

ephemDeltaN: 15911

ephemM0: -412499778

ephemCuc: 891

ephemE: 51890437

ephemCus: 3884

ephemAPowerHalf: 2702030612

ephemToe: 27900

ephemFitFlag: 0

ephemAODA: 31

ephemCic: -26

ephemOmegaA0: -2034760447

ephemCis: 31

ephemI0: 633654509

ephemCrc: 7269

ephemW: 909022217

ephemOmegaADot: -24347

ephemIDot: 900

.

almanac

alamanacWNa: 21

almanacList: 32 items

Item 0

AlmanacElement

satelliteID: 0

almanacE: 7451

alamanacToa: 15

almanacKsii: 3144

almanacOmegaDot: -688

almanacSVhealth: 0

almanacAPowerHalf: 10554631

almanacOmega0: 5898737

almanacW: 1148377

almanacM0: 5429806

almanacAF0: 23

almanacAF1: 0

.

.

acquisAssist

timeRelation

gpsTOW: 5569612

acquisList: 11 items

Item 0

AcquisElement

svid: 19

doppler0: 249

addionalDoppler

doppler1: 28

dopplerUncertainty: 4

codePhase: 367

intCodePhase: 12

gpsBitNumber: 0

codePhaseSearchWindow: 0

addionalAngle

azimuth: 12

elevation: 7

.

.

エフェメリス ->

アルマナック ->

衛星補足補助情報->

SUPLサーバ: dcm-supl.com – 5

Page 35: IIJmio meeting 5 MVNOとGPSについて

35

SUPLサーバ: supl.google.com - 1

•試験環境•MVNO(IIJ SIM)を利用

• SMS+データ通信 SIM•データ通信SIM

• APN: IIJのテスト用APN• DNSサーバでsupl.google.comのアドレスをキャプチャ用サーバのアドレスを返して、トラフィックを捻じ曲げた

•端末• ASUS Fonepad ME371MG• LG G2 mini

• tcpdumpでキャプチャ•Wiresharkでデコード

Page 36: IIJmio meeting 5 MVNOとGPSについて

36

SUPLサーバ: supl.google.com - 2

SUPLSTART例

データ通信SIMを利用した場合 - ASUS Fonepad ME371MG

OMA UserPlane Location Protocol

ULP-PDU

length: 18

version

maj: 1

min: 0

servind: 0

sessionID

setSessionID

sessionId: 446

setId: imsi (3)

imsi: 441030……..

message: msSUPLEND (5)

msSUPLEND

statusCode: systemFailure (1)

<-正常なリクエストが送られていないA-GPS動作せず

Page 37: IIJmio meeting 5 MVNOとGPSについて

37

SUPLサーバ: supl.google.com - 3SMS+データ通信SIMを利用した場合 - ASUS Fonepad ME371MGSUPLSTART例 SUPLRESPONSE例OMA UserPlane Location Protocol

ULP-PDU

length: 30

version

maj: 1

min: 0

servind: 0

sessionID

setSessionID

sessionId: 502

setId: imsi (3)

imsi: 441030…..

message: msSUPLSTART (1)

msSUPLSTART

sETCapabilities

posTechnology

.... ..1. agpsSETassisted: True

.... ...1 agpsSETBased: True

1... .... autonomousGPS: True

.0.. .... aFLT: False

..0. .... eCID: False

...0 .... eOTD: False

.... 0... oTDOA: False

prefMethod: noPreference (2)

posProtocol

0... .... tia801: False

.1.. .... rrlp: True

..0. .... rrc: False

locationId

cellInfo: wcdmaCell (1)

wcdmaCell

refMCC: 440

refMNC: 10

refUC: 71958552

status: current (1)

qoP

horacc: 19

maxLocAge: 1

OMA UserPlane Location Protocol

ULP-PDU

length: 26

version

maj: 1

min: 0

servind: 0

sessionID

setSessionID

sessionId: 502

setId: imsi (3)

imsi: 441030......

slpSessionID

sessionID: 4a125ae4

slpId: iPAddress (0)

iPAddress: ipv4Address (0)

ipv4Address: 173.194.72.192 (173.194.72.192)

message: msSUPLRESPONSE (2)

msSUPLRESPONSE

posMethod: agpsSETbased (1)

Page 38: IIJmio meeting 5 MVNOとGPSについて

38

SUPLサーバ: supl.google.com - 4SMS+データ通信SIMを利用した場合 - ASUS Fonepad ME371MGSUPLPOSINIT例

OMA UserPlane Location Protocol

ULP-PDU

length: 40

version

maj: 1

min: 0

servind: 0

sessionID

setSessionID

sessionId: 502

setId: imsi (3)

imsi: 441030…….

slpSessionID

sessionID: 4a125ae4

slpId: iPAddress (0)

iPAddress: ipv4Address (0)

ipv4Address: 173.194.72.192 (173.194.72.192)

message: msSUPLPOSINIT (3)

msSUPLPOSINIT

sETCapabilities

posTechnology

.... 1... agpsSETassisted: True

.... .1.. agpsSETBased: True

.... ..1. autonomousGPS: True

.... ...0 aFLT: False

0... .... eCID: False

.0.. .... eOTD: False

..0. .... oTDOA: False

prefMethod: noPreference (2)

posProtocol

.... ..0. tia801: False

.... ...1 rrlp: True

0... .... rrc: False

requestedAssistData

...0 .... almanacRequested: False

.... 0... utcModelRequested: False

.... .0.. ionosphericModelRequested: False

.... ..0. dgpsCorrectionsRequested: False

.... ...1 referenceLocationRequested: True

1... .... referenceTimeRequested: True

.0.. .... acquisitionAssistanceRequested: False

..0. .... realTimeIntegrityRequested: False

...1 .... navigationModelRequested: True

navigationModelData

gpsWeek: 0

gpsToe: 0

nSAT: 0

toeLimit: 0

locationId

cellInfo: wcdmaCell (1)

wcdmaCell

refMCC: 440

refMNC: 10

refUC: 71958552

status: current (1)

Page 39: IIJmio meeting 5 MVNOとGPSについて

39

SUPLサーバ: supl.google.com - 5SMS+データ通信SIMを利用した場合 - ASUS Fonepad ME371MGSUPLPOS例-1OMA UserPlane Location Protocol

ULP-PDU

length: 948

version

maj: 1

min: 0

servind: 0

.

.

message: msSUPLPOS (4)

msSUPLPOS

posPayLoad: rrlpPayload (2)

rrlpPayload: 24134053f68cc51b206...

Radio Resource LCS Protocol (RRLP)

PDU

referenceNumber: 1

component: assistanceData (2)

assistanceData

gps-AssistData

controlHeader

referenceTime

gpsTime

gpsTOW23b: 5502604

gpsWeek: 788

refLocation

threeDLocation: 9032c737635ff000642c2c007f27

1001 .... = Location estimate: Ellipsoid point with altitude and uncertainty Ellipsoid (9)

0... .... = Sign of latitude: North (0)

.011 0010 1100 0111 0011 0111 = Degrees of latitude: 3327799 (35.70341 degrees)

Degrees of longitude: 6512624 (139.74576 degrees)

0... .... .... .... = D: Direction of Altitude: Altitude expresses height (0)

.000 0000 0110 0100 = Altitude in meters: 100

.010 1100 = Uncertainty semi-major: 44 (652.6 m)

.010 1100 = Uncertainty semi-minor: 44 (652.6 m)

Orientation of major axis: 0

.111 1111 = Uncertainty Altitude: 127 (990.5 m)

.010 0111 = Confidence(%): 39

navigationModel

navModelList: 13 items

Item 0

NavModelElement

satelliteID: 0

satStatus: newSatelliteAndModelUC (0)

newSatelliteAndModelUC

ephemCodeOnL2: 0

ephemURA: 0

ephemSVhealth: 0

ephemIODC: 81

ephemL2Pflag: 0

ephemSF1Rsvd

reserved1: 0

reserved2: 0

reserved3: 0

reserved4: 0

ephemTgd: 12

ephemToc: 27450

ephemAF2: 0

ephemAF1: 4

ephemAF0: 47254

ephemCrs: -1071

ephemDeltaN: 12399

ephemM0: 231454399

ephemCuc: -905

ephemE: 30423662

ephemCus: 5640

ephemAPowerHalf: 2702010424

ephemToe: 27450

ephemFitFlag: 0

ephemAODA: 31

ephemCic: 41

ephemOmegaA0: 1593627408

ephemCis: 24

ephemI0: 657148950

ephemCrc: 5735

ephemW: 290747099

ephemOmegaADot: -22274

ephemIDot: 704

.

GPS時刻 ->

位置情報 ->

エフェメリス ->

Page 40: IIJmio meeting 5 MVNOとGPSについて

40

SUPLサーバ: supl.google.com - 6データ通信SIMを利用した場合 – LG G2 miniSUPLSTART例

OMA UserPlane Location Protocol

ULP-PDU

length: 41

version

maj: 1

min: 0

servind: 0

sessionID

setSessionID

sessionId: 0

setId: imsi (3)

imsi: 441030…………

message: msSUPLSTART (1)

msSUPLSTART

sETCapabilities

posTechnology

.... ..0. agpsSETassisted: False

.... ...1 agpsSETBased: True

1... .... autonomousGPS: True

.0.. .... aFLT: False

..1. .... eCID: True

...0 .... eOTD: False

.... 0... oTDOA: False

prefMethod: noPreference (2)

posProtocol

0... .... tia801: False

.1.. .... rrlp: True

..0. .... rrc: False

locationId

cellInfo: wcdmaCell (1)

wcdmaCell

refMCC: 440

refMNC: 10

refUC: 71958552

frequencyInfo

modeSpecificInfo: fdd (0)

fdd

uarfcn-DL: 10688

OMA UserPlane Location Protocol

ULP-PDU

length: 26

version

maj: 1

min: 0

servind: 0

sessionID

setSessionID

sessionId: 0

setId: imsi (3)

imsi: 441030…………….

slpSessionID

sessionID: 9bebd352

slpId: iPAddress (0)

iPAddress: ipv4Address (0)

ipv4Address: 173.194.72.192 (173.194.72.192)

message: msSUPLRESPONSE (2)

msSUPLRESPONSE

posMethod: agpsSETbased (1)

SUPLRESPONSE例

primaryScramblingCode: 427

measuredResultsList: 1 item

Item 0

MeasuredResults

frequencyInfo

modeSpecificInfo: fdd (0)

fdd

uarfcn-DL: 10688

cellMeasuredResultsList: 1 item

Item 0

CellMeasuredResults

modeSpecificInfo: fdd (0)

fdd

primaryCPICH-Info

primaryScramblingCode: 427

cpich-Ec-N0: 43

cpich-RSCP: 47

status: current (1)

qoP

horacc: 19

maxLocAge: 0

delay: 7

Page 41: IIJmio meeting 5 MVNOとGPSについて

41

SUPLサーバ: supl.google.com - 7SMS+データ通信SIMを利用した場合 – LG G2 miniSUPLPOSINIT例

OMA UserPlane Location Protocol

ULP-PDU

length: 51

version

maj: 1

min: 0

servind: 0

sessionID

setSessionID

sessionId: 0

setId: imsi (3)

imsi: 441030……….

slpSessionID

sessionID: 9bebd352

slpId: iPAddress (0)

iPAddress: ipv4Address (0)

ipv4Address: 173.194.72.192 (173.194.72.192)

message: msSUPLPOSINIT (3)

msSUPLPOSINIT

sETCapabilities

posTechnology

.... 0... agpsSETassisted: False

.... .1.. agpsSETBased: True

.... ..1. autonomousGPS: True

.... ...0 aFLT: False

1... .... eCID: True

.0.. .... eOTD: False

..0. .... oTDOA: False

prefMethod: noPreference (2)

posProtocol

.... ..0. tia801: False

.... ...1 rrlp: True

0... .... rrc: False

requestedAssistData

...1 .... almanacRequested: True

.... 1... utcModelRequested: True

.... .1.. ionosphericModelRequested: True

.... ..0. dgpsCorrectionsRequested: False

.... ...1 referenceLocationRequested: True

1... .... referenceTimeRequested: True

.0.. .... acquisitionAssistanceRequested: False

..1. .... realTimeIntegrityRequested: True

...1 .... navigationModelRequested: True

navigationModelData

gpsWeek: 0

gpsToe: 0

nSAT: 0

toeLimit: 0

locationId

cellInfo: wcdmaCell (1)

wcdmaCell

refMCC: 440

refMNC: 10

refUC: 71958552

frequencyInfo

modeSpecificInfo: fdd (0)

fdd

uarfcn-DL: 10688

primaryScramblingCode: 427

measuredResultsList: 1 item

Item 0

MeasuredResults

frequencyInfo

modeSpecificInfo: fdd (0)

fdd

uarfcn-DL: 10688

cellMeasuredResultsList: 1 item

Item 0

CellMeasuredResults

modeSpecificInfo: fdd (0)

fdd

primaryCPICH-Info

primaryScramblingCode: 427

cpich-Ec-N0: 43

cpich-RSCP: 47

status: current (1)

Page 42: IIJmio meeting 5 MVNOとGPSについて

42

SUPLサーバ: supl.google.com - 8SMS+データ通信SIMを利用した場合 – LG G2 miniSUPLPOS例-1OMA UserPlane Location Protocol

ULP-PDU

length: 1700

version

maj: 1

min: 0

servind: 0

.

.

message: msSUPLPOS (4)

msSUPLPOS

posPayLoad: rrlpPayload (2)

rrlpPayload: 2413785852b4c51b20658e6ec6bfe000c8585800fe4f8084...

Radio Resource LCS Protocol (RRLP)

PDU

referenceNumber: 1

component: assistanceData (2)

assistanceData

gps-AssistData

controlHeader

referenceTime

gpsTime

gpsTOW23b: 5788340

gpsWeek: 788

refLocation

threeDLocation: 9032c737635ff000642c2c007f27

1001 .... = Location estimate: Ellipsoid point with altitude and uncertainty Ellipsoid (9)

0... .... = Sign of latitude: North (0)

.011 0010 1100 0111 0011 0111 = Degrees of latitude: 3327799 (35.70341 degrees)

Degrees of longitude: 6512624 (139.74576 degrees)

0... .... .... .... = D: Direction of Altitude: Altitude expresses height (0)

.000 0000 0110 0100 = Altitude in meters: 100

.010 1100 = Uncertainty semi-major: 44 (652.6 m)

.010 1100 = Uncertainty semi-minor: 44 (652.6 m)

Orientation of major axis: 0

.111 1111 = Uncertainty Altitude: 127 (990.5 m)

.010 0111 = Confidence(%): 39

GPS時刻 ->

位置情報 ->

エフェメリス ->

navigationModel

navModelList: 13 items

Item 0

NavModelElement

satelliteID: 1

satStatus: newSatelliteAndModelUC (0)

newSatelliteAndModelUC

ephemCodeOnL2: 1

ephemURA: 0

ephemSVhealth: 0

ephemIODC: 44

ephemL2Pflag: 0

ephemSF1Rsvd

reserved1: 0

reserved2: 0

reserved3: 0

reserved4: 0

ephemTgd: -43

ephemToc: 29250

ephemAF2: 0

ephemAF1: 19

ephemAF0: 1120966

ephemCrs: -1106

ephemDeltaN: 13772

ephemM0: -699419914

ephemCuc: -952

ephemE: 118602899

ephemCus: 6131

ephemAPowerHalf: 2702017266

ephemToe: 29250

ephemFitFlag: 0

ephemAODA: 31

ephemCic: 199

ephemOmegaA0: 1571318455

ephemCis: 122

ephemI0: 642485765

ephemCrc: 4755

ephemW: -1629536356

ephemOmegaADot: -23010

ephemIDot: 234

Page 43: IIJmio meeting 5 MVNOとGPSについて

43

SUPLサーバ: supl.google.com - 9SMS+データ通信SIMを利用した場合 – LG G2 miniSUPLPOS例-2

ionosphericModel

alfa0: 27

alfa1: 2

alfa2: -2

alfa3: -1

beta0: 65

beta1: -1

beta2: -4

beta3: 3

utcModel

utcA1: -3

utcA0: -4

utcTot: 240

utcWNt: 28

utcDeltaTls: 16

utcWNlsf: 159

utcDN: 0

utcDeltaTlsf: 16

almanac

alamanacWNa: 20

almanacList: 31 items

Item 0

AlmanacElement

satelliteID: 0

almanacE: 7445

alamanacToa: 144

almanacKsii: 3147

almanacOmegaDot: -683

almanacSVhealth: 0

almanacAPowerHalf: 10554635

almanacOmega0: 6221907

almanacW: 1145155

almanacM0: -7551246

almanacAF0: 23

almanacAF1: 0(990.5 m)

.010 0111 = Confidence(%): 39

.

.

UTCモデル->

補正情報 ->

アルマナック->

Page 44: IIJmio meeting 5 MVNOとGPSについて

44

参考文献

• NTTドコモ, 国際ローミングSUPLによるFOMA位置情報機能の開発 ―現在地確認機能― • https://www.nttdocomo.co.jp/corporate/technology/rd/technical_journal/bn/vol17_2/006.html

• NTTドコモ, スマートフォン端末向け位置提供機能の開発• https://www.nttdocomo.co.jp/corporate/technology/rd/technical_journal/bn/vol20_2/037.html

• GPS初期位置算出時間(TTFF)短縮のための検討, 電子情報通信学会SANE研究会 電子航法研究所, July 27, 2007• http://www.enri.go.jp/%7Esakai/pub/sane0707.ppt

• The Open Mobile Alliance, Secure User Plane Location V1.0• http://technical.openmobilealliance.org/Technical/technical-information/release-program/current-releases/secure-user-plane-location-v1-0

• 3GPP TS 44.031, Location Services (LCS); Mobile Station (MS) - Serving Mobile Location Centre (SMLC) Radio Resource LCS Protocol (RRLP)• Assisted GPS (AGPS) SUPL client and proxy

• http://www.tajuma.com/supl/• Patch to build supl-proxy and fallback to non-TLS connection

• https://gist.github.com/kanru/3713093• WirelessMoves: How To Trace An A-GPS SUPL Request

• http://mobilesociety.typepad.com/mobile_life/2014/09/how-to-trace-an-a-gps-supl-request.html• WirelessMoves: How SUPL Reveals My Identity And Location To Google When I Use GPS

• http://mobilesociety.typepad.com/mobile_life/2014/08/supl-reveals-my-identity-and-location-to-google.html• How to create a SuplRootCert for supl.google.com • Andreas Schneider

• https://blog.cryptomilk.org/2012/07/24/how-to-create-a-suplrootcert-for-supl-google-com/• Understanding GPS: Principles and Applications, Second Edition• GLOBAL POSITIONING SYSTEM STANDARD POSITIONING SERVICE SIGNAL SPECIFICATION

• http://www.gps.gov/technical/ps/1995-SPS-signal-specification.pdf• Chapter 3: THE GPS SIGNALS

• http://www.gmat.unsw.edu.au/snap/gps/gps_survey/chap3/chap3.htm• A-GPS: Assisted GPS, GNSS, and SBAS, Frank Stephen Tromp Van Diggelen• Assisted GPS - Wikipedia, the free encyclopedia

• http://en.wikipedia.org/wiki/Assisted_GPS• When Assistance Becomes Dependence: Characterizing the Costs and Inefficiencies of A-GPS

• http://www.cl.cam.ac.uk/~nv240/papers/agps_mc2r.pdf• Security issues with SUPL implementations – rpw• https://rpw.io/slides/rpw-bhus2012-supl.pdf• Android & Symbian Application and OS Concepts: Android GPS Middleware• http://suratechsoft.blogspot.jp/2011/09/android-gps-middleware.html• location/java/com/android/internal/location/GpsLocationProvider.java - platform/frameworks/base - Git at Google

• https://android.googlesource.com/platform/frameworks/base/+/2f3a615feaa1286612576bc15f6bd8cae011301f/location/java/com/android/internal/location/GpsLocationProvider.java

• https://android.googlesource.com/platform/hardware/qcom/gps/