Eigenen Zeitserver aufsetzen

Dr-Smarthome

Dr-Smarthome

Ambitioniertes Mitglied
36
Nachdem ich einen Ausfall des Internets für 5 Tage hatte, wurde mir erst bewußt, wie wichtig ein eigener Zeitserver ist.
Unsere Stadt hat gebaut und "versehentlich" Kabel zerstört. Die Reparatur was nach erst 5 Tagen erledigt. In dieser Zeit hatte ich weder TV, noch Internet oder Telefon.
Das Problem:
wie jeder normale Internet-Nutzer habe ich als Zeitserver für die Smarthome-Installation die Fritzbox unter https://fritz.box angegeben.
Nun, wenn kein Internet mehr erreichbar ist, macht die Fritzbox einen Neustart und setzt Datum und Uhrzeit auf 01.01.1970, 00:00 Uhr zurück, und zwar bei jedem Gerät, bei dem die Fritzbox als NTP-Server angegeben wurde.
Natürlich könnte man das auch mit einer günstiger RTC (realtime clock) realisieren, da ich aber eine höchst genaue Uhrzeit will, habe ich das mit einem GPS-Modul realisiert und greife da das PPS (pulse per second) ab.
Man braucht dazu einen Raspberry, ein paar Jumper-Kabel, das .GPS-Modul und eine GPS-Antenne.

Zuerst schließen wir das GPS-Modul wie folgt am Raspberry an:

pinout-768x661.jpg




danach wird RaspianOS auf die SD-Karte geschrieben und eine leere Datei mit dem namen ssh ohne Endung ins Boot-Verzeichnis kopiert.
Um die Installation abzuschließen, müssen wir noch einiges machen:
Update + Installation:

sudo apt update && sudo apt full-upgrade -y && sudo apt install vim pps-tools ntp gpsd gpsd-clients -y

mit sudo raspi-config
das serial interface eingeschalten
locales timezone germany
change to germany
expand filesystem

nach einem Neustart:
sudo nano /boot/config.txt
dtoverlay=pps-gpio,gpiopin=18
hinzufügen

sudo nano /etc/default/gpsd
konfigurieren:
START_DAEMON="true"
USBAUTO="false"
DEVICES="/dev/ttyS0"
GPSD_OPTIONS="-n"

sudo nano /etc/modules
pps-gpio
hinzufügen

neustart
mit

sudo systemctl status gpsd
überprüfen, ob der dienst geladen ist, wenn nicht

sudo ln -s /lib/systemd/system/gpsd.service /etc/systemd/system/multi-user.target.wants/
ausführen,
dann nochmal mit
sudo systemctl status gpsd
versuchen.

mit
cgps -s
die GPS-Funktionalität überprüfen

Neustart
mit

sudo lsmod|grep pps
überprüfen, ob die PPS-Module geladen sind.

Korrekte Ausgabe:
pps_ldisc 16384 2
pps_gpio 16384 0
pps_core 20480 3 pps_gpio,pps_ldisc

mit
sudo dmesg|grep pps
überprüfen, ob das PPS-Gerät gefunden wurde.

korrekte Ausgabe:

[ 3.112334] pps_core: LinuxPPS API ver. 1 registered
[ 3.114527] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[ 3.129709] pps pps0: new PPS source pps@12.-1
[ 3.132327] pps pps0: Registered IRQ 166 as PPS source
[ 10.106947] pps_ldisc: PPS line discipline registered
[ 10.111550] pps pps1: new PPS source serial0
[ 10.111685] pps pps1: source "/dev/ttyS0" added


Ob das PPS-gerät ordnungsgemäß funktioniert.
ppstest /dev/pps0

mit
sudo nano /etc/ntp.conf
passen wir die ntp.conf an


# /etc/ntp.conf, configuration for ntpd; see ntp.conf(5) for help
driftfile /var/lib/ntp/ntp.drift


# Leap seconds definition provided by tzdata
leapfile /usr/share/zoneinfo/leap-seconds.list


# Enable this if you want statistics to be logged.
statsdir /var/log/ntpstats/
statistics loopstats peerstats clockstats


filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable


# You do need to talk to an NTP server or two (or three).
#server ntp.your-provider.example
# pool.ntp.org maps to about 1000 low-stratum NTP servers. Your server will
# pick a different set every time it starts up. Please consider joining the
# pool: <pool.ntp.org: Join the NTP Pool!>
server time01.thenetworknerds.ca iburst
server ntp.wien.diakoniewerk.at iburst
server 6.ntp.snails.email iburst


