Synchronizacja zegara przez GSM

Mar 21, 2016 69 Replies

Pan J.F. napisał:

A może niemiał tego ntpd włączonego? Kiedyś często się zdarzało. I wcale nie było łatwo o publicznie dostępny serwer czasu. Więc ntp używało się w obrębie własnej sieci, żeby przynajmniej w niej komputery tak samo cykały. A to już wymagało wskazania lokalnego serwera i opisania tego w konfigach. Domyślna instalacja tego nie mogła mieć.

Jak wspomniałem, zmienia się rzadko. W miare łatwo jest wyprodukwać kwarc wysokiej jakości, o dobrej stabilności, w tym temperaturowej. To się trzaska jedno po drugim na linii produkcyjnej. Ale kalibracja tego, to już poważniejsza sprawa -- wymaga czasu. Korzystanie z ntpd pozwala na to, by czas ten płynął nie w fabryce, ale w już gotowym urządzeniu.

Tak, to w praktyce tak właśnie wygląda.

Ale problem nagrzewania jest już w zancznym stopniu wyeliminowany przez technologię. Niekótrzy nawet próbują kompensowac uchyb RTC w systmach, które są odcięte od sieci. Porównuje się czas sytemowy z rtc przy starcie (zero z definicji) i po określonych odcinkach czasu. Wtedy wiadomo ile na dobę ten RTC się spieszy lub spóźnia. Przy kolejnym bootowaniu wiadomo ile się rozjechał i uwzględnia to przy syncronizacji. A po niej robi się zapis system --> RTC. Sprytna metoda, która pozwala zachować lepszy czas w systemach bez połączenia z siecią.

Dodatkowo chyba każda sieć ma zaimplementowane 3GPP TS 03.71 dzieki czemu operator moze na zywo odczytywac ten parametr poprzez połączenie wykonane bez wiedzy własciciela telefonu a nawet odczytywać pozycję GPSa wbudowanego w telefon. O ile pamietam, moze go nawet włączyć jeśli jest wyłączony przez użytkownika.

c.

U¿ytkownik "Jaros³aw Soko³owski" napisa³ w wiadomo¶ci grup dyskusyjnych: snipped-for-privacy@falcon.lasek.waw.pl... Pan J.F. napisa³:

Skoro wymyslili NTP, to chyba bylo latwo :-)

Juz nie pamietam dokladnie jak to robilem, ale zainteresowala mnie stabilnosc wewnetrznego kwarcu. Wiec synchronizowalem z jakim zewnetrznym serwerem NTP, i patrzylem jak sie zmienia wyliczony dryft.

No i wychodzilo tak sobie.

Czy tak latwo ... hm, katy ciecia podaja z dokladnoscia do minut. Dokladnosc obrobki wielka, ale ona na stabilnosc chyba nie wplywa.

Co prawda na reku mam zegarek Casio, ktory jest pierunsko dokladny, ale inne casio juz takie nie sa. A kwarc tam chyba inny (tuning fork) niz w procesorze. Moze teraz sa lepsze kwarce, ale do komputera to sie zasadniczo nikt nie przejmuje - najtanszy jest najlepszy :-) Tak czy inaczej - zapamietalem sobie, ze stabilne te kwarce nie byly.

Tak nawiasem mowiac, jak patrze na ten zegarek, ktory potrafi miec sekunde na miesiac, to sie zastanawiam, czy nie zrobili korekcji programowej w zegarku. Az sie prosi - jesli uzytkownik koryguje w przod lub w tyl, to obliczyc o ile i zapamietac poprawke. Bo inaczej co - ktos w fabryce cierpliwie trymerem krecil ?

Mozna. O ile pamietam, to tez to mierzylem i wychodzila mi stabilnosc niezbyt dobra.

Mozna. Trzeba wiedziec ile system byl wylaczony, ale to mozna ustalic, o ile sie zapisze czas zamkniecia czy tez ostatniego ustawienia. Tylko - czy tak sie robi ? Usilowalem na szybko sprawdzic co znacza te parametry w ntp.drift, nie znalazlem - on chyba RTC nie obsluguje ?

Dodatkowa trudnosc - w pececie ten zegar ma sekundowa rozdzielczosc. Dokladniejsze ustawienia wymagaja ciaglego odczytu i czekania na "moment" zmiany.

J.

O ile pamietam stare zabawy z netmonitorem, to bylo jakos inaczej jednak. Albo ten parametr byl dostepny tylko dla jednego BTS, a moze wrecz tylko przy rozmowie. Albo to po prostu netmonitor byl ulomny na tych telefonach.

No ale z Javy IMO i tak nie bylo do tych danych dostepu.

Przede wszystkim to TA jest, a przynajmniej bylo w GSM, zadawane przez siec. Wiec siec dobrze wie ktore, siec moze przelaczyc na innego BTS czy moze nawet moze bez przelaczania ustalic.

W nowoczesnych to wcale bym sie nie zdziwil. Ale ja sprawdzalem na telefonie jeszcze bez GPS :-)

J.

Pan J.F. napisał:

