Table des matières

Ntp : synchroniser l'heure sur raspberry

Synchroniser l'heure de votre Raspberry Pi de manière fiable 14/06/2017 |

La Raspberry Pi Foundation est une association caritative anglaise dont l'objet est de promouvoir l'apprentissage de l'informatique et de la programmation chez les plus jeunes, quelles que soient leurs origine sociales et culturelles. Son projet majeur, le Raspberry Pi, est lancé dans le début des années 2010. Son but est de concevoir, assembler et distribuer un SBC à très faible coût, à destination des écoles et centres de formation du monde entier. Au fil des années, les modèles de Raspberry Pi se sont succédés et ont rencontrés un très grand succès, tant auprès des écoles que du grand public grace à son prix de vente modique — entre $5 et $35 selon le modèle.

Mais ce prix modique nécessite quelques concessions. Les Raspberry Pis sont par exemple exempts de puces RTC dont le but est de gérer finement le temps. Conséquence ? Les Pis ne peuvent pas être utilisés pour de la programmation dite temps réel et — je l'ai découvert à mes dépends lorsque mon système domotique a allumé la télévision en pleine nuit — ils peuvent présenter un décalage de date et d'heure après une coupure électrique. Si votre Raspberry Pi “perd” la date ou l'heure après redémarrage et qu'il est connecté à internet, voici la ma solution. La — mauvaise — solution

En recherchant sur internet, vous trouverez probablement beaucoup de posts qui vous suggèrent d'activer le client NTP et de renseigner le fichier /etc/ntp.conf.

Oubliez ça.

Le service systemd-timesyncd est — à mon humble avis — plus fiable et plus efficace que le service ntp. Voici comment le configurer et l'activer.

Choisissez un ou plusieurs serveurs NTP avec lesquels votre Pi se synchronisera. Des listes de serveurs français fiables sont disponibles sur le site du réseau Renater et le site du NTP Pool Project France. Renseignez ces serveurs dans le fichier /etc/systemd/timesyncd.conf (séparez les serveurs par un espace) :

pi@raspberrypi: $ sudo nano -c /etc/systemd/timesyncd.conf

  #  This file is part of systemd.
  #
  #  systemd is free software; you can redistribute it and/or modify it
  #  under the terms of the GNU Lesser General Public License as published by
  #  the Free Software Foundation; either version 2.1 of the License, or
  #  (at your option) any later version.
  #
  # Entries in this file show the compile time defaults.
  # You can change settings by editing this file.
  # Defaults can be restored by simply deleting this file.
  #
  # See timesyncd.conf(5) for details.
  [Time]
  Servers=ntp.serveur1.fr ntp.serveur2.fr

Le service est configuré. Pour l'activer, utilisez la commande suivante :

pi@raspberrypi: $ sudo timedatectl set-ntp true

Votre RaspberryPi est désormais configuré pour se synchroniser avec le ou les serveurs NTP, et il le restera. Pour en avoir la confirmation, executez la commande timedatectl :

  pi@raspberrypi: $ timedatectl
  Local time: mar. 2017-08-08 09:12:58 CEST
  Universal time: mar. 2017-08-08 07:12:58 UTC
  RTC time: n/a
  time zone: Europe/Paris (CEST, +0200)
  Network time on: yes
 NTP synchronized: yes
 NTC in local TZ: no

Enfin, pour vérifier que la synchronisation est effective, exécutez la commande sudo service systemd-timesyncd status. La dernière ligne indique si la synchronisation a réussi :

 systemd-timesyncd.service - Network Time Synchronization
 Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled)
 Drop-In: /lib/systemd/system/systemd-timesyncd.service.d
     └─disable-with-time-daemon.conf
 Active: active (running) since Sun 2018-10-21 21:02:31 CEST; 1s ago
   Docs: man:systemd-timesyncd.service(8)
Main PID: 1998 (systemd-timesyn)
 Status: "Synchronized to time server 195.83.132.135:123 (ntp.laas.fr)."
 CGroup: /system.slice/systemd-timesyncd.service
     └─1998 /lib/systemd/systemd-timesyncd
oct. 21 21:02:31 raspberry.local systemd[1]: Starting Network Time Synchronization...
oct. 21 21:02:31 raspberry.local systemd[1]: Started Network Time Synchronization.
oct. 21 21:02:31 raspberry.local systemd-timesyncd[1998]: Synchronized to time server 195.83.132.135:123 (ntp.laas.fr).

Afin d'éviter tout conflit avec le service ntp, je vous conseille de désinstaller ce dernier avec la commande sudo apt-get purge ntp.