Stombi Home Page

Android : GPS fix téléphone chinois

Android phone : Q9000

Les GPS intégrés dans les téléphones chinois ne sont pas souvent optimisés pour le réseau français.

Par exemple le mien sur un téléphone Noname MTK6589 Q9000 faisait un peu n’importe quoi et prenait une éternité pour détecter les satellites (du genre 5 minutes en se déplaçant en voiture). Maintenant c’est entre 5 et 30 secondes.

Pour cela j’ai juste eu à ajouter 2 fichiers de configuration :

  • gps.conf
  • et gpsconfig.xml
(gps.conf) download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
NTP_SERVER=0.fr.pool.ntp.org
NTP_SERVER=1.fr.pool.ntp.org
NTP_SERVER=2.fr.pool.ntp.org
NTP_SERVER=3.fr.pool.ntp.org
XTRA_SERVER_1=http://xtra2.gpsonextra.net/xtra.bin
XTRA_SERVER_2=http://xtra1.gpsonextra.net/xtra.bin
XTRA_SERVER_3=http://xtra3.gpsonextra.net/xtra.bin

# DEBUG LEVELS: 0 - none, 1 - Error, 2 - Warning, 3 - Info
# 4 - Debug, 5 - Verbose
DEBUG_LEVEL =0

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

# Accuracy threshold for intermediate positions
# less accurate positions are ignored, 0 for passing all positions
ACCURACY_THRES=0

# Report supl ref location as position, 1=enable, 0=disable
REPORT_POSITION_USE_SUPL_REFLOC=1

# Wiper (wifi positioning), 1=enable, 0=disable
ENABLE_WIPER=1

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

# FOR SUPL SUPPORT, set the following
SUPL_HOST=supl.google.com
SUPL_PORT=7276
SUPL_NO_SECURE_PORT=7276
SUPL_SECURE_PORT=7276

# FOR C2K PDE SUPPORT, set the following
# C2K_HOST=c2k.pde.com or IP
# C2K_PORT=1234

#################################
##### AGPS Carrier settings #####
#################################
CURRENT_CARRIER=common
DEFAULT_AGPS_ENABLE=TRUE
DEFAULT_SSL_ENABLE=FALSE

# TRUE for "User Plane", FALSE for "Control Plane"
DEFAULT_USER_PLANE=TRUE
(gpsconfig.xml) download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
<?xml version="1.0" encoding="utf-8"?>
<glgps xmlns="http://www.glpals.com/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.glpals.com/ glconfig.xsd" >

<!-- It is highly recommended to view/edit this file with syntax-highlighting
    editors such as notepad++ or vim. This way, one can easily distinguish
    comments and valid code.

    This file is a primary template for Linux-like platforms.
-->

<!-- HAL essentials: Serial port, log, NMEA, IRM, NVRAM, LTO -->
<hal
    acPortName="/dev/ttyMT0"
    lBaudRate="115200"

    cLogEnableInitState="false"
    cLogEnabled="false"
    acLogDirectory="/data/gps/log/"

    acNmeaOutName="/data/gps/gpspipe"

    ctrlPipe="/data/gps/glgpsctrl"
    acNvStoDir="/data/gps/"

    ltoFileName="lto.dat"
/>

<!-- GPIO is essential for reliable host interface reset and power saving.
    There are currently two mutually exclusive mechanisms (sysfs or rfkill) to
    GPIO control the REGPU or NSTANDBY pin on the GNSS chipset.
-->

<!-- GPIO sysfs (in most cases) -->
<hal
    gpioNStdbyPath="/sys/class/rfkill/rfkill1/state"
    gpioNResetPath="/sys/class/sec/gps/GPS_nRST/value"
    gpioDelayMs="150"
/>

<!-- Android: -->
<hal
    lcsApiSockName="/data/gps/gps"
/>

<!-- GPIO rfkill -->
<!--hal
    rfkillNStdby="gps"
/-->

<!--  (Re)aiding configuration options for LBS, SUPL (depending on type selected) -->
<!--
Re-aiding type (0-none, 1-SUPL, 2-LBS, 3-LBS and SUPL)
Re-aiding retry interval in seconds.
Re-aiding interval in seconds.
-->

