Tempo di Lettura: 3 minuti
Incuriosito da un interessante articolo di Salanet, oggi ho tentato di capire meglio il funzionamento del sistema AGPS, in particolare di come funzionasse il download delle effemeridi dei satelliti GPS sui nostri dispositivi mobili.
Un po’ di teoria
Quando un sistema di navigazione GPS tenta di rilevare la sua posizione esatta, la prima operazione che deve essere in grado di eseguire è quella di riuscire ad individuare, nel minor tempo possibile, almeno tre satelliti in orbita e da questi raccogliere fondamentali indicazioni come la posizione degli stessi: è questo il famoso processo conosciuto come “fixing“. Con il fixing, infatti, il dispositivo mobile raccoglie i dati, li elabora, e quando le informazioni sono sufficienti “fissa” i satelliti. Il fixing può avvenire in tempi più o meno rapidi, in funzione della visibilità del cielo e della buona qualità del segnale ricevuto (>28 dB-Hz). Inoltre, siccome il satellite trasmette la propria posizione al terminale ogni 30 secondi, e non in ogni istante, se una qualsiasi causa interrompe lo scambio di dati, ad esempio il passaggio sotto un cavalcavia o l’avvicinarsi ad un alto edificio, il dispositivo dovrà attendere altri trenta secondi per riattivare il processo. Infine, il fixing dei satelliti, per essere coerente, va ripetuto ogni 4 ore.
Il ruolo dell’AGPS
Ed è qui che entra in gioco l’AGPS che, attraverso una connessione internet (via GPRS, via ActiveSync o via WiFi) , può preventivamente ottenere le informazioni relative alla posizione dei satelliti nell’orbita terrestre. Il problema è che, siccome i satelliti GPS non sono geostazionari, (orbitano a circa 20200 KM compiendo due orbite al giorno siderale intorno alla Terra) e la loro traiettoria può variare in misura infinitesimale rispetto a quella prestabilita, i dati scaricati attraverso il sistema AGPS saranno validi solo per un periodo di tempo limitato (che può variare da 3, 7 o 10 giorni; sul mio HTC TyTN II, per esempio, hanno una validità di 6 giorni e 23 ore) e sono in funzione di una determinata area geografica. In pratica, quindi, l’AGPS ha lo scopo di saltare la fase intermedia del “fixing”, per consentire l’avvio immediato del sistema di navigazione che non dovrà perdere tempo a cercare i satelliti (con un tempo di fixing che può variare da 10 a 30 secondi in condizioni ottimali, contro i 2-3 minuti senza AGPS)
Come scaricare manualmente le effemeridi
Bene, dopo questa spiegazione, mi è venuto spontaneo chiedermi da quali server il sistema AGPS scarica i dati e in quale formato. Dopo qualche ricerca su internet, ho capito che le effemeridi dei satelliti GPS sono contenute in un “XTRA data file” di circa 50 KB e che ha sempre il nome: xtra.bin (in qualche caso si potrà chiamare anche packedephemeris.ee).
Di solito, questo file viene scaricato da particolari server dedicati a cui i dispositivi mobili si collegano (via GPRS, via ActiveSync o via WiFi). Eccone alcuni prelevati dai registri di configurazione dei cellulari con Windows Mobile (qui un mio articolo su come ripristinare con un programma i dati dei server AGPS) o Symbian o dal file /etc/gps.conf degli smartphone con Android:
xtra1.gpsonextra.net
xtra2.gpsonextra.net
xtra3.gpsonextra.net
test.agps.com:7275
agps.orange.fr:7275
geoloc2.sfr.fr:7275
Se, però, avete la necessità di prelevare manualmente un file xtra.bin è sufficiente, per esempio, scaricare il file https://xtra1.gpsonextra.net/xtra.bin. Al momento solo i server gpsonextra.net permettono il download dei file attraverso la porta 80 (e quindi attraverso un qualsiasi browser); in particolare Android usa questa connessione HTTP sulla porta 80 (come si può appurare dal file /etc/gps.conf), mentre i dispositivi con Windows Mobile credo venga aperto un socket sulla porta 7275 di alcuni server (per cui, da questi server, non potrete scaricare il file xtra.bin direttamente dal browser).
xtra.bin sul HTC TyTN II
Dopo queste informazioni sono riuscito anche a localizzare il file xtra.bin sul mio smartphone HTC TyTN II. Infatti, ogni qualvolta lancio l’applicativo GPSRapido (QuickGPS in inglese) e vengono scaricate le effemeridi,
il file xtra.bin viene salvato sotto la cartella di sistema /Temp.
Ciao,
molto interessante l’articolo, ma non mi è chiaro una cosa.
Sapevo che l’A-GPS usava il GPRS per rintracciare i satelliti, ma ogni quanto lo fa? cioè se perde il segnale deve riconnettersi ai server via GPRS o si limita a leggere il file xtra.bin se è ancora valido?
Ma se il file xtra.bin ha una scadenza dai 3 ai 10 giorni, utilizzando il GPRS non si rischia di consumare la scheda del telefono in poche settimane se si ha un piano tariffario standard?
@Michele: usa il GPRS se nelle opzioni di connessioni internet lo imposti come default. Nel mio caso sul mio HTC ho fatto in modo che per qualsiasi richiesta da parte di programmi di connettersi ad internet, fosse usata un impostazione di rete che prevedesse solo l’uso del Wi-Fi o di ActiveSync. In pratica, ogni qualvolta ricarico il cell via USB al PC, al contempo si scarica automaticamente anche il file xtra.bin. Ovviamente se i file è scaduto, e non puoi connettersi ad internet, il modulo GPS usa il vecchio e tradizionale metodo di cercare la posizione dei satelliti manualmente… con un tempo che può variare da 2 a 3 minuti circa invece che 20-30 secondi.
sarebbe interessante scoprire se il file si può caricare manualmente, in questo modo si potrebbe scaricarlo prima di un viaggio senza usare il GPRS…o sbaglio?
altra cosa, ma le coordinate dei satelliti non sono relative a dove si trova il dispositivo GPS? nel senso…non capito un tubo mi sa O_O
@Cicciokun: in teoria si potrebbe… ma l’unico modo sarebbe quello di giocare con le impostazioni del registro di configurazione di windows mobile (con un programma da scaricare a parte) e invece di mettergli una url remota si deve immettere il path assoluto di dove risiede il file. Siccome è una operazione che varia da dispositivo a dispositivo non ho ritenuto utile inserirlo in questo articolo. Inoltre, come spiegato a Michele, non è necessario usare il GPRS se si dispone di una rete Wi-Fi o se di tanto in tanto (diciamo almeno una volta settimana) si connette lo smartphone al proprio PC Windows.
Per la seconda domanda: si, ma credo che per ogni dispositivo, a seconda della nazionalità, si usino determinati server piuttosto che altri, oppure, in base all’indirizzo IP il server riesce a capire da dove proviene la richiesta e aggiornare i dati di conseguenza. Francamente però propendo più per l’ipotesi secondo la quale il file è unico ed è il programma stesso di Fix del GPS che, in base alla sua localizzazione, estrae solo i dati della sua area geografica. In realtà, però, su questo punto mi affido solo alle mie ipotesi poiché non sono riuscito a trovare molte informazioni a riguardo. Se avrò maggiori dettagli te li farò sapere.
Molto interessante. Solo una precisazione: i satelliti del GPS non sono per nulla geostazionari, orbitano invece a circa 20200 km e compiono due orbite al giorno siderale intorno alla terra (da Wikepedia).
@malex: grazie mille per la precisazione. Correggo subito l’articolo!
Pingback: AGPS e file xtra.bin - Forum Android Italiano 6 Ottobre 2009
[…] ciao a tutti… sto rileggendo qualche cosetta sull'agps, in particolare su questa guida Levysoft AGPS: come funziona e come scaricare manualmente le effemeridi dei satelliti GPS si fa rifrimento anche all'android. entrando nel file /etc/gps.log ho visto che i server per i dati […]
@Cicciokun: le coordinate dei satelliti sono relative alla posizione dei satelliti. Il sistema di localizzazione è molto affascinante.
Praticamente il tuo dispositivo GPS deve sapere:
1- dove sono i satelliti
2- esattamente che ora è (con un precisione da “orologio atomico”, anche se in un intervallo di tempo molto piccolo).
Ti semplifico, e mi scusino gli esperti:
i satelliti lanciano un segnale orario. Ipotizza che il primo dice: sono le 10; il secondo: sono le 10 e un centesimo di secondo; il terzo: sono le 10 e 3 centesimi di secondo.
Siccome il tuo dispositivo sa che ore sono (ipotizziamo siano le 10 e 4 centesimi di secondo), riesce a capire che il segnale del primo satellite ci ha messo 4 centesimi di secondo ad arrivare; quello del secondo ne ha impiegati 1 e quello del terzo 3. Conoscendo la velocità con cui viaggiano i segnali (circa quella della luce), il GPS sa a che distanza sono i tre satelliti. Poi, con una banalissima regola che si studia quando si fa trigonometria, e conoscendo la posizione dei satelliti (scaricata da internet o dai satelliti stessi) calcola la propria posizione.
In realtà, il tuo dispositivo potrebbe essere in due punti diversi: o sulla terra, o a 40 km nello spazio. Ma quest’ultima posizione viene esclusa dal software in quanto è molto più probabile che tu ti trovi sulla terra e non nello spazio AH AH AH
Pingback: i9000 vs i9003 - Forum Android Italiano 21 Febbraio 2011
[…] […]