Hlavní navigace

Postup úspěšné opravy GPS po změně epochy

Antonín Kočí

O víkendu došlo k přetečení počítadla týdnů v navigačním systému GPS. Změna epochy zasáhla některá nepřipravená zařízení a znemožnila jim správně fungovat. Ukážeme si jednoduchý postup, který vede k záchraně.

Doba čtení: 4 minuty

Sdílet

Ze soboty na neděli 6 a 7. dubna 2019 došlo k přetečení počítadla týdnů v navigačním systému GPS. Vzhledem k mé oblibě spolehlivých, avšak obstarožních, zařízení, jsem se rozhodl prověřit jejich funkčnost. Zatímco PDA HTC Diamond 2 s Windows CE 6.1 si po stažení almanachu z internetu s týdnem 0 poradil bez problému, moje oblíbená kalkulačka SONY Vaio VGN-P21Z s Windows XP a integrovaným modulem od Optionu nikoli.

Dal jsem se tedy do hledání relevantních informací, jak GPS donutit k činnosti. Domnívám se, že by postup mohl pomoci i dalším, proto jsem se rozhodl popsat potřebné kroky, jenž vedly k úspěchu.

Vaio je osazeno modulem Option Globetrotter MO40×, jenž se mi podařilo identifikovat jako GTM382. Handheld během dvou hodin na okenním parapetu sice viděl družice, ale fix se nekonal. Dal jsem se do studia problematiky a zkonstruoval následující postup.

Za prvé je nutno smazat veškerá data v modulu. Dále je potřeba získat naprosto přesný čas odjinud, NTP synchronizace nestačí. Proto jsem do modemové čtečky vložil expirovanou, ale použitelnou SIM kartu a nechal ji nepřihlásit se k síti. Bylo to ale dostatečné k získání přesného času, díky synchronizaci GSM sítě pomocí GPS na straně základnových stanic.

Následovalo smazání starých dat z GPS čipu pomocí AT příkazu, zapnutí modemu a pokus načíst almanach a efemeridy z GPS. Celá procedura mi zabrala přes hodinu, nicméně byla korunována úspěchem.

Postup opravy

Následuje záznam celého procesu. Na portu COM11 je GPS command interface a na portu COM4 NMEA výstup z GPS přijímače.

Zastavení GPS:

AT_OGPS=0 >COM11

Smazání starých dat:

AT_OGPSCLEAR="ALL" >COM11

Notebook byl položen na okenním parapetu, spuštěno logování a zapnuta GPS.

AT_OGPS=2 >COM11

Čas 22:46

>COM4
$GPGSV,1,1,01,08,,,26*74
$GPGGA,224617.5,,,,,0,,,,,,,,*79
$GPVTG,,T,,M,,N,,K,N*2C
$GPRMC,,V,,,,,,,,,,N*53
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPGSV,1,1,01,08,,,26*74
$GPGGA,224618.5,,,,,0,,,,,,,,*76
$GPVTG,,T,,M,,N,,K,N*2C
$GPRMC,,V,,,,,,,,,,N*53
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPGSV,4,1,16,08,30,184,28,01,70,300,,03,42,247,,10,07,064,*72
$GPGSV,4,2,16,11,75,229,,14,51,090,,17,15,320,,18,77,116,*77
$GPGSV,4,3,16,19,,,,20,,,,22,67,251,,23,,,*45
$GPGSV,4,4,16,24,,,,27,04,165,,28,16,285,,31,02,115,*4C
$GPGGA,224619.5,,,,,0,,,,,,,,*77
$GPVTG,,T,,M,,N,,K,N*2C
$GPRMC,,V,,,,,,,,,,N*53
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPGSV,4,1,16,08,32,184,26,01,70,300,,03,42,247,,10,07,064,*7E
$GPGSV,4,2,16,11,75,229,,14,51,091,,17,15,320,,18,77,116,*76
$GPGSV,4,3,16,19,,,,20,,,,22,67,251,,23,,,*45
$GPGSV,4,4,16,24,,,,27,06,165,,28,16,285,,31,02,115,*4E
$GPGGA,224620.5,,,,,0,,,,,,,,*7D

