D'où le Raspberry Pi tire-t-il le temps?


44

Je n'ai pas à régler l'horloge (à part le fuseau horaire) sur le Raspberry Pi. D'où vient le temps? A quel point est-il précis?


Les installations fraîches ont le temps de récupérer de diverses sources. Pour plus de détails et pour savoir pourquoi vous devez le remplacer par time.nist.gov, consultez le présent Q & A: raspberrypi.stackexchange.com/questions/68811/…
SDsolar le

Réponses:


45

Raspbian obtient l'heure d'un serveur NTP (un "serveur de temps").

Débranchez complètement votre Raspberry Pi, débranchez le câble réseau et redémarrez le Raspberry Pi. Vous verrez que la date et l'heure sont incorrectes.

Si vous souhaitez / souhaitez que la date et l'heure ne soient pas réinitialisées sans être connectées à Internet, vous aurez besoin d'une horloge en temps réel (RTC) - par exemple, quelque chose comme cela - qui maintiendra l'heure à jour, en utilisant une batterie faire fonctionner une horloge. C’est aussi pour cette raison que votre ordinateur conserve l’heure où il n’est pas alimenté.

UPDATE Juste une note de côté que l'horloge RTC ci-dessus n'est pas le seul moyen de garder l'heure exacte entre les coupures de courant. Vous pouvez également utiliser un module GPS et le relier aux broches GPIO.

Précision C'est assez précis, bien que si le temps de votre horloge est bien décalé. Cela peut prendre jusqu'à 3 heures pour se corriger, les modifications du serveur étant appliquées progressivement à votre horloge locale. La stabilité du réseau a le plus grand impact sur la précision, puisqu'un réseau imprévisible (quelque chose de plus sans fil, comme la 3G ) rendra très difficile la précision. Pour le dire simplement: la précision est plutôt bonne, la différence de temps entre votre ordinateur et l'heure réelle (à partir du serveur NTP) est normalement inférieure à 100 ms .


1
Bonne réponse. merci pour le lien sur l'horloge matérielle
Scoop

1
Bonne réponse; il pourrait être amélioré en mentionnant la précision du protocole NTP.
Alex Chamberlain

@AlexChamberlain Merci pour l'avertissement, j'allais l'ajouter mais cela m'a complètement échappé. Je l'ai ajouté maintenant.
Vincent P

Alors que mon Pi est connecté au réseau, je remarque que le temps a déjà pris 30 minutes. Ntpd est-il activé par défaut ou dois-je le faire manuellement?
Andig

Peut-être que oui, jusqu’à Raspberry Pi 3. J'en ai acheté un il ya deux mois et la mise à jour de l’heure NTP est foutue, du moins sur l’officielle Raspbian Jessie. J'ai ouvert trois discussions avec ce problème et tout le monde est désemparé. J'ai dû acheter un module matériel pour gagner du temps afin de résoudre le problème.
Pygmalion,

21

La réponse de Morgan m'a donné le conseil nécessaire pour résoudre le problème.

  1. Allez sur http://support.ntp.org/bin/view/Servers/NTPPoolServers.
    Sélectionnez votre région, votre pays et une liste de serveurs s'afficheront.

  2. Editez votre fichier /etc/ntp.conf, par exemple

    sudo vim /etc/ntp.conf

    Remplacez la liste de serveurs par celle que vous avez trouvée dans la page Web. par exemple

    serveur 0.dk.pool.ntp.org
    serveur iburst 1.dk.pool.ntp.org
    serveur iburst 2.dk.pool.ntp.org
    serveur iburst 3.dk.pool.ntp.org iburst

    Sauvegarder et quitter.

  3. Redémarrez le démon NTP.

    sudo /etc/init.d/ntp restart

  4. vérifiez que la date est correcte.

    date
    jeu. juin 20 13:39:20 CEST 2013

Dans l'un de mes serveurs, la date a été changée immédiatement. Dans l'autre je devais attendre quelques minutes.


2
Si vous êtes au Royaume-Uni (ou dans un autre pays), vous pouvez simplement modifier le code de pays à deux lettres pour l'adapter à .eg server 0.uk.pool.ntp.org iburst
Pierz

L'étape 4 n'a pas fonctionné pour moi avant 15 minutes environ. Ou peut-être parce que j'ai couru ntpq -p. J'utilise: "Raspbian GNU / Linux 7 (wheezy)" et "Linux raspberrypi 4.1.7+ # 817 PREEMPT sam 19 sep 15:25:36 CST 2015 armv6l GNU / Linux"
Peter Mortensen

Peut hwclock-fake-hwclock être ou interfère-t-il (mais la partie "/etc/rc.conf" est obsolète)
Peter Mortensen