Jedno nie implikuje drugiego. Protokół wymyślono dawno, publiczne serwery pojawiły się dużo później.

Ale co wychodziło tak sobie? Komputer zsynchronizowany z serwerem tryma się wzorca czasu jak pijany płotu. Zmiany w pliku nie są zbyt częste.

A na co wpływa? Przecież drga dowolnie ucięty, a dopiero jeśli zrobić to precyzyjnie według wyliczeń, to będzie stabilny.

Mogli tak zrobić, to przypomina idee NTP, było na czym się wzorować.

Nie mierzyłem, to nie będe się spierał. W praktyce problem synchronizacji czasu uważam za rozwiązany.

Widziałem takie rozwiązanie. Można sprawdzać na przykład co godzinę i *nie* korygować RTC. Czas wyłączenia znany jest od razu po uruchomieniu

-- różnica między czasem bieżącym a czasem ostatnirgo zapisu pliku z odchyłką.

Z RTC nie ma nic wpólnego. Z *przesunięciem* czasowym też nie. To jest stan wirtualnego trymera, czyli korekta *częstotliwości*, tak w skrócie.

A skąd, mikrosekundowa dokładność dostępna jest nawet dla programu sleep (który śpi z taką dokładnością). Programy związane z ntp też podają dokładną różnicę czasu.

W dniu 23.03.2016 o 10:12, Jarosław Sokołowski pisze:

Nie wiem czy to przypadek, ale ja zawsze trafiałem na późniący się zegar na płycie głównej! Kiedyś mnie to dziwiło, ale może tak t ma być!

Pan Czarek Grądys napisał:

Od dawna nie miałem do czynienia z niezsynchronizowanym zegarem komputera. Tej prawidłowości nie odkryłem, co nie znaczy, ze jej nie ma. Sprytne. Część problemów z załamaniem czasoprzestrzeni taka spóźnialska strategia może eliminować, ale nie wszystkie. Sam zegar systemowy może się śpieszyć, więc przy korektach (z serwera lub ręcznych) będzie cofnięcie. Chyba że zegara systemowego też to dotyczy. Ale tu już jestem niemal pewny, że przy synchronizacji okresowej widywałem poprawki w jedną i w drugą stronę.

U¿ytkownik "Jaros³aw Soko³owski" napisa³ w wiadomo¶ci grup dyskusyjnych: snipped-for-privacy@falcon.lasek.waw.pl... Pan J.F. napisa³:

Watpie. Skoro wymyslono protokol, to i serwer musial byc, do przetestowania :-)

W kazdym badz razie z serwerem nie mialem klopotow.

Chodzi mi o to, ze jednego dnia mam poprawke jakas tam, drugiego podobna, trzeciego dwa razy wieksza, a czwartego w przeciwna strone. Jesli mnie pamiec nie myli, to sprawdzalem "tick" podawany przez adjtimex, i bylo gdzies 9999 do 10002, zamiast nominalnych 10000.

O grubosc mi chodzi. Jak sp* kat ciecia na poczatku, to bedzie niestabilny, jak sp* potem grubosc - to bedzie niedokladny, ale stabilny - o ile najpierw dobrze wycieto.

No chyba ze gdzies przy szlifowaniu sie bardziej docisnie z jednej strony, skos sie zrobi - i wyjdzie tak, jakbys na poczatku krzywo wycial.

W komputerze z linuxem, z czestym dostepem do internetu i rzadko wylaczanym. A my tu o zegarku bez dostepu :-)

Czyli do RTC trzeba osobny program :-)

RTC w pececie nie ma takiej rozdzielczosci ! Stad, aby sprawdzic jego dryft, trzeba go odczytac wiele razy az zmieni sekunde, wtedy odczytac dokladny czas systemowy, i mamy wzglednie dokladnie zmierzony czas w RTC. Im czesciej odczytujemy, tym dokladniejszy pomiar, ale tez procesor bardziej zajety przez te srednio pol sekundy. Nawet wielordzeniowy moze byc przyblokowany, bo dostep do rejestrow RTC dlugo trwa, przynajmniej kiedys tak bylo.

No i ja sie bawilem chyba jeszcze gdy "microsecond timer" nie byl dostepny, kernel sam sobie sobie go organizowal, i co przerwanie dodawal wlasnie tych 10000us do zmiennej timera. Czyli niby "microsecond" a naprawde 10ms ..

A tak swoja droga ... to jak sobie teraz radza ? Jest sprzetowy "time stamp counter", z rozdzielczoscia nawet jakby lepsza niz nanosekunda, ale napedza go zegar systemowy. Jak sie chce skorzystac i przeliczyc na UTC, to trzeba dosc ambitnie przeliczac, z ryzykiem cofania czasu .

J.

Znaczy jak?

Nie.

Ano.

Bo nie ma potrzeby. Dane o lokalizacji są obrabiane przez serwer a nie przeglądarkę.

[...]

Użytkownik "RoMan Mandziejewicz" napisał w wiadomości Hello J.F.,

