Montag, 5. August 2013

HowTo: GPS Fix - schnellere Ortung (Android)

GPS ist schon eine feine Sache; man kann seinen (genauen) Standort innerhalb einiger Sekunden bestimmen. Jedoch kommt es bei manchen Geräten vor, dass die Ortung mehrere Minuten dauert. Oft tritt dies bei Custom-ROMs oder auch bei Stock-ROMs, die nicht gänzlich auf das jeweilige Land angepasst sind.

Theoretisch braucht ein Gerät für eine GPS Ortung nur vier Satelliten. Den Rest berechnet es selbst. Das Problem dabei ist, dass man den Standort nicht einfach berechnen kann, er wird langsam immer genauer angenähert.
Hierbei machen die Geräte einen kleinen Trick, indem sie ihre eigene (über NTP Server synchronisierte) Zeit mit einberechnen. Damit haben sie schon ein Anfangsgebiet mit dem sie jetzt weiterrechnen können.

Das Problem bei vielen ROMs ist jetzt, dass die Zeit über amerikanische Server synchronisiert wird. An sich ist das ja nicht das Problem, da bei der Ortung immer das UTC Time Format genutzt wird. Jedoch kommt es bei der Synchronisation über die US-Server zu vergleichsweisen großen Latenzen.
Bei meinen Versuch north-america.pool.ntp.org anzupingen kam ich auf durchschnittliche 180 ms. Deutlich schneller, falls man sich in Deutschland befindet, sind hier die "eigenen", deutschen Server. (Bei 2.de.pool.ntp.org kam ich beispielsweise auf 20 ms).
Man könnte zwar einfach die halbe Ping-Dauer wegrechnen, aber die über einen deutschen Server synchronisierte Zeit ist dennoch deutlich genauer.

Unter Android findet sich die Konfiguration des NTP-Server unter /system/etc/gps.conf und man braucht ein gerootetes Gerät, um diese Datei zu bearbeiten. Einfach die NTP Server Adresse ändern. Ebenso ist es möglich mehrere Adressen (als Fallback, falls mal eine ausfällt) zu nehmen.

Nachtrag: Die App, die ihr zum Bearbeiten nutzt, sollte auch Root unterstützen.
Ich benutze meist den "ES Datei Explorer", hier gibt es im Schnellzugriff (die Linkesidebar), unter Werkzeuge die Option Root-Explorer. Diese sollte aktiviert sein. Und die Datei dann mit dem eigenen Editor der App öffnen.

Das ganze sieht dann in etwa so aus (anstelle der 1. Zeile):
NTP_SERVER=2.de.pool.ntp.org
NTP_SERVER=3.de.pool.ntp.org
NTP_SERVER=0.de.pool.ntp.org
NTP_SERVER=1.de.pool.ntp.org
NTP_SERVER=de.pool.ntp.org
NTP_SERVER=europe.pool.ntp.org
 Jetzt noch speichern und neustarten. Und fertig ist der Fix. :)

15 Kommentare:

  1. Hi,
    ich kann die gps.conf nach der Änderung, trotz gerootetem Handy, leider nicht abspeichern.
    Es erscheint die Meldung: Fehler beim Speichern der Datei. Es wird nichts gespeichert.

    AntwortenLöschen
    Antworten
    1. du musst zur Bearbeitung der Datei eine App benutzten die Root unterstützt.
      Alternativ kopierst du die Datei, bearbeitest die Kopie und verschiebst die Datei wieder zurück (wieder mit einer App die Root unterstützt (ES File Explorer)

      Löschen
  2. Hallo, hab ich vergessen zu erwähnen, das Programm, mit dem du die Datei änderst, sollte Root Unterstützung haben.
    Also ich benutze den "ES Datei Explorer", hier gibt es im Schnellzugriff (die Linkesidebar), unter Werkzeuge die Option Root-Explorer. Diese sollte aktiviert sein. Und die Datei dann mit dem eigenen Editor der App öffnen

    AntwortenLöschen
  3. Wie sieht es mit den Leerzeichen zwischen den Servern aus? Mit oder ohne? Leerzeichen oder Enter? Oder keine zwischen den ersten vier und dem fünften und sechsten?

    AntwortenLöschen
    Antworten
    1. Anscheinend hat es die Formatierung etwas zerschossen.. Habe es jetzt mal wieder aktualisiert.. (Jeden Server in eine neue Zeile)

      Löschen
    2. Danke für die schnelle Antwort. Also neue Zeile bedeutet ENTER, okay danke

      Löschen
    3. Funktioniert super, danke. Innerhalb von 3 Sekunden, wenn noch keine Ortung erfolgte. Innerhalb 1 Sekunde wenn GPS schon verwendet wurde. Also sofortige Ortung. GENIAL

      Löschen
    4. NTP_SERVER=2.de.pool.ntp.org
      NTP_SERVER=3.de.pool.ntp.org
      NTP_SERVER=0.de.pool.ntp.org
      NTP_SERVER=1.de.pool.ntp.org
      NTP_SERVER=de.pool.ntp.org
      NTP_SERVER=europe.pool.ntp.org
      XTRA_SERVER_1=http://xtra1.gpsonextra.net/xtra.bin
      SUPL_PORT=7276
      XTRA_SERVER_3=http://xtra3.gpsonextra.net/xtra.bin
      SUPL_HOST=supl.google.com
      XTRA_SERVER_2=http://xtra2.gpsonextra.net/xtra.bin

      Löschen
  4. Bei mir klappt es nicht kriege immer Antwort ²Fehler beim Speichern der Datei. Es wurde nichts gespeichert!!!"

    AntwortenLöschen
    Antworten
    1. Hast du ein gerootetes Gerät? bzw. verwendest du zum Bearbeiten eine App, die Root unterstützt?

      Löschen
    2. Ja hab ich und ich mache es mit ES Datei Explorer

      Löschen
    3. und Root-Explorer hast du in der App aktiviert? (siehe oben)
      ansonsten könnte es noch sein, dass du zum bearbeiten eine andere App nutzt.

      Du könntest auch einfach mal die Datei auf deinen normalen Speicher kopieren, dort bearbeiten und anschließend zurück verschieben und ersetzen.

      Löschen
  5. Man muss neben dem gerooteten Datei-Explorer auch die /system Partition als RW einbinden, sonst hat man zwar root Zugriff auf der App, aber trotzdem keine Schreibrechte.
    Beim ES-Datei-Explorer Werkzeuge, auf das "Root Explorer" drücken (nicht aufs AN/AUS), dort "Als R/W einbinden" und dort die /system auf RW setzen. Dann sollte das mit dem Speichern klappen.

    AntwortenLöschen
  6. Ein Frage schon gut alles sehr gut geklappt aber bei mir habe ich bei XTRA_SERVER ganz andere Adressen wie euch? muss ich das auch ändern oder nur ntp server?

    AntwortenLöschen
  7. Der Kommentar wurde von einem Blog-Administrator entfernt.

    AntwortenLöschen

HowTo: manuelles installieren von APK Dateien

Manchmal möchte man Apps installieren, die es bei Google Play  nicht mehr gibt, wie Adblock bzw. noch nicht gibt, wie die zahlreichen Apps,...