O 24 minut později, ve 23:10…

$GPGSV,3,1,12,08,18,181,26,11,68,188,20,14,48,073,14,18,63,125,31*78
$GPGSV,3,2,12,23,08,198,19,31,09,106,28,01,83,295,,03,54,253,*7E
$GPGSV,3,3,12,17,25,314,,19,05,326,,22,78,257,,28,12,274,*70
$GPGGA,231018.5,,,,,0,,,,,,,,*74
$GPVTG,,T,,M,,N,,K,N*2C
$GPRMC,,V,,,,,,,,,,N*53
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPGSV,3,1,12,08,18,181,27,11,68,188,20,14,48,073,14,18,63,125,31*79
$GPGSV,3,2,12,23,08,198,19,31,09,106,28,01,83,295,,03,54,253,*7E
$GPGSV,3,3,12,17,25,314,,19,05,326,,22,78,257,,28,11,274,*73
$GPGGA,231019.5,,,,,0,,,,,,,,*75
$GPVTG,,T,,M,,N,,K,N*2C
$GPRMC,,V,,,,,,,,,,N*53
$GPGSA,A,1,,,,,,,,,,,,,,,*1E

…se GPS chytila_

$GPGSV,3,1,12,08,18,181,27,11,68,188,20,14,48,073,14,18,63,125,32*7A
$GPGSV,3,2,12,23,08,198,20,31,09,106,29,01,83,295,,03,54,253,*75
$GPGSV,3,3,12,17,25,314,,19,05,326,,22,78,257,,28,11,274,*73
$GPGGA,231020.5,5039.184001,N,01350.702695,E,1,04,6.0,290.5,M,0,M,,*72
$GPVTG,nan,T,,M,0.0,N,0.0,K,A*42
$GPRMC,231020.5,A,5039.184001,N,01350.702695,E,0.0,,090419,,,A*49
$GPGSA,A,3,08,14,18,31,,,,,,,,,7.4,6.0,4.3*36
$PSTIS,*61
$GPGSV,3,1,12,08,18,181,28,11,68,188,20,14,48,073,14,18,63,125,32*75
$GPGSV,3,2,12,23,08,198,20,31,09,106,30,01,83,295,,03,54,253,*7D
$GPGSV,3,3,12,17,25,314,,19,05,326,,22,78,257,,28,11,274,*73
$GPGGA,231021.5,5039.183706,N,01350.703165,E,1,04,666.6,291.0,M,0,M,,*7F
$GPVTG,nan,T,,M,0.0,N,0.0,K,A*42
$GPRMC,231021.5,A,5039.183706,N,01350.703165,E,0.0,,090419,,,A*46
$GPGSA,A,3,08,14,18,31,,,,,,,,,666.6,666.6,666.6*34
$PSTIS,*61

…a o dalších 7 minut později, ve 23:17…

$GPGSV,3,1,12,11,65,184,15,18,60,127,16,23,11,198,17,31,11,105,19*77
$GPGSV,3,2,12,01,86,281,,03,56,254,,08,16,180,,14,47,068,*72
$GPGSV,3,3,12,17,27,313,,19,08,326,,22,82,262,,28,10,272,*7F
$GPGGA,231702.5,5039.205046,N,01350.677434,E,1,03,666.6,262.9,M,0,M,,*76
$GPVTG,nan,T,,M,0.0,N,0.0,K,A*42
$GPRMC,231702.5,A,5039.205046,N,01350.677434,E,0.0,,090419,,,A*4D
$GPGSA,A,3,18,23,31,,,,,,,,,,666.6,666.6,666.6*38
$PSTIS,*61
$GPGSV,3,1,12,18,60,127,16,23,11,198,17,31,11,105,19,01,86,281,*79
$GPGSV,3,2,12,03,56,254,,08,16,180,,11,65,184,,14,47,068,*78
$GPGSV,3,3,12,17,27,313,,19,08,326,,22,82,262,,28,10,272,*7F
$GPGGA,231703.5,5039.205046,N,01350.677434,E,1,02,666.6,262.9,M,0,M,,*76
$GPVTG,nan,T,,M,0.0,N,0.0,K,A*42
$GPRMC,231703.5,A,5039.205046,N,01350.677434,E,0.0,,090419,,,A*4C
$GPGSA,A,3,18,31,,,,,,,,,,,666.6,666.6,666.6*39
$PSTIS,*61

