View
62.611
Download
1
Embed Size (px)
DESCRIPTION
この資料はIIJmio meeting 5で発表されたものです。詳細は下記blogをご覧下さい。 http://techlog.iij.ad.jp/archives/1293
Citation preview
1
IIJmio mtg #5
MVNOとGPSについて
株式会社インターネットイニシアティブ
2
•名前大内 宗徳
•所属ネットワーク本部 ネットーワークサービス部 技術開発課
•経歴2002年 IIJ 入社。以降、研究開発部門に所属
•業務内容ネットワークサービス全般の技術調査、機器の動作検証、研究開発
インターネット関連の技術調査、コアルータやスイッチ等機器の動作検証、ツール開発モバイル関連の技術調査、機器の動作検証、ツール開発社内エンジニアの後方支援
最近はモバイルの端末挙動調査からコアネットワーク設備まで色々やっています!
自己紹介/初めてなので
3
MVNOのGPSについて
•ネット上ではMVNOとGPSについて情報があふれています•ただし、古い情報や正しくない情報も散見されます•次の2つ問題に焦点をあてて解説していきます
1. MVNOではGPSが使えない?2. MVNOでGPSの位置情報取得を高速にできるのか?
4
•端末のGPS機能は使うことは出来ます!できるはずです
-> ただし、端末によってGPSの位置情報取得にかなり時間がかかる場合がある(白ロム端末だと顕著になる場合も)
-> MVNOだとGPSが使えない、という誤解に
•この原因を理解するために下記の2つを解説• Android端末の位置情報取得• GPSとA-GPSの仕組みについて解説
1.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端末での位置情報取得
6
Android端末での位置情報取得/Google MAP
• 飯田橋のIIJ本社で試した結果• 端末 SO-03D で、MVNO SIM利用• 大体の位置ならば無線LANでもOK。GPSは時間がかかる
無線LAN 基地局 GPS
7
GPSについて
•ただし、正確な位置把握のためにはGPSが必要-> 本題のGPSの話題に
•GPS概要については省略•GPSによる位置情報の取得は仕組み的に時間が掛かる•この仕組みをもう少し掘り下げて説明
8
GPSで位置情報を取得する手順
•手順の概略1. 端末がGPS衛星からの信号サーチして見つける2. 衛星から信号に含まれるナビゲーションメッセージ得る
GPS時刻/エフェメリス/アルマナック/補正情報3. 衛星からの信号の到達時間を調べる4. 衛星の位置と信号の到達時間、各種補正情報をもとに端末の位置を計算5. この時点で端末の大体の位置がわかる
6. 衛星と端末の関係から最適な衛星を割り出して、最適な衛星からの信号を利用して位置情報を逐次更新
(補足) 1、2の処理は時間がかかる。3,4の処理は短時間で完了エフェメリス: 衛星の詳細な位置情報アルマナック: 衛星の概略の位置情報
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時間以内のエフェメリス、計算済の位置情報を持つ状態数秒以内
10
Cold Startとの関係
•手順の概略1. 端末がGPS衛星からの信号サーチして見つける2. 衛星から信号に含まれるナビゲーションメッセージ得る
GPS時刻/エフェメリス/アルマナック/補正情報3. 衛星からの信号の到達時間を調べる4. 衛星の位置と信号の到達時間、各種補正情報をもとに端末の位置を計算5. この時点で端末の大体の位置がわかる
6. 衛星と端末の関係から最適な衛星を割り出して、最適な衛星からの信号を利用して位置情報を逐次更新
1-5のすべての処理を行うため時間がかかる!
11
Warm Startとの関係
•手順の概略1. 端末がGPS衛星からの信号サーチして見つける2. 衛星から信号に含まれるナビゲーションメッセージ得る
GPS時刻/エフェメリス/アルマナック/補正情報3. 衛星からの信号の到達時間を調べる4. 衛星の位置と信号の到達時間、各種補正情報をもとに端末の位置を計算5. この時点で端末の大体の位置がわかる
6. 衛星と端末の関係から最適な衛星を割り出して、最適な衛星からの信号を利用して位置情報を逐次更新
1は以前に取得したアルマナック等の情報からサーチを高速化でき、また、2のナビゲーションメッセージ取得を一部省ける分、時間が短くなる!
12
Hot Startとの関係
•手順の概略1. 端末がGPS衛星からの信号サーチして見つける2. 衛星から信号に含まれるナビゲーションメッセージ得る
GPS時刻/エフェメリス/アルマナック/補正情報3. 衛星からの信号の到達時間を調べる4. 衛星の位置と信号の到達時間、各種補正情報をもとに端末の位置を計算5. この時点で端末の大体の位置がわかる
6. 衛星と端末の関係から最適な衛星を割り出して、最適な衛星からの信号を利用して位置情報を逐次更新
1,2の処理を省けるため、大幅に時間が短縮される!!
13
GPSとA-GPSの関係について
•手順の概略1. 端末がGPS衛星からの信号サーチして見つける2. 衛星から信号に含まれるナビゲーションメッセージ得る
GPS時刻/エフェメリス/アルマナック/補正情報3. 衛星からの信号の到達時間を調べる4. 衛星の位置と信号の到達時間、各種補正情報をもとに端末の位置を計算5. この時点で端末の大体の位置がわかる
6. 衛星と端末の関係から最適な衛星を割り出して、最適な衛星を割だして位置情報を逐次更新
1,2の部分の情報をIPネットワークから提供することで、Hot Startに近い時間短縮を目指す!=> (MS-based) A-GPS
14
•ここまで説明して最初の話に戻ります
•MVNOでGPSの動作を高速化出来ないのか?-> キャリア端末でもアプリでGPSを高速化できる
ただし、一部端末は無理
•GPSの高速化、A-GPS実装について解説A-GPSについてAndroidのA-GPSの実装(おまけ) A-GPSサーバとの通信プロトコル解析
2.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の認証等がある
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)
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を利用してないものがほとんど
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
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);
}
20
AndroidのA-GPSの実装-4
•GPS Status & Toolboxの画面サンプル
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は利用できません。
22
まとめ
1. MVNOではGPSが使えない?-> 使えます!
GPSの仕組み的に時間がかかるため、その理由を解説
2. MVNOでGPSの位置情報取得を高速にできるのか?
-> キャリア端末でもアプリを使えば高速化出来ます!(ただし、一部端末ではダメ)GPSのTTFFを高速化するA-GPSについて解説実際にA-GPSを利用したTTFFを測定して確認
23
おまけ
- Apple(iPhone)のA-GPSの実装- A-GPSサーバとのSUPLプロトコル解析
- dcm-supl.comのSUPLプロトコル解析- supl.google.comのSUPLプロトコル解析
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: ?
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
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
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
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]^^^^^^^^^^^^^^ここでキャプチャ
29
A-GPSサーバとのSUPLプロトコル解析-2
•SUPLプロトコルの基本的なやりとり
[端末] ------ SUPLSTART ----- [SUPLサーバ]---- SUPLRESPONSE----
------ SUPLPOSINIT -------- SUPLPOS ---------
• (注意) TCP/SSL通信なので前後に他のシーケンスがあるが詳細略
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
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
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
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
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
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でデコード
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動作せず
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)
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)
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時刻 ->
位置情報 ->
エフェメリス ->
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
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)
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
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モデル->
補正情報 ->
アルマナック->
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/