Les applications Android de fix pour améliorer la réception GPS
Suite au décès de mon Samsung Galaxy S Wifi, j'ai dû me rabattre sur son collègue Samsung Galaxy S2 pour continuer à enregistrer mes parcours de randonnée roller. Las, les performances GPS de l'appareil sont calamiteuses ! Il met jusqu'à 30 min pour enfin accrocher une position, alors que l'autre y parvenait en parfois moins d'une minute (je constate qu'en revanche le GPS est bien moins gourmand en batterie que sur mon Galaxy S wifi)…
Ce souci est connu, les utilisateurs s'en plaignent à longueur de forums. Des petits malins bricolent une extension d'antenne avec de l'aluminium afin d'améliorer la réception. D'autres proposent des solutions nécessitant un certain niveau technique (flash, avec ROM non d'origine). Enfin, la majorité vantent les mérites d'applications censées améliorer la vitesse de « fix ».
Si vous avez la flemme de lire l'article jusqu'au bout, sachez que la solution que j'ai trouvée, c'est de
- poser mon Samsung à l'extérieur sur la terrasse
- activer le GPS
- lancer GPS Locker (la seule application qui ait montré un peu d'efficacité) et l'application que je compte utiliser avec le GPS
- patienter
Ça fixe en moins de 2 minutes. Mais surtout, le faire à l'arrêt complet, pas pendant qu'on se déplace.
Un peu de théorie
Une trentaine de satellites GPS envoie périodiquement des données sur Terre sur une fréquence porteuse de 1,5 GHz. Ces données contiennent, entre autre, la date d'émission de la trame. Cette date est générée de manière très précise par une horloge atomique intégrée au satellite. Le récepteur (ici le smartphone), ne possède pas la même précision d'horloge : l'heure entre l'émetteur et le récepteur n'est pas synchronisée.
Pour trouver sa position sur terre, le récepteur interprète la différence de temps entre l'émission de la trame et sa réception. Avec cette information et la vitesse de transmission des ondes il peut calculer simplement la distance qui le sépare du satellite. Cependant pour que cette information lui soit utile il faut qu'il connaisse auparavant la position du satellite, alors que celle-ci évolue sans cesse.
Lorsque quatre satellites sont en vue et que le récepteur connait la position des satellites, celui-ci il peut calculer un système d'équation à quatre inconnues : latitude, longitude, altitude et heure précise. Cela lui donne sa position précise sur Terre.
Récupérer les positions via A-GPS
On va utiliser une connexion (wifi ou data) afin de télécharger des données qui permettront de récupérer la position de tous les satellites à un instant donné (on les appelle des éphémérides) à partir d'un serveur NTP (Network Time Protocol). C'est le A-GPS (Assisted GPS). Le système GPS lui-même est capable de transmettre ces éphémérides, mais à une vitesse très lente (et ça consomme plus de batterie que via A-GPS).
La validité dans le temps des données téléchargées est courte, quelques heures au maximum. Il faut donc le faire juste avant le départ en rando…
On peut également les récupérer par FTP et les copier dans /data/misc (mais ce répertoire est introuvable sur le Galaxy S2, donc je n'ai pas pu tester)
Les applications censées améliorer la sensibilité du GPS en exploitant le A-GPS sont en général peu intuitives et assez moches, totalement dépourvues du moindre tuto. L'interface est, soit spartiate à tel point qu'on ne sait même pas quoi faire avec, soit au contraire elles regorgent tellement d'infos qu'on est noyé dans tous ces chiffres et sigles, et ces points qui bougent sur l'écran.
Par ailleurs, il faut être en extérieur pour capter les satellites ! Or, ma connexion wifi n'est disponible qu'à l'intérieur de mon appartement… Pas simple pour les tests !
Mais surtout, quelle que soit l'application testée, le résultat est toujours aussi décevant, je n'ai constaté aucune amélioration dans le délai de détection de la position GPS.
Nous allons néanmoins passer en revue ces différentes applications…
Mon protocole de test : j'active le GPS et le wifi. Je télécharge les données A-GPS si l'application correspondante le permet. Je coupe le wifi et je sors. Tout en laissant tourner l'application, je lance Sports Trackers, l'application qui me sert à mesurer mon parcours et je regarde au bout de combien de temps celle-ci trouve la position.
Applications pour définir un serveur NTP
FasterFix
Le téléphone doit être rooté. BusyBox doit être installé (c'est à dire, après l'avoir téléchargé sur Play Store, entrer dans l'application BusyBox, patienter, cliquer sur install, patienter, croiser les doigts si on n'a pas beaucoup d'espace…), sinon FasterFix se contentera d'afficher un écran noir.
 Â
FasterFix permet de définir un serveur NTP qui permettra la synchronisation des horloges du satellite et du téléphone. La précision est meilleure lorsque le serveur de temps est situé près du client, donc autant prendre un serveur français.
Ensuite, on est censé lancer une 2e application, par exemple GPS Status ou GPS Test pour tester si la manip a fonctionné.
FasterGPS
FasterGPS se veut l'alternative open source de FasterFix pour synchroniser les horloges du satellite et du téléphone. L'application n'est plus en développement actif. Comme dans le cas de FasterFix, le téléphone doit être rooté.
Aux premiers lancements, je ne suis jamais parvenue à afficher autre chose qu'un écran noir… Après un reboot du téléphone, l'application a affiché une demande d'accès root et j'ai enfin pu l'utiliser.
Je constate au passage que le téléphone a bien conservé le nom du serveur français fr.pool.ntp.org que j'avais précédemment défini sous FasterFix.
Applications pour améliorer la détection de la position
La seule qui ait fonctionné : GPS Locker
Cette application travaille en tâche de fond, et continue à forcer le GPS à recherche sa position même lorsque l'écran se met en veille. Je n'ai pas bien compris à quoi servait le bouton « Lock GPS » en bas…
Lorsque l'application est lancée, une icône assez similaire à l'icône « cible » GPS classique, mais avec un petit cadenas, apparaît dans la zone de notifications en haut de l'écran.
Â
Comme la plupart des autres applications de ce chapitre, il permet de forcer la mise à jour des données A-GPS (Menu > Force update a-GPS data). Le téléchargement des données A-GPS est très rapide (enfin je suppose… le toast annonçant le téléchargement des données apparaît très rapidement en tout cas).
Je n'ai pas compris à quoi servaient les deux premières options de l'écran Settings, et comme toujours il n'existe aucun tuto ou site web de support pour l'application… Cela restera un mystère.
En revanche, l'application améliore considérablement la vitesse de récupération de la position. Je constate en revanche que le délai de récupération varie selon notre vitesse de déplacement (moins on se déplace vite, plus les positions semblent rapidement trouvées) :
- à l'arrêt (sur le balcon) : 147s
- en marchant : 3-4 min
- en me déplaçant à roller : 10 min
- en me déplaçant en voiture : 15 min
Je n'ai pas l'impression que le fait de rafraîchir les éphémérides en forçant la mise à jour des données A-GPS améliore la rapidité de fix.
L'application a la délicatesse de mesurer le temps au bout duquel la position est trouvée, et on peut même lui demander de jouer un son. Je constate néanmoins un petit décalage entre le moment où il annonce son « first fix », et le moment où Sports Tracker trouve réellement sa position, un décalage qui peut même parfois aller jusqu'à plusieurs minutes en voiture.
Lorsqu'une position est trouvée, les barres de certains satellites se colorent.
Lors d'un 2e test un peu plus tard, je constate que le temps au bout duquel la position est trouvée s'est encore raccourci : un peu plus d'une minute. Mon hypothèse : les éphémérides récupérées au cours du 1er fix sont plus précises que celles récupérées via wifi, et permettent donc une récupération de la position plus efficace.
GpsFix
D'après son descriptif, elle force le récepteur GPS/AGPS à rester actif tant que la position n'est pas acquise.
L'interface est brute de pomme : une map, un bouton Start fixing, un bouton Stop fixing. Et des pictos de GPS qui apparaissent progressivement. C'est long, pas du tout efficace (la position GPS n'est pas trouvée plus rapidement que d'habitude), et on n'y comprend rien…
 Â
GPS Status & Toolbox
L'interface affiche les données du capteur GPS : position et force du signal satellite, précision, vitesse, accélération, altitude, rotation, tangage, roulis et charge batterie. On est un peu noyé et on ne comprend pas bien ce que l'on est censé faire avec tout ça. L'absence de données de référence n'aide pas vraiment à diagnostiquer les problèmes.
 Â
Dès qu'on active le GPS, une icône représentant une parabole satellite de profil avec une petite croix apparaît dans la zone de notifications en haut de l'écran du smartphone.
Afin de charger à nouveau les données A-GPS : Menu > Outils> Gérer l'état A-GPS > Télécharger. La procédure est très rapide, mais on ne sait pas sur quel serveur NTP il va chercher. Et au final, le GPS met toujours autant de temps à trouver sa position.
GPSTest
L'application affiche toutes les informations récupérées à partir du  GPS du smartphone, la position des satellites dans le ciel, notre position sur une carte (sauf qu'il ne la trouve jamais, donc…). Bref, une interface bien touffue, des chiffres dans tous les coins, on ne comprend pas bien ce qui se passe. Et, en attendant, le GPS ne se cale toujours pas.
Pour info : SNR veut dire signal to noise ratio.
 Â
 Â
Même avec 12 satellites trouvés, la position n'est toujours pas acquise ! Je croyais que 4 satellites suffisaient ?
Afin de charger à nouveau les données A-GPS : Bouton menu (ou icône ellipsis en haut à droite) > Clear A-GPS, puis Update A-GPS. Il serait intéressant de savoir sur quel serveur il se base : le français défini dans FasterFix ? Un autre ? Contrairement à GPS Status, la procédure est vraiment très longue.
GPS Data
C'est l'application qui est utilisée dans tous les tests de smartphones sur FrAndroid. Enfin une belle interface, qui se prête bien aux captures d'écran… Hélas, il n'est pas plus efficace que les autres pour améliorer la détection de la position.
L'application affiche les données récupérées à partir du GPS du smartphone, la position des satellites dans le ciel, la force du signal. Là encore, beaucoup de données, mais le néophyte complet se demande vraiment ce qui se passe…
Sous l'onglet signal, on a la liste des satellites. Le 1er chiffre est le PRN number du satellite (pseudo-random noise) que celui-ci transmet pour se différencier des autres.
Applications pour passer le GPS en statique
GPS Control SiRF StarIV
Cette application permet d'activer la fonctionnalité « navigation statique » sur certains Samsung Galaxy. D'après le descriptif de l'application, lorsque cette fonctionnalité est activée, le GPS ne filtre plus les données GPS et met à jour la position à 1Hz même quand l'appareil ne se déplace pas. Utile pour toutes les applications nécessitant une mise à jour permanente de la position. Le téléphone doit être rooté.
Je lance l'application, celle-ci demande les droits root, je les lui accorde. Un toast « Cannot write to external storage » passe de manière fugace. Les deux boutons « Enable static navigation » et « Disable static navigation » sont tous les deux inactifs.
Dans les commentaires sur l'application sur le Play Store, tout le monde se plaint de l'absence de compatibilité avec Jelly Bean. Pas de chance pour moi, mon Galaxy S2 est sous 4.1.2, le test s'arrête donc là …
Conclusion
Aucune de ces applications n'a démontré la moindre efficacité pour améliorer la réception GPS sur le Samsung Galaxy S2. Dommage !
Sources
Améliorer le fix GPS des smartphones Android Wiko