Le problème du GPS dans les vieux appareils iOS (et comment le régler partiellement)

Vous en avez peut-être entendu parler en avril, un bug dans le standard GPS a rendu inutilisable quelques vieux appareils. Apple a été touché plus récemment (le 3 novembre) et je me suis donc posé une question : qu’est-ce que ça implique ?

Premièrement, un peu de théorie. La norme GPS comptait les semaines avec un compteur sur 10 bits (1 024 possibilités), ce qui implique une remise à zéro tous les 20 ans environ. A la remise à zéro, la gestion de l’heure va poser des soucis, sauf si une mise à jour de l’appareil passe le compteur sur 13 bits (8x plus de possibilités). Les constructeurs ont généralement proposé une mise à jour en avril (ou avant), vu la date butoir. Assez bizarrement, Apple a visiblement compté les semaines à partir d’une date un peu plus tardive que les autres et le problème n’est donc survenu que cette semaine.

Apple a mis à jour l’iPhone 4S, l’iPhone 5, l’iPad mini cellulaire, ainsi que les iPad 2, 3 et 4 cellulaires. Les appareils précédents (iPhone 3G, 3GS et 4) ainsi que l’iPad cellulaire (le premier) ne sont pas à jour. Pour les autres appareils iOS (iPhone, iPod touch, iPad), il n’y a pas de GPS, donc pas besoin de correction. Pour les suivant, un OS à jour suffit à corriger le problème. Si vous restez sur un vieil iOS pour une raison x ou y, ça risque de mal fonctionner.

Petit test

A la base, je voulais tester avec un iPhone 3GS sous iOS 6, un iPhone 4 sous iOS 7, un iPhone 4S sous iOS 6 (oui, Apple le permet), un iPad sous iOS 5 et un iPhone 5 avec la dernière mise à jour d’iOS 10, qui corrige le problème. En pratique, je n’ai pas réussi à faire un fix GPS avec l’iPhone 3GS et l’iPad 3G (rester dehors au même endroit dégagé pendant plusieurs minutes, c’est vite énervant). Je ne sais pas si le problème vient du bug ou des appareils qui captent mal. Au même endroit, l’iPhone 5 captait correctement, ceci dit. L’iPhone 4S a décidé de partir en boot loop avant la fin des tests (oups). Avec l’iPhone 4, j’ai bien eu le bug, même si là aussi, le téléphone est assez lent à faire le fix. Pour les tests, j’avais désactivé le Wi-Fi et le Bluetooth et utilisé les appareils sans carte SIM : ça forçait donc le fix GPS sans éphémérides, donc ça prend plusieurs minutes.

La date n’est pas la bonne

Le résultat ? C’est un peu compliqué. La localisation continue à fonctionner, en réalité. L’appareil se positionne bien, que ce soit en GPS ou en Wi-Fi. Par contre, la localisation GPS va modifier la date, à une valeur erronée. Et une fois la date changée pour une valeur au début des années 2000, vous aurez des problèmes de connexion. beaucoup de sites et d’applications n’apprécient tout simplement pas des dates 20 ans en arrière.

Les solutions

Sur les appareils touchés qui acceptent iOS 9 (au moins), la solution va être de mettre à jour l’appareil. Apple a corrigé le bug sur pas mal de modèles. Pour les autres, une solution simple va être de fixer la date manuellement. Dans Général -> Date et heure, il faut décocher la case Réglage automatique et fixer manuellement la date. Si jamais l’appareil est déjà revenu en 2000, comme sur la capture, cochez la case quelques seconde avant de la décocher. Normalement, ça suffit pour que l’iPhone se synchronise en NTP (à la bonne heure) sans récupérer l’heure sur un fix GPS. Le problème ne se pose que sur quelques appareils : iPhone 3G, iPhone 3GS, iPhone 4 et iPad 3G. Les autres appareils iOS ont soit un correctif, soit n’ont pas de récepteur GPS.

Il faut fixer l’heure manuellement

Normalement, vous ne devrez pas voir de grosse dérive de l’heure, mais dans le pire des cas un passage en réglage automatique quelques secondes devrait suffire. Après, le bug bloque sûrement les logiciels de navigation sur le temps de parcours, mais je suppose que sur des appareils de cet âge, ce n’est pas un énorme problème.