Byc moze. Z drugiej strony - jak nie ma rozmowy, to telefon tylko z rzadka cos transmituje, wiec jak ustalic TA ?

Moze i to "rzadko" wystarczy ...

Ale jakie dane ? Zrozum sytuacje - stary telefon, SE K550, zaden tam smartfon, ale jednak "z Java" (J2ME). Instaluje program od googla - i on ustala pozycje. Wyslac do serwera mogl tylko to, co jest udostepnione Javie - a w MIDP

2.0 wiele tego nie bylo. Listy BTS i ich TA na moj gust nie bylo.

Byc moze telefon to robil za pomoca JSR179, producent implementujac funkcje udostepnil potrzebne dane, przeslal na serwer, odebral odpowiedz, wystawil pozycje aplikacji. Ale ... dzialalo bez polaczenia internetowego. Hm, a moze nie ... wszak zeby google pokazal mapy, to trzeba miec polaczenie.

Wyglada mi na to, ze to jednak operator wyznaczal i udostepnial pozycje.

A wtedy dziwi mnie, ze tak latwo zrezygnowal z naleznych oplat :-)

J.

Pan J.F. napisał:

Był, lecz niekoniecznie wszystkim dostępny. Nawet plik konfiguracyjny demona zawiera na końcu linię:

# Don't serve time or stats to anyone else by default (more secure)

Dopiero po niej można ustawić upoważnione zakresy adresów.

Wszystko to niewielkie różnice. Fluktuacje w jsedna i druga stronę.

Często RTC o ogóle nie jest potrzebne. Urządzenia przeznaczone do pracy w sieci szęsto w ogóle nie mają.

No i w ogóle średnio jest potrzebny.

Jaros³aw Soko³owski snipped-for-privacy@lasek.waw.pl> napisa³(a):

Mo¿esz sobie zrobiæ zaplanowane zadanie i synchronizowaæ kiedy chcesz.

Oj chyba dawno, nawet jakie¶ 15 lat :) Windows cofa czas skokowo tylko je¶li jest jest du¿a ró¿nica czasów. Jak jest ma³a, to dokonuje stopniowej korekty. Odsy³am do parametrów UpdateInterval oraz PhaseCorrectRate, opisanych tutaj:

formatting link

Nie rozumiem, sugerujesz, że Windows nie umie synchronizować sobie czasu z sieci (ntp)?

U¿ytkownik "Jaros³aw Soko³owski" napisa³ w wiadomo¶ci grup dyskusyjnych: snipped-for-privacy@falcon.lasek.waw.pl... Pan J.F. napisa³:

patrz raczej po dokumentacji do klienta i roznych HowTo. Podawane przykladowe serwery nie dzialaly ?

to jest 200ppm. Utrzymujace sie np 3 doby. Daje 16 sekund na kazda dobe.

Hm, a moze zle pamietam, 200ppm to bardzo kiepski kwarc.

Do startu komputera, jak nie ma lacznosci z internetem. Tzn do ustawienia zegara na starcie.

Chodzi mi jednak o to, ze sekundowa rozdzielczosc utrudnia nieco precyzyjne wyznaczenie dryftu. Nie wystarczy odczytac RTC np co godzina i porownac z dokladnym czasem.

J.

Googlowi wystarczy tylko cellid, mają lokalizację wszystkich.

Pan Grzegorz Niemirowski napisał:

Ale przecież o to chodzi, by *nie* synchronizować "kiedy ktoś chce", tylko żeby zawsze było zsynchronizowane.

Ile to jest "duża różnica czasu" (nie mam w tej chwili dostępu do WWW)? Najwyżej kilka lat temu to było, kliknąłem w jakiś przycisk "synchronizuj" czy podobny -- przestawił wskazówki i poinformował, że synchronizacja zakończona. Różnica nie była wielka, taka jak może się zdarzyc przy rozjechanym RTC.

Pan Marek napisał:

Sugeruję, że Windows jedyne co umie, to zsynchronizować czas z serwera. Może potrafi coś więcej, ale ja tego nie widziałem.

Użytkownik "Marek" napisał w wiadomości grup dyskusyjnych: snipped-for-privacy@news.neostrada.pl... On Wed, 23 Mar 2016 17:45:03 +0100, "J.F."

Tez nie bylo. A moze i bylo, tylko ja zle szukam. Jak program w Javie moze odczytac Cell-ID ?

No samo Cell-ID to troche malo - jeden BTS moze do 30km obslugiwac.

J.

Pan J.F. napisał:

Ja to robiłem krótko po tym, jak internet stał się komercyjny. Nikt nigdzie przykładowych serwerów ie podawał, a trochę czasu upłynęło, nim znalazłem pierwszy dostępny publicznie.

Ja nawet nie pamiętam teraz w jakich to jednostkach. Ale na pewno w rozmaitych. Bo na jednym komputerze mam w tej chwili "1.558007e-05"

-- i nie jestem pewny co to znaczy. Na dwóch innych, z innym systemem jest "5.630" i "-44.094". Czyli różny jest również kierunek korekty

-- bez niej jeden by się spóźniał, drugi śpieszył.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required