GPS-Zeitserver aufsetzen

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


    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:


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


    Code
    mit sudo raspi-config

    das serial interface eingeschalten

    locales timezone germany

    change to germany

    expand filesystem


    nach einem Neustart:


    Code
    sudo nano /boot/config.txt


    Code
    dtoverlay=pps-gpio,gpiopin=18

    hinzufügen


    Code
    sudo nano /etc/default/gpsd

    konfigurieren:


    Code
    START_DAEMON="true"
    USBAUTO="false"
    DEVICES="/dev/ttyS0"
    GPSD_OPTIONS="-n"


    Code
    sudo nano /etc/modules
    Code
    pps-gpio

    hinzufügen


    neustart

    mit

    Code
    sudo systemctl status gpsd

    überprüfen, ob der dienst geladen ist, wenn nicht

    Code
    sudo ln -s /lib/systemd/system/gpsd.service /etc/systemd/system/multi-user.target.wants/

    ausführen,

    dann nochmal mit

    Code
    sudo systemctl status gpsd

    versuchen.

    mit

    Code
    cgps -s

    die GPS-Funktionalität überprüfen


    Neustart

    mit

    Code
    sudo lsmod|grep pps

    überprüfen, ob die PPS-Module geladen sind.

    Korrekte Ausgabe:

    Code
    pps_ldisc 16384 2
    pps_gpio 16384 0
    pps_core 20480 3 pps_gpio,pps_ldisc


    mit

    Code
    sudo dmesg|grep pps

    überprüfen, ob das PPS-Gerät gefunden wurde.

    korrekte Ausgabe:

    Code
    [ 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.

    Code
    ppstest /dev/pps0


    mit

    Code
    sudo nano /etc/ntp.conf

    passen wir die ntp.conf an



    Nach einem Neustart und dem Start vom NTP-Server

    Code
    sudo systemctl restart ntp

    testen wir unseren neuen Stratum 1 NTP-Server mit

    Code
    ntpq -c peers -c rv


    Ausgabe:


    Wer sich den originalen Artikel ansehen will: Zeitserver auf dem Raspberry aufsetzen

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!