Einzelnen Beitrag anzeigen
Alt 14.12.2013, 21:23   #1 (permalink)
RUN
Tweaker
 
Benutzerbild von RUN
 

Registriert seit: 10.04.2002
Beiträge: 783

RUN ist einfach richtig nettRUN ist einfach richtig nettRUN ist einfach richtig nettRUN ist einfach richtig nett

Standard GPS Zeitserver (Stratum 1)

ein tutorial zum thema zeitserver mit gps unter ubuntu/debian

heute beim aufräumen ist mir meine alte gps maus in die hände gefallen, dies war dann auch der zeitpunkt mit dem aufräumen aufzuhören und etwas produktives zu tun

das ziel ist die aktuelle zeit über gps zu erhalten und im lokalen netzwerk zur verfügung zu stellen.

was wir dazu benötigen:
einen linux rechner (in meinem fall ubuntu 12.04)
eine gps maus (z.b. haicom hi-202e)

zuerst werden wir root
Code:
run@2hot:~$ sudo su -
[sudo] password for run: 
root@2hot:~#
jetzt installieren wir gpsd und ntp
Code:
apt-get install ntp gpsd
jetzt beide dienste beenden (sicher ist sicher)
Code:
root@2hot:~# /etc/init.d/gpsd stop
root@2hot:~# /etc/init.d/ntp stop
wir verbinden die gps maus mit dem rechner und überprüfen durch die eingabe von dmesg ob diese erkannt wird.
ganz am ende solle sowas wie das hier angezeigt werden
Code:
[ 2206.988017] usb 3-2: new full-speed USB device number 2 using uhci_hcd
[ 2207.239335] usbcore: registered new interface driver usbserial
[ 2207.239349] USB Serial support registered for generic
[ 2207.239388] usbcore: registered new interface driver usbserial_generic
[ 2207.239390] usbserial: USB Serial Driver core
[ 2207.251680] USB Serial support registered for pl2303
[ 2207.251722] pl2303 3-2:1.0: pl2303 converter detected
[ 2207.263320] usb 3-2: pl2303 converter now attached to ttyUSB0
[ 2207.263339] usbcore: registered new interface driver pl2303
[ 2207.263342] pl2303: Prolific PL2303 USB to serial adaptor driver
gps maus wurde als /dev/ttyUSB0 erkannt... prima

jetzt testen passen wir mal die gpsd konfig an.
die konfig ist hier zu finden: /etc/default/gpsd
sollte wie folgt aussehen
Code:
root@2hot:~# cat /etc/default/gpsd 
START_DAEMON="true"
GPSD_OPTIONS="-n"
DEVICES="/dev/ttyUSB0"
BAUDRATE="4800"
USBAUTO="true"
GPSD_SOCKET="/var/run/gpsd.sock"
was bedeutet das ganze genau..?
START_DAEMON="true" <- gpsd läuft als dienst
GPSD_OPTIONS="-n" <- warte auf keinen client, sondern gib einfach alles aus, was die maus ausgibt (wichtig)
DEVICES="/dev/ttyUSB0" <- s.o. unsere gps maus
BAUDRATE="4800" <- die baud rate der maus (siehe handbuch *g*)
GPSD_SOCKET="/var/run/gpsd.sock" <- die socket datei (wird beim starten angelegt)

soo jetzt checken wir mal ob das ganze überkaupt funktioniert