# Access control configuration; see /usr/share/doc/ntp-doc/html/accopt.html for
# details. The web page <AccessRestrictions < Support < NTP>
# might also be helpful.
#
# Note that "restrict" applies to both servers and clients, so a configuration
# that might be intended to block requests from certain clients could also end
# up blocking replies from your own upstream servers.
# By default, exchange time with everybody, but don't allow configuration.
restrict -4 default kod notrap nomodify nopeer noquery limited
restrict -6 default kod notrap nomodify nopeer noquery limited


# Local users may interrogate the ntp server more closely.
restrict 127.0.0.1
restrict ::1


# Needed for adding pool entries
restrict source notrap nomodify noquery


# Clients from this (example!) subnet have unlimited access, but only if
# cryptographically authenticated.
#restrict 192.168.123.0 mask 255.255.255.0 notrust


# If you want to provide time to your local subnet, change the next line.
# (Again, the address is an example only.)
#broadcast 192.168.123.255


# If you want to listen to time broadcasts on your local subnet, de-comment the
# next lines. Please do this only if you trust everybody on the network!
#disable auth
#broadcastclient


######################################################


tinker step 0.4 stepback 0.4 stepfwd 0.4
server 127.127.22.0 minpoll 4 maxpoll 4
fudge 127.127.22.0 refid PPS stratum 0 flag3 1 flag4 1
server 127.127.28.0 minpoll 4 maxpoll 4 prefer
fudge 127.127.28.0 time1 +0.130 refid GPS stratum


######################################################


Nach einem Neustart und dem Start vom NTP-Server

sudo systemctl restart ntp
testen wir unseren neuen Stratum 1 NTP-Server mit

ntpq -c peers -c rv


Ausgabe:



remote refid st t when poll reach delay offset jitter
==============================================================================
oPPS(0) .PPS. 0 l 16 16 377 0.000 0.005 0.002
*SHM(0) .GPS. 2 l 15 16 377 0.000 4.334 3.659
194.50.19.3 .INIT. 16 u - 1024 0 0.000 0.000 0.000
193.170.62.252 .INIT. 16 u - 1024 0 0.000 0.000 0.000
li1487-219.memb .INIT. 16 u 841 1024 0 0.000 0.000 0.000


associd=0 status=01f8 leap_none, sync_pps, 15 events, no_sys_peer,
version="ntpd 4.2.8p12@1.3728-o (1)", processor="armv7l",
system="Linux/4.19.58-v7+", leap=00, stratum=1, precision=-19,
rootdelay=0.000, rootdisp=1.000, refid=PPS,
reftime=e10020ef.6b549b3f Thu, Aug 15 2019 20:20:31.419,
clock=e10020ef.7ffc20bf Thu, Aug 15 2019 20:20:31.499, peer=58555, tc=4,
mintc=3, offset=0.004137, frequency=-4.528, sys_jitter=0.001907,
clk_jitter=0.003, clk_wander=0.004, tai=37, leapsec=201701010000,
expire=201912280000
Wer sich den originalen Artikel ansehen will: Zeitserver auf dem Raspberry aufsetzen
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: HerrDoctorPhone und nate2013
Was für eine Fritz!Box hast du denn?
Bei meiner 7590 bleibt die Uhrzeit nach Trennung der Internetverbindung bestehen, die Fritte macht auch keinen Reboot/Neustart, ich hatte in letzter Zeit öfters Ausfälle der Internetverbindung und die Interne Uhr in der Fritte lief dann einfach weiter.
 
Ich habe die 6890 cable. Die Uhr wäre mit Sicherheit weiter gelaufen, hätte die Fritte keinen Neustart gemacht.
Egal: jetzt läuft mein eigener NTP-Server und habe den bei meiner Video-Überwachung, Smarthome etc eingetragen.
 

Ähnliche Themen

Dr-Smarthome
Antworten
0
Aufrufe
846
Dr-Smarthome
Dr-Smarthome
Dr-Smarthome
Antworten
0
Aufrufe
1.354
Dr-Smarthome
Dr-Smarthome
Dr-Smarthome
Antworten
0
Aufrufe
758
Dr-Smarthome
Dr-Smarthome
Zurück
Oben Unten