最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

安卓手机AGPS卫星定位困难的深入分析

IT圈 admin 44浏览 0评论

2023年12月19日发(作者:繁琳溪)

安卓手机AGPS卫星定位困难的深入分析

wxleasyland@

2015.12

一、AGPS的强大

最近做了一个测试安卓手机GPS的APP,结果有了意外发现。

三星新出的手机SM-J5008,刚打开GPS时(没定位成功),无论在室内还是室外,就马上能检测到20多颗星!

其中有很多颗卫星,手机中已经有它的历书和星历了!!!

而以前的所有手机,包括谷歌I9250、三星I9300、国产手机等,刚打开GPS时,均是0颗星:

没有任何卫星的星历,即使过了好几分钟,也是没有!

所以J5008的卫星定位速度非常快,实测在信号很差的地方打开GPS:

J5008:在1分钟内就能定位成功;

其它手机:半小时了,还是定位不上;

蓝牙GPS外置装置:约10分钟,定位成功;

这就是AGPS的强大吧!

但是,其实所有的手机都是支持AGPS的!那问题出在哪里呢?

二、修改文件,SUPL位置服务器

把I9250和国产手机拿来做实验,按网上说的,修改etc/文件。

原来文件中的内容是这样的:

XTRA_SERVER_1=/

XTRA_SERVER_2=/

XTRA_SERVER_3=/

SUPL_HOST=

SUPL_PORT=7276

加上一行NTP_SERVER=

修改SUPL_HOST=

修改完后,需要重启手机才能认新的设置!

两个手机修改后,发现仍然是和原来搜星的速度差不多的,没有秒开。打开GPS,也仍是0颗星。

后来,又发现国产手机手机设置里,有增强GPS设置,SUPL服务器可选NOKIA、GOOGLE、CHINA MOBILE!但无论选哪个,均没有什么效果。

继续分析:

1. 电脑连接SUPL服务器

试着用电脑连接的端口7275或7276,都可以连得上,说明sirf服务器没问题。

试着连的7275或7276端口,均连接不上,说明google被墙了。

试着连的7275端口,可以连上,而7276端口连接不上。

2. 服务器

7276或7275端口:手机直接上网,GPS开始运行时,用“终端模拟器”netstat看,发现有连接到的端口,是ESTABLISHED,但是很快就变成FIN_WAIT1,然后就没了。

3. 服务器

手机直接上网,GPS开始运行时,用“终端模拟器”netstat看,连接到 的7275端口是SYN_SENT了一会,然后就没有了。

再次试验,则是马上CLOSE_WAIT,很快就没有了。

从上面的连接情况看,好像SUPL服务器连上后,就被踢出来了,没有正常通讯。

三、XTRA星历文件

从/、xtra2或xtra3下载的文件,均是一样的,文件没有差异!!

约20分钟左右,文件就更新了,不一样了。

说明这个文件就是星历,记载了当前时间天空中各个卫星的所在位置和运行方向情况。

但这个文件的内容都是二进制的,格式不清楚。

四、分析和结论

其实,要实现快速定位,很简单,只需要知道当前位置的大概经纬度、当前天空中所有卫星的位置和运行方向(星历),就可以了!!

星历很容易下载!

那当前位置的大概经纬度,不是也很容易吗,我自己只需要得到手机基站的ID,再在基站定位网站上查一下,就得到了啊。

SUPL位置服务器应该就是做这个事的,把你的大概位置发给你,并且应该可以把你天空中的所有卫星的方向角、仰角等信息发给你,你就可以快速定位了。

但是,图样图森破。

我们自己可以下载星历,自已可以很容易根据基站ID反查到当前位置的大概经纬度,但是你自己没办法把这些数据写入到AGPS芯片中的,所以没有用的!

AGPS芯片是一个商业化的商品,别人家SUPL位置服务器凭什么免费给一个不认识的AGPS芯片服务?正如某网友说的,SUPL服务器不是你连接上,就能为你服务的!

AGPS芯片也不可能会拿基站ID到基站定位网站去查询当前位置,那基站定位网站也要向AGPS芯片厂商收费了。

唯一的指望是,有一个叫服务器,它应该是免费的,但是,google被墙掉了。好像记得以前我有用电脑连上过服务器的7276端口,但是现在已经连不上了。所以不知道它能不能有效果?

三星新推出的手机J5008能正常AGPS,可能是有交费过了。会不会过一段时间过期了,就不能用了,有这个可能。