Code:
root@2hot:~# gpsd /dev/ttyUSB0 -n -N -D 2
gpsd:INFO: launching (Version 3.4)
gpsd:INFO: listening on port gpsd
gpsd:INFO: NTPD ntpd_link_activate: 1
gpsd:INFO: stashing device /dev/ttyUSB0 at slot 0
gpsd:INFO: opening GPS data source type 3 at '/dev/ttyUSB0'
gpsd:INFO: speed 4800, 8N1
gpsd:INFO: attempting USB device enumeration.
gpsd:INFO: 1d6b:0002 (bus 1, device 1)
gpsd:INFO: 1d6b:0002 (bus 2, device 1)
gpsd:INFO: 1d6b:0001 (bus 3, device 1)
gpsd:INFO: 1d6b:0001 (bus 4, device 1)
gpsd:INFO: 1d6b:0001 (bus 5, device 1)
gpsd:INFO: 1d6b:0001 (bus 6, device 1)
gpsd:INFO: 1d6b:0001 (bus 7, device 1)
gpsd:INFO: 1d6b:0001 (bus 8, device 1)
gpsd:INFO: 058f:6362 (bus 1, device 2)
gpsd:INFO: 046d:c223 (bus 7, device 2)
gpsd:INFO: 046d:08d9 (bus 7, device 3)
gpsd:INFO: 046d:c049 (bus 8, device 2)
gpsd:INFO: 046d:c221 (bus 7, device 4)
gpsd:INFO: 046d:c222 (bus 7, device 5)
gpsd:INFO: 067b:2303 (bus 3, device 25)
gpsd:SHOUT: vendor/product match with 091e:0003 not found
gpsd:INFO: speed 9600, 8O1
gpsd:INFO: speed 4800, 8N1
gpsd:INFO: gpsd_activate(): activated GPS (fd 6)
gpsd:INFO: speed 4800, 8N1
gpsd:INFO: /dev/ttyUSB0 identified as type Generic NMEA (0.945959 sec @ 4800bps)
sieht gut aus... /dev/ttyUSB0 wurde als NMEA erkannt.
soo... was bedeutet aber "gpsd /dev/ttyUSB0 -n -N -D 2"
also...
gpsd ist für die abfragen der gps maus zuständig
/dev/ttyUSB0 ist der pfad zur maus
-n s.o. warte auf keinen client, sondern gib einfach alles aus, was die maus ausgibt
-N gpsd läuft im vordergrund, alle ausgaben erscheinen in der shell
-D 2 debug level 2. man kann noch einen höheren level eingeben, dann wird es aber unübersichtlich. zu viele infos braucht man ja auch nicht.
mit strg + c lässt sich das ganze beenden

so... kommen wir nun zum zeitserver "ntpd"

Code:
root@2hot:~# vim /etc/ntp.conf
die meisten einstellungen sind standard und schon vorhanden.
jeder kann ntp anfragen an diesen server senden.
das kann man natürlich auch beschränken.

was ich mit einer # ausgetragen habe, da wir die zeit nicht aus dem internet wollen, sondern vom gps
Code:
#server 0.ubuntu.pool.ntp.org
#server 1.ubuntu.pool.ntp.org
#server 2.ubuntu.pool.ntp.org
#server 3.ubuntu.pool.ntp.org
#server ntp.ubuntu.com
was eingetragen werden muss
Code:
server 127.127.28.0 mode 0 prefer
fudge 127.127.28.0 flag1 1 flag2 0 time1 0.535 refid GPS
und wieso trägt man sowas ein?
server 127.127.28.0 hiermit wird bestimmt, dass der server unsere gps maus ist, bzw gpsd über 127.127.28.0 abgefragt werden muss.
127.127.28.X ist die standard adresse für NMEA geräte und die 0 am ende steht für das erste gerät....
wenn ich also mehrere gps/NMEA geräte hätte müsste ich folgendes eintragen:
server 127.127.28.0
server 127.127.28.1
server 127.127.28.n

mode 0 prefer also hier setzt man den typ der uhr. typ 0 ist dann quasi die atomuhr in diesem BILD

fudge 127.127.28.0 flag1 1 flag2 0 hiermit sagen wir, wir wollen pps zum erfassen der zeit benutzen

time1 0.535 da die gps maus nicht super schnell ist, müssen wir eine verzögerung einbauen. bei mir sind es zwischen 500ms und 600ms.

refid GPS einfach eine id, bzw name, der späte in den ntpd tools angezeigt wird (kann man auch weglassen).

soo jetzt starten wir das genze mal
Code:
root@2hot:~# /etc/init.d/gpsd start
root@2hot:~# /etc/init.d/ntp start
überprüfen wir mal ob ntpd die zeit vom gps bekommt
Code:
run@2hot:~$ ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*SHM(0)          .GPS.            0 l   11   64    1    0.000   44.171   0.000
es wird alle 64 sek das gps abgefragt (poll 64), ein mal hat es funktioniert (reach 1), verzögerung gab es keine (delay), offset ist der zeit unterschied in ms, jitter ist die schwankung der antwortzeit des servers

je länger dan ganze läuft, desto höher sollte der reach wert sein.
die reach skala bewegt sich von 0 (nie erreichbar) bis 377 (immer erreichbar)

mit watch ntpq -p könnt ihr das ganze dann live verfolgen

was bring das ganze?
naja das muss jeder selbst wissen, für mich war es einfach nur ein kleiner spass... wollte das ganze schon vor einer weile umzetzen.
einfach aus spass an der freude.

ist vielleicht für umgebungen ohne internetzugang interessant.
ALL YOUR BASE ARE BELONG TO US.
RUN ist offline   Mit Zitat antworten
4 Benutzer bedanken sich für den Beitrag:
dr_Cox (15.12.2013), Legion of the Damned (15.12.2013), Pilzkopf (15.12.2013), Robert (14.12.2013)