A l'Observatoire de Besançon, nous avons voulu vérifier la stabilité du système NTP lorsqu'il est relié à la fois à un serveur de temps et un signal PPS. Dans notre cas, le signal PPS est issu de la même horloge de référence que celle utilisée par le serveur de temps.
Toutes les opérations suivantes sont effectuées en utilisateur “root” et considèrent que les étapes de configurations éventuelles d'un proxy ont été faites préalablement.
# uname -a Linux raspberrypi 3.18.12-v7+ #782 SMP PREEMPT Tue Apr 28 19:54:13 BST 2015 armv7l GNU/Linux
# apt-get update
# apt-get dist-upgrade
# rpi-update
# apt-get install pps-tools
En effet, la version implémentée dans la distribution Raspbian n'inclue pas la prise en compte d'un PPS externe. Pour cela, l'installation de bibliothèques de développement est nécessaire.
# apt-get install libcap-dev libssl-dev
# cd /home # mkdir root # cd root # mkdir ntp # cd ntp
# wget http://archive.ntp.org/ntp4/ntp-4.2/ntp-4.2.8p2.tar.gz
# tar xvfz ntp-4.2.8p2.tar.gz
# cd ntp-4.2.8p2.tar.gz # ./configure --enable-linuxcaps # un peu moins de 6 min # make -j2 # un peu moins de 5 min contre presque 8 min avec un simple make
# make install # /etc/init.d/ntp stop # cp /usr/local/bin/ntp* /usr/bin/ # cp /usr/local/sbin/ntp* /usr/sbin/
# nano /boot/config.txt
Ajouter la ligne suivante, puis enregistrer le fichier :
dtoverlay=pps-gpio,gpiopin=18
# nano /etc/modules
Rajouter cette ligne puis enregistrer le fichier :
pps-gpio
Connecter le signal PPS entre la masse électrique et l'entrée choisie. Pour notre exemple, nous avons pris la masse broche 39 et l'entrée 18 broche 12. Voici l'organisation du bornier :
# lsmod | grep pps pps_gpio 2547 1 pps_core 6855 2 pps_gpio
# ppstest /dev/pps0 trying PPS source "/dev/pps0" found PPS source "/dev/pps0" ok, found 1 source(s), now start fetching data... source 0 - assert 1430922986.000009024, sequence: 12990 - clear 0.000000000, sequence: 0 source 0 - assert 1430922987.000007107, sequence: 12991 - clear 0.000000000, sequence: 0 source 0 - assert 1430922988.000007013, sequence: 12992 - clear 0.000000000, sequence: 0 source 0 - assert 1430922989.000006034, sequence: 12993 - clear 0.000000000, sequence: 0 source 0 - assert 1430922990.000006461, sequence: 12994 - clear 0.000000000, sequence: 0
Ctrl + C pour arrêter.
# nano /etc/ntp.conf
en ajoutant les lignes :
# LAN servers server kronos prefer server saturne.obs-besancon.fr # kernel-mode PPS ref-clock server 127.127.22.0 minpoll 6 maxpoll 6 fudge 127.127.22.0 refid PPS
Les lignes avec 127.127.22.X définissent les entrées PPS sur /dev/ppsX avec des temps de consultation réglés par nimpoll et maxpoll en puissance de 2 secondes.
# /etc/init.d/ntp start
Pour vérifier l'action de NTP :
# ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== oPPS(0) .PPS. 0 l 52 64 377 0.000 -0.017 0.002 *kronos.ltfb.lan .PPS. 1 u 43 64 377 0.264 -0.089 0.034 +saturne.obs-bes .PPS. 1 u 8 64 377 0.434 0.010 0.031
Le jitter et le délais se stabilisent au bout de quelques heures.
Je n'ai fait que reprendre une part des informations trouvées sur cette page qui est très bien faite :
http://www.satsignal.eu/ntp/Raspberry-Pi-NTP.html
Tout y est très bien expliqué.
Documentation de la carte Raspberry PI 2