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:
$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