<hal
    ReAidingType="1"
    ReAidingRetryIntervalSec="20"
    ReAidingIntervalSec="1200"
/>

<!-- Location-Base-Services (LBS)  -->
<hal
    LbsEnable="true"
    LbsLocal="false"
    LbsServer="bcmls2.glpals.com"
    LbsPort="7275"
    LbsSyncTimeSec="60"
    LbsSyncLto="true"
    LbsSyncCells="true"
/>

<!-- SUPL: only applicable to devices with cellular modem
    "arp-supl-use-apn" is attribute used in Android only
 -->
<hal
    arp-supl-enable="true"
    arp-supl-cap-msb="true"
    arp-supl-cap-msa="true"
    arp-supl-cap-ecid="false"
    enhanced-assisted="false"
    arp-supl-use-apn="true"
    acSuplServer="supl.google.com"
    SuplPort="7276"
    tlsCertPath="/system/etc/security/"
    TISEnabled="false"
    RILEnabled="true"
/>

<!-- Client-Base Extended Ephemeris (CBEE) -->
<hal
    acEEDir="/data/gps/"
    acEEFileName="cbee.cbee"
    arp-cbee-write-nvmem-on-new-be="true"
    arp-cbee-signal-cbeegen-on-new-be="true"
    arp-cbee-cbeegen-app-path="/data/gps/cbee_gen"
    arp-cbee-cbeegen-app-param="-debug -ln=/data/gps/log/cbee_gen_log.txt"
/>

<!-- Control Plane: only applicable to devices with cellular modem-->
<hal
    cp-enhanced-assisted="false"
    LPmode="false"
    cp-cold-start="false"
    cp-guard-time-sec="1"
/>

<!-- Sensors: Valid on Android 2.3 or higher -->
<hal
    SensorsEnable="false"
    SensorsMask="0F"
    SensorsLog="true"
    SensorsType="5"
    SensorsMoEnable="true"
    SensorsTurnEnable="false"
    SensorsRawAcclGyroEnable="false"

    SensorsStepEnable="false"
    SensorsAcclInRunBiasCal="true"
    SensorsEstBiasInWalking="true"
    req_pos.acc="1000"
/>

<!----------------------------------------------------------------------------->
<!-- GLL Engine: See glgpsapi.h for supported parameters -->
<gll
    LogPriMask="LOG_INFO"
    LogFacMask="LOG_GLLAPI | LOG_NMEA"
    FrqPlan="FRQ_PLAN_16_369MHZ_2PPM"
    RfType="GL_RF_4751_DANUBE"
    WarmStandbyTimeout1Seconds="0"
    WarmStandbyTimeout2Seconds="0"
/>

<!-- Pulse-Per-Second (PPS) -->
<gll
    pps-enable="false"
    pps-offset-ms="0"
    pps-width-ns="100"
/>

<!----------------------------------------------------------------------------->
<!-- List of jobs can be performed by the GPS controller    -->
<!-- Periodic Position Fix using default settings -->
<job id="Normal">
    <task>
        <req_pos/>
    </task>
</job>

<!-- Periodic Position Fix using default settings -->
<job id="Periodic">
    <task>
        <req_pos/>
    </task>
</job>
</glgps>

Voilà ce qu’il faut faire, attention il faut avoir les droits root sur le téléphone.

  • Copiez les fichiers sur la carte SD
  • Utilisez un terminal pour monter /system en lecture/écriture (rw). J’utilise Android Terminal Emulator
1
2
$ su
# mount -o rw,remount /system
  • Copiez ou déplacez les fichiers avec un gestionnaire de fichiers dans /system/etc/. J’utilise ES Explorateur de Fichiers
  • Remettez les bonnes permissions sur les fichiers : rw-r--r--. (Facile à faire avec ES Explorateur dans les propriétés des fichiers)
  • Remontez /system en lecture seule (ro)
1
# mount -o ro,remount /system
  • Redémarrez le téléphone.

Source avec plus d’info : forum.jtgeek.com

Comments