Et après 5 minutes d’arrêt, nous avions 5 minutes de retard ( ntpq -pcela ne faisait pas de différence).
Peter Mortensen

14

Si vous avez le fake-hwclockpaquet , il utilisera également une astuce permettant d’enregistrer l’horodatage afin d’empêcher la réinitialisation de l’horloge. Cela ne fera pas avancer le temps lorsque l'appareil est éteint, donc il sera à la traîne. L'horloge interne va aussi dériver un tout petit peu.

Si vous avez une connexion Internet (ou un réseau local avec un serveur) et exécutez ntp (ntpd / ntpdate), vous pouvez obtenir l'heure sur le réseau, comme le soulignent d'autres réponses. Une fois synchronisé, il est vraiment très précis. Les serveurs en ligne vous donneront également le consensus "heure mondiale".


intéressant à propos fake-hwclock. Pourquoi quelqu'un voudrait-il geler l'horloge quand la machine est éteinte? Je ne peux pas penser à un cas d'utilisation pour cela. Y a-t-il?
Scoop

2
@Scoop Parce que l'alternative est d'oublier l'heure, il se réinitialisera. Cela ferait apparaître tous les horodatages enregistrés comme provenant du futur, etc. "Le fait de geler" l'horloge permet de s'assurer que l'heure avance, même si le compte est désactivé :)
XTL

1
Avoir ntp ou un autre moyen de régler l'horloge fonctionnera bien sûr et fake-hwclock ne fonctionnera qu'au démarrage et à l'arrêt.
XTL

1
pour fake-hwclocksur Arch Linux, utilisez archplusplus.co.uk/post/40202081414/…
levinalex

2
Ce paquet semble maintenant être installé par défaut sur Raspbian maintenant.
Pierz

11

Le Raspberry Pi n’a pas d’horloge temps réel (RTC) intégrée pour la rentabilité: voir la question "Pourquoi n’y at-il pas d’horloge temps réel (RTC)?" dans la FAQ officielle . Cela signifie que lorsque vous débranchez le Raspberry Pi, il perd son temps. Lorsque vous le rallumez, l'heure est initialisée au 1er janvier 1970 ( époque Unix ).

Le Raspberry Pi règle son heure sur le réseau avec NTP , un protocole de synchronisation d'horloge entre ordinateurs. Ce protocole est largement utilisé sur Internet pour s’assurer que les ordinateurs ont la même heure et est très fiable puisque certaines machines sont dédiées au calcul de l’heure avec des horloges atomiques .

ntpdest un démon (un logiciel en arrière-plan) lancé une heure de démarrage, et il est responsable de la synchronisation de l'heure à l'aide du protocole NTP. ntpdpeut être configuré avec le fichier /etc/ntp.conf. Par exemple, c’est ici que vous pouvez configurer les serveurs pour demander l’heure.


Ne se souvient-il pas de la dernière fois? J'ai arrêté un Raspberry Pi il y a une semaine et dateaffiche maintenant cette date ancienne ainsi que, je pense, quelques heures supplémentaires par rapport au temps de disponibilité d'hier et d'aujourd'hui (après quelques redémarrages d'hier et d'aujourd'hui). (Raspbian, correspondant à la mi-2015).
Peter Mortensen

Courez cat /etc/fake-hwclock.dataet vous verrez le dernier fake-hwclockgain de temps (évidemment, au moment de l’arrêt). fake-hwclockest utilisé sur le RPi pour imiter une vraie horloge. Je pense que vous avez démarré votre RPi sans accès Internet ou sans avoir ntpdcommencé à mettre à jour l'heure. Pouvez-vous confirmer cela?
Morgan Courbet

5

Raspbian Stretch: NTP non installé par défaut

Il semblerait qu'il y ait eu un peu de changement avec Raspbian Stretch. En bref, NTP n'est plus installé. Courir dpkg -l | grep ntpne renvoie rien.

Apparemment, Stretch a abandonné l' ntpapplication au profit de systemd. Vérifiez l' man timesyncdentrée pour plus de détails sur les paramètres de configuration. timesyncdutilise toujours les serveurs NTP pour mettre à jour l'heure. Si vous souhaitez configurer ces serveurs manuellement, vous pouvez le faire dans le /etc/systemd/timesyncd.conffichier.


1
Une fois la modification effectuée, redémarrez le service avant, sudo systemctl restart timesyncdpuis vérifiez les journaux en journalctl -u timesyncd -fbloquant parfois le port par les pare-feu de l'entreprise. Dans ce cas, utilisez l'URL du serveur ntp de l'entreprise fourni.
typelogic

Je crois que le nom correct du démon est systemd-timesyncd, de sorte que la commande à redémarrer seraitsystemctl restart systemd-timesyncd
chb

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.