…bylo živých všech 8 zobrazených kanálů.

Postup se mi podařilo zopakovat ještě na podobném zařízení Vaio P11Z, se stejným výsledkem. Rozdíl je v délce načtení almanachu, který trval jen vzorově teoretických 6 minut, což jsem předtím ještě v životě neviděl. GPSka se fixla 6 minut a 1 sekundu po spuštění.

Proč to zabralo

Je to jen moje teorie, nicméně z kusých informací jsem odtušil následující: Než dojde k fixu, kontroluje se validita almanachu a efemerid. Pokud jsou platné, dojde k fixu hned po změření doppleru a spočítání dilatací mezi družicemi. Pokud nejsou, přichází na řadu jejich načtení z družicového streamu, případně ze sítě.

Ale starý weeknumber zůstává v cache přijímače od prvotní kontroly, přičemž firmware není schopen se vyrovnat se zápornou změnou. Modul je kombinací 2G/3G/GPS a firmware CPU modulu obsluhuje jak SIRF, tak ostatní sekce.

Na GSM síti je kvůli synchronizaci přenášen z GPS získaný ultrapřesný čas kvůli TDMA přístupu na uplinku. Podle této teorie FW modulu čas získává nezávisle na RTC systému, získá jej správný a teprve potom je načten almanach z družic a ten je v tomto případě platný.

Ale je to jen teorie. Co se přesně stalo vědí jen výrobci (možná) a jak známo, vše je děsně tajné a autorsky chráněné…

Popis GPS sekvencí

Pro případné zájemce zde přikládám zjednodušený popis GPS sekvencí, více zjistíte pomocí Googlu:

Diners Vánoce 2019

$GPGSV,3,1,12,18,60,127,16,23,11,198,17,31,11,105,19,01,86,281,*79
       3 počet zpráv na cyklus
         1.zpráva
           12 viditelných družic
              18.satelit
                 60°elevace
                    127°azimut
                        16.satelit
                           23 síla signálu
                              11°elevace
                                 198°azimut
                                     17 síla signálu
                                        31.satelit
                                           11°elevace
                                              105°azimut
                                                  19 síla signálu
                                                     01.satelit
                                                        86°elevace
                                                           281°azimut
                                                               , bez signálu
                                                                 *79 kontrolní součet
$GPGGA,231703.5,5039.205046,N,01350.677434,E,1,02,666.6,262.9,M,0,M,,*76
       23:17:03.5 čas UTC
                50°39.205046'severní šířky
                              13°50.677434'východní délky
                                             1 =GPS fixnuta
                                               02 družic sledováno
                                                  666.6 horizontální nepřesnost (proč zrovna 666.6 jsem nepochopil)
                                                        262.9 metrů nadmořské výšky
                                                                0 výškový rozdíl oproti WGS84
                                                                     *76 kontrolní součet
$GPVTG,nan,T,,M,0.0,N,0.0,K,A*42
       GPS směr pohybu není k dispozici
             ,Magnetický úhel není k dispozici
                0.0 rychlost pohybu v uzlech
                      0.0 rychlost pohybu v metrech
                             *42 kontrolní součet
$GPRMC,231703.5,A,5039.205046,N,01350.677434,E,0.0,,090419,,,A*4C
       23:17:03.5 UTC čas fixu
                Aktivní
                  50N39.205046  013E50677434 zeměpisná poloha
                                               0.0 rychlost pohybu v uzlech
                                                  ,, azimut pohybu není k dispozici
                                                    09.04.2019 datum fixu
                                                              *4C kontrolní součet

Zdroje: Vše, co vypadlo z Googlu a Yandexu v angličtině, ruštině a dalších jazycích.

Použitý software: Windows XP SP2 na Atomu 1,3 GHz, Hyperterminál a VisualGPS v obstarožní verzi 4.2