votre temps local: :: ()
heure officielle (en France) : ::(TZ:)
Heure UTC client: :: Offset client: s - delai: ms - - timeZone: Heure UTC: ::Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
fr:ntp_raspberry [2015/05/06 11:46] emeyer |
fr:ntp_raspberry [2015/05/11 15:08] (Version actuelle) emeyer [Pour l'entrée PPS] |
||
---|---|---|---|
Ligne 4: | Ligne 4: | ||
* Une carte Raspberry PI 2, équipée d'une carte micro-SD contenant le système Raspbian. | * Une carte Raspberry PI 2, équipée d'une carte micro-SD contenant le système Raspbian. | ||
* Un signal PPS issu de l'horloge de référence (CS1321), avec un atténuateur pour adapter le signal en amplitude (entrées 3,3V pour les GPIO du Raspaberry PI 2). | * Un signal PPS issu de l'horloge de référence (CS1321), avec un atténuateur pour adapter le signal en amplitude (entrées 3,3V pour les GPIO du Raspaberry PI 2). | ||
- | ===== Installations logicielles préliminaires ===== | + | ===== Installations logicielles ===== |
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. | 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. | ||
- | - Mettre à jour la distribution Raspbian et du micro-logiciel de la carte | + | *La Version de Raspbian au moment de l'écriture de ces lignes :<code> |
- | Mettre à jour la liste des fichiers disponibles dans les dépôts APT | + | # uname -a |
- | # apt-get update | + | Linux raspberrypi 3.18.12-v7+ #782 SMP PREEMPT Tue Apr 28 19:54:13 BST 2015 armv7l GNU/Linux </code> |
- | Mettre à jour tous les paquets installés vers les dernières versions en installant de nouveaux paquets si nécessaire | + | |
- | # apt-get dist-upgrade | + | |
- | Mettre à jour le firmware | + | |
- | # rpi-update | + | |
- | - Installer le paquet pps-tools | + | ==== Préliminaires ==== |
- | Le projet LinuxPPS est une implémentation d'une API du PPS pour le noyau Linux. Elle utilise le système de fichiers pour échanger entre l'espace utilisateur et le noyau. Cela permet d'ajouter des sources PPS au noyau très simplement ([[http://linuxpps.org/wiki/index.php]]) | + | |
+ | * Mettre à jour la distribution Raspbian et du micro-logiciel de la carte \\Mettre à jour la liste des fichiers disponibles dans les dépôts APT \\<code> | ||
+ | # apt-get update </code> | ||
+ | * Mettre à jour tous les paquets installés vers les dernières versions en installant de nouveaux paquets si nécessaire \\<code> | ||
+ | # apt-get dist-upgrade </code> | ||
+ | * Mettre à jour le firmware \\<code> | ||
+ | # rpi-update </code> | ||
+ | * Installer le paquet pps-tools \\Le projet LinuxPPS est une implémentation d'une API du PPS pour le noyau Linux. Elle utilise le système de fichiers pour échanger entre l'espace utilisateur et le noyau. Cela permet d'ajouter des sources PPS au noyau simplement ([[http://linuxpps.org/wiki/index.php]]) <code> | ||
+ | # apt-get install pps-tools </code> | ||
+ | |||
+ | ==== Recompiler et installer NTP ==== | ||
+ | |||
+ | 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. | ||
+ | * Installation de bibliothèques | ||
+ | * libcap : librairie permettant l'utilisation de certaines propriétés du système de fichiers | ||
+ | * libssl : c'est la partie de OpenSSL qui supporte le protocole TLS ( SSL et TLS ) <code> | ||
+ | # apt-get install libcap-dev libssl-dev </code> | ||
+ | * Enregistrement des sources de NTP | ||
+ | * Se placer dans un répertoire. Si besoin le créer, par exemple :<code> | ||
+ | # cd /home | ||
+ | # mkdir root | ||
+ | # cd root | ||
+ | # mkdir ntp | ||
+ | # cd ntp </code> | ||
+ | * obtenir les sources : <code> | ||
+ | # wget http://archive.ntp.org/ntp4/ntp-4.2/ntp-4.2.8p2.tar.gz </code> | ||
+ | * Décompresser le fichier "tar" : <code> | ||
+ | # tar xvfz ntp-4.2.8p2.tar.gz </code> | ||
+ | * compiler : <code> | ||
+ | # 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 | ||
+ | </code> | ||
+ | * installer les binaires : <code> | ||
+ | # make install | ||
+ | # /etc/init.d/ntp stop | ||
+ | # cp /usr/local/bin/ntp* /usr/bin/ | ||
+ | # cp /usr/local/sbin/ntp* /usr/sbin/ | ||
+ | </code> | ||
+ | |||
+ | ===== Configuration ===== | ||
+ | ==== Pour l'entrée PPS ==== | ||
+ | === Fichiers à modifier === | ||
+ | |||
+ | * Indiquer sur quelles entrée se trouve le PPS : \\ Nous avons choisi l'entrée BCM18 (broche 12) du connecteur GPIO du Raspberry PI 2. <code> | ||
+ | # nano /boot/config.txt </code> Ajouter la ligne suivante, puis enregistrer le fichier : <code> | ||
+ | dtoverlay=pps-gpio,gpiopin=18 </code> | ||
+ | * Rajouter pps-gpio à la liste des modules : \\ Editer <code> | ||
+ | # nano /etc/modules </code> Rajouter cette ligne puis enregistrer le fichier : <code> | ||
+ | pps-gpio </code> | ||
+ | === Connecter le PPS === | ||
+ | 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 : | ||
+ | {{ :fr:rpi_gpio_pinout.jpg?500 | Connecteur GPIO et brochage}} | ||
+ | |||
+ | |||
+ | === Tests === | ||
+ | * Pour vérifier que le module est bien chargé, vous devriez obtenir quelque chose comme ça : <code> | ||
+ | # lsmod | grep pps | ||
+ | pps_gpio 2547 1 | ||
+ | pps_core 6855 2 pps_gpio </code> | ||
+ | * Pour vérifier si le PPS est bien pris en compte, une fois le signal appliqué à l'entré GPIO concernée (ATTENTION : 3,3 V), vous deviez pouvoir utiliser la commande ppstest et obtenir une information par seconde : <code> | ||
+ | # 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 </code> Ctrl + C pour arrêter. | ||
+ | ==== Pour NTP ==== | ||
+ | * Modifier le fichier de configuration, <code> | ||
+ | # nano /etc/ntp.conf </code> en ajoutant les lignes : <code> | ||
+ | # 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 </code> 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. | ||
+ | * Redémarrer le service NTP : <code> | ||
+ | # /etc/init.d/ntp start </code> | ||
+ | === Test === | ||
+ | Pour vérifier l'action de NTP : <code> | ||
+ | # 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 </code> Le jitter et le délais se stabilisent au bout de quelques heures. | ||
+ | |||
+ | |||
+ | ====== Références ====== | ||
+ | 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é.\\ \\ | ||
+ | [[https://www.raspberrypi.org/documentation/usage/gpio-plus-and-raspi2/README.md| Documentation de la carte Raspberry PI 2]] | ||
+ | ====== | ||
- | This API uses character devices to exchange data between userspace and the GNU/Linux kernel using a well defined kernel API. It also makes adding new PPS sources to the kernel extremely simple. | ||
- | # apt-get install pps-tools | ||