所以,大家洗洗睡吧,靠修改SUPL服务器,一般是不能用的。不过试试也好,可能SUPL服务器良心发现了也不一定哦。

留着google的服务器也行,有时可能墙开了个洞也不一定哦。

以上为个人观点。

五、附J5008的文件

这个文件太复杂了,而且奇怪的是SUPL_HOST居然被#注释掉了,不知道原理是什么。附上供大家分析:

#Uncommenting these urls would only enable

#the power up auto injection and force injection(test case).

XTRA_SERVER_1=/

XTRA_SERVER_2=/

XTRA_SERVER_3=/

#Version check for XTRA

#DISABLE = 0

#AUTO = 1

#XTRA2 = 2

#XTRA3 = 3

XTRA_VERSION_CHECK=0

# Error Estimate

# _SET = 1

# _CLEAR = 0

ERR_ESTIMATE=0

#Test

NTP_SERVER=

#Asia

# NTP_SERVER=

#Europe

# NTP_SERVER=

#North America

# NTP_SERVER=

# DEBUG LEVELS: 0 - none, 1 - Error, 2 - Warning, 3 - Info

# 4 - Debug, 5 - Verbose

# If DEBUG_LEVEL is commented, Android's logging levels will be used

DEBUG_LEVEL = 4

# Intermediate position report, 1=enable, 0=disable

INTERMEDIATE_POS=0

# Below bit mask configures how GPS functionalities

# should be locked when user turns off GPS on Settings

# Set bit 0x1 if MO GPS functionalities are to be locked

# Set bit 0x2 if NI GPS functionalities are to be locked

# default - non is locked for backward compatibility

#GPS_LOCK = 0

# supl version 1.0

SUPL_VER=0x10000

# Emergency SUPL, 1=enable, 0=disable

SUPL_ES=0

# Sensor R&D : Non-SUPL ES should be default

#Choose PDN for Emergency SUPL

#1 - Use emergency PDN

#0 - Use regular SUPL PDN for Emergency SUPL

USE_EMERGENCY_PDN_FOR_EMERGENCY_SUPL=1

#SUPL_MODE is a bit mask set in per carrier by default.

#If it is uncommented here, this value will over write the value from

#.

#MSA=0X2

#MSB=0X1

SUPL_MODE=0x3

#Sensor R&D : Change default bit mask

# GPS Capabilities bit mask

# SCHEDULING = 0x01

# MSB = 0x02

# MSA = 0x04

# ON_DEMAND_TIME = 0x10

# GEOFENCE = 0x20

# default = ON_DEMAND_TIME | MSA | MSB | SCHEDULING | GEOFENCE

CAPABILITIES=0x37

# Accuracy threshold for intermediate positions

# less accurate positions are ignored, 0 for passing all positions

# ACCURACY_THRES=5000

################################

##### AGPS server settings #####

################################

# FOR SUPL SUPPORT, set the following

# SUPL_HOST= or IP

# SUPL_PORT=1234

# FOR C2K PDE SUPPORT, set the following

# C2K_HOST= or IP

# C2K_PORT=1234

# Bitmask of slots that are available

# for write/install to, where 1s indicate writable,

# and the default value is 0 where no slots

# are writable. For example, AGPS_CERT_WRITABLE_MASK

# of b1000001010 makes 3 slots available

# and the remaining 7 slots unwritable.

#AGPS_CERT_WRITABLE_MASK=0

####################################

# LTE Positioning Profile Settings

####################################

# 0: Enable RRLP on LTE(Default)

# 1: Enable LPP_User_Plane on LTE

# 2: Enable LPP_Control_Plane

# 3: Enable both LPP_User_Plane and LPP_Control_Plane

LPP_PROFILE = 0 # Sensor R&D : This will not be injected to MODEM

################################

# EXTRA SETTINGS

################################

# NMEA provider (1=Modem Processor, 0=Application Processor)

NMEA_PROVIDER=1

# Mark if it is a SGLTE target (1=SGLTE, 0=nonSGLTE)

SGLTE_TARGET=0

##################################################

# Select Positioning Protocol on A-GLONASS system

##################################################

# 0x1: RRC CPlane

# 0x2: RRLP UPlane

# 0x4: LLP Uplane

A_GLONASS_POS_PROTOCOL_SELECT = 0 #Sensor R&D : This will not be injected

to MODEM

2023年12月19日发(作者:繁琳溪)

安卓手机AGPS卫星定位困难的深入分析

wxleasyland@

2015.12

一、AGPS的强大

最近做了一个测试安卓手机GPS的APP,结果有了意外发现。

三星新出的手机SM-J5008,刚打开GPS时(没定位成功),无论在室内还是室外,就马上能检测到20多颗星!

其中有很多颗卫星,手机中已经有它的历书和星历了!!!

而以前的所有手机,包括谷歌I9250、三星I9300、国产手机等,刚打开GPS时,均是0颗星:

没有任何卫星的星历,即使过了好几分钟,也是没有!

所以J5008的卫星定位速度非常快,实测在信号很差的地方打开GPS:

J5008:在1分钟内就能定位成功;

其它手机:半小时了,还是定位不上;

蓝牙GPS外置装置:约10分钟,定位成功;

这就是AGPS的强大吧!

但是,其实所有的手机都是支持AGPS的!那问题出在哪里呢?

二、修改文件,SUPL位置服务器

把I9250和国产手机拿来做实验,按网上说的,修改etc/文件。

原来文件中的内容是这样的:

XTRA_SERVER_1=/

XTRA_SERVER_2=/

XTRA_SERVER_3=/

SUPL_HOST=

SUPL_PORT=7276

加上一行NTP_SERVER=

修改SUPL_HOST=

修改完后,需要重启手机才能认新的设置!

两个手机修改后,发现仍然是和原来搜星的速度差不多的,没有秒开。打开GPS,也仍是0颗星。

后来,又发现国产手机手机设置里,有增强GPS设置,SUPL服务器可选NOKIA、GOOGLE、CHINA MOBILE!但无论选哪个,均没有什么效果。

继续分析:

1. 电脑连接SUPL服务器

试着用电脑连接的端口7275或7276,都可以连得上,说明sirf服务器没问题。

试着连的7275或7276端口,均连接不上,说明google被墙了。

试着连的7275端口,可以连上,而7276端口连接不上。

2. 服务器

7276或7275端口:手机直接上网,GPS开始运行时,用“终端模拟器”netstat看,发现有连接到的端口,是ESTABLISHED,但是很快就变成FIN_WAIT1,然后就没了。

3. 服务器

手机直接上网,GPS开始运行时,用“终端模拟器”netstat看,连接到 的7275端口是SYN_SENT了一会,然后就没有了。

再次试验,则是马上CLOSE_WAIT,很快就没有了。

从上面的连接情况看,好像SUPL服务器连上后,就被踢出来了,没有正常通讯。

三、XTRA星历文件

从/、xtra2或xtra3下载的文件,均是一样的,文件没有差异!!

约20分钟左右,文件就更新了,不一样了。

说明这个文件就是星历,记载了当前时间天空中各个卫星的所在位置和运行方向情况。

但这个文件的内容都是二进制的,格式不清楚。

四、分析和结论

其实,要实现快速定位,很简单,只需要知道当前位置的大概经纬度、当前天空中所有卫星的位置和运行方向(星历),就可以了!!

星历很容易下载!

那当前位置的大概经纬度,不是也很容易吗,我自己只需要得到手机基站的ID,再在基站定位网站上查一下,就得到了啊。

SUPL位置服务器应该就是做这个事的,把你的大概位置发给你,并且应该可以把你天空中的所有卫星的方向角、仰角等信息发给你,你就可以快速定位了。

但是,图样图森破。

我们自己可以下载星历,自已可以很容易根据基站ID反查到当前位置的大概经纬度,但是你自己没办法把这些数据写入到AGPS芯片中的,所以没有用的!

AGPS芯片是一个商业化的商品,别人家SUPL位置服务器凭什么免费给一个不认识的AGPS芯片服务?正如某网友说的,SUPL服务器不是你连接上,就能为你服务的!

AGPS芯片也不可能会拿基站ID到基站定位网站去查询当前位置,那基站定位网站也要向AGPS芯片厂商收费了。

唯一的指望是,有一个叫服务器,它应该是免费的,但是,google被墙掉了。好像记得以前我有用电脑连上过服务器的7276端口,但是现在已经连不上了。所以不知道它能不能有效果?

三星新推出的手机J5008能正常AGPS,可能是有交费过了。会不会过一段时间过期了,就不能用了,有这个可能。

所以,大家洗洗睡吧,靠修改SUPL服务器,一般是不能用的。不过试试也好,可能SUPL服务器良心发现了也不一定哦。

留着google的服务器也行,有时可能墙开了个洞也不一定哦。

以上为个人观点。

五、附J5008的文件

这个文件太复杂了,而且奇怪的是SUPL_HOST居然被#注释掉了,不知道原理是什么。附上供大家分析:

#Uncommenting these urls would only enable

#the power up auto injection and force injection(test case).

XTRA_SERVER_1=/

XTRA_SERVER_2=/

XTRA_SERVER_3=/

#Version check for XTRA

#DISABLE = 0

#AUTO = 1

#XTRA2 = 2

#XTRA3 = 3

XTRA_VERSION_CHECK=0

# Error Estimate

# _SET = 1

# _CLEAR = 0

ERR_ESTIMATE=0

#Test

NTP_SERVER=

#Asia

# NTP_SERVER=

#Europe

# NTP_SERVER=

#North America

# NTP_SERVER=

# DEBUG LEVELS: 0 - none, 1 - Error, 2 - Warning, 3 - Info

# 4 - Debug, 5 - Verbose

# If DEBUG_LEVEL is commented, Android's logging levels will be used

DEBUG_LEVEL = 4

# Intermediate position report, 1=enable, 0=disable

INTERMEDIATE_POS=0

# Below bit mask configures how GPS functionalities

# should be locked when user turns off GPS on Settings

# Set bit 0x1 if MO GPS functionalities are to be locked

# Set bit 0x2 if NI GPS functionalities are to be locked

# default - non is locked for backward compatibility

#GPS_LOCK = 0

# supl version 1.0

SUPL_VER=0x10000

# Emergency SUPL, 1=enable, 0=disable

SUPL_ES=0

# Sensor R&D : Non-SUPL ES should be default

#Choose PDN for Emergency SUPL

#1 - Use emergency PDN

#0 - Use regular SUPL PDN for Emergency SUPL

USE_EMERGENCY_PDN_FOR_EMERGENCY_SUPL=1

#SUPL_MODE is a bit mask set in per carrier by default.

#If it is uncommented here, this value will over write the value from

#.

#MSA=0X2

#MSB=0X1

SUPL_MODE=0x3

#Sensor R&D : Change default bit mask

# GPS Capabilities bit mask

# SCHEDULING = 0x01

# MSB = 0x02

# MSA = 0x04

# ON_DEMAND_TIME = 0x10

# GEOFENCE = 0x20

# default = ON_DEMAND_TIME | MSA | MSB | SCHEDULING | GEOFENCE

CAPABILITIES=0x37

# Accuracy threshold for intermediate positions

# less accurate positions are ignored, 0 for passing all positions

# ACCURACY_THRES=5000

################################

##### AGPS server settings #####

################################

# FOR SUPL SUPPORT, set the following

# SUPL_HOST= or IP

# SUPL_PORT=1234

# FOR C2K PDE SUPPORT, set the following

# C2K_HOST= or IP

# C2K_PORT=1234

# Bitmask of slots that are available

# for write/install to, where 1s indicate writable,

# and the default value is 0 where no slots

# are writable. For example, AGPS_CERT_WRITABLE_MASK

# of b1000001010 makes 3 slots available

# and the remaining 7 slots unwritable.

#AGPS_CERT_WRITABLE_MASK=0

####################################

# LTE Positioning Profile Settings

####################################

# 0: Enable RRLP on LTE(Default)

# 1: Enable LPP_User_Plane on LTE

# 2: Enable LPP_Control_Plane

# 3: Enable both LPP_User_Plane and LPP_Control_Plane

LPP_PROFILE = 0 # Sensor R&D : This will not be injected to MODEM

################################

# EXTRA SETTINGS

################################

# NMEA provider (1=Modem Processor, 0=Application Processor)

NMEA_PROVIDER=1

# Mark if it is a SGLTE target (1=SGLTE, 0=nonSGLTE)

SGLTE_TARGET=0

##################################################

# Select Positioning Protocol on A-GLONASS system

##################################################

# 0x1: RRC CPlane

# 0x2: RRLP UPlane

# 0x4: LLP Uplane

A_GLONASS_POS_PROTOCOL_SELECT = 0 #Sensor R&D : This will not be injected

to MODEM

发布评论

评论列表 (0)

  1. 暂无评论