● Demander une adresse IP full stack chez Free pour avoir tous les ports
● Réparation d'un radio réveil impossible à mettre à l'heure et qui affiche 7L7
● Réparation d'une VMC: condensateur HS
● Raspberry Pi en récepteur audio Bluetooth (A2DP audio sink)
● Twitter devient x.com et son logo n'est pas sans rappeler celui x.org
● Enfouissement de pales d'éoliennes: vrai ou faux?
● Mettre à jour Postgresql vers une nouvelle version
● Réduire la taille d'une image de carte SD d'un Raspberry Pi
● Appairer un Freeplug avec un boîtier CPL d'une autre marque
Les images des équipes de NASA Spaceflight ▶
Le rattrapage du booster, décidé manuellement après étude des données de vol, a été annulé car les conditions n'étaient pas correctes. Il a atterri dans l'océan au large de Boca Chica. Le test de rallumage d'un raptor atmosph&eacu[...]
Charge utile du Starship: une banane ! Il n'y a pas de rapport avec la ministre Suédoise qui a la phobie des bananes, l'autocollant “banana for scale” apposé sur le Starship était là bien avant que ne sorte cette histoire.
Normalement il ne devrait pas avoir besoin d'une IP full stack pour la caméra, ces caméras sont faites pour fonctionner avec n'importe quelle box. Le message "impossible de se connecter" apparaît-il uniquement quand le tel utilise la connexion mobile et qu'il n'est pas connect&ea[...]
Bonjour, J'ai besoin d'aide Je possède des caméras dans mon logement que je peux visualiser sur mon tél mais la plupart du temps, je vois le message "impossible de se connecter". L'ancien proprio qui a fait l'installation me dit que cela vient du problème d'IP de Free et [...]
J'ai fait des tests en IPv4 et IPv6 avec nperf, les débits sont ceux attendus et je ne trouve pas de différence de débit entre les 2 protocoles. J'ai une Freebox Revolution avec boîtier ONU externe. Pour ton test de débit, tu es bien connecté en Ethernet &agr[...]
Bonjour, Je vous partage mon aventure avec free et la fameuse adresse ip full stack pour une autre raison que l'hébergement web. J'ai été contraint la mort dans l'âme d'abandonner mes journées de travails contraignantes devant la machine a café pour du t&eacu[...]
Tu es sur qu'il n'y a pas de caractères parasites dans le champ de saisie? Il faut saisir le nom de domaine seulement, par exemple “jesus-forain.fr” Ça peut aussi être un bug du formulaire, essaye aussi avec un autre navigateur
Bonsoir, merci pour ce post très utile. Je n'arrive pas de mon côté à activer le reverse DNS car il me dit en l'espèce : "Reverse invalide: il doit faire au maximum 63 caractères et ne peux contenir que des caractères alphanumériques (a-z A-Z 0-[...]
Oui, je comprends bien que ce genre de situation ne fait pas toujours partie de leurs procédures standards. Comme tu le dis, ce sont surtout des techniciens de premier niveau, mais ils ont quand même transféré mon appel à des techniciens ainsi qu'à leur[...]
Sois toujours à l'heure grâce au NTP!
NTP (Netwok Time Protocol) est un protocole réseau servant à synchroniser les horloges des ordinateurs. C'est grâce au NTP que ton smartphone ou ordinateur est toujours à l'heure exacte avec un précision de l'ordre de quelques millisecondes.
Ici, on va créer un serveur NTP ayant le maximum de précision et pour un coût modique de moins de 100€ voir 10€ si tu as déjà une partie du matériel. Ce serveur sera de strate 1 ayant pour référence le GPS et permettant d'avoir l'heure exacte avec une marge d'erreur d'environ 300ns (nanosecondes) soit 300 milliardièmes de seconde!
Le Raspberry hébergeant ce blog dispose de son propre GPS, lui garantissant ainsi d'être toujours à l'heure. L'heure affichée en haut de cette page est donc toujours juste avec une erreur d'environ 1 seconde causée par le temps de chargement de la page.
Si tu n'as rien compris à ce que l'on va faire, pas de panique! Avant d'aborder l'installation proprement dite je vais t'expliquer quelques généralités sur la mesure du temps et le matériel que l'on va utiliser afin que tu comprenne bien ce que l'on va faire. Mais tu verras que créer un serveur NTP c'est facile.
Les serveurs NTP sont répartis en strates numérotés de 0 à 16 et définissant leur éloignement par rapport à l'horloge de référence. Plus le numéro de strate est élevé, plus le serveur est éloigné de l'horloge source.
Les strates 0 et 16 ont un statut particulier.
- La strate 0 est l'horloge elle-même et il n'existe pas de serveur de strate 0.
- La strate 16 correspond à un serveur non synchronisé permettant aux autres serveurs de l'exclure car indiquant une heure fausse.
Un serveur de strate 1 est directement connecté à l'horloge de référence et offre la synchronisation la plus précise, un serveur de strate 2 se synchronise sur un serveur de strate 1, un serveur de strate 3 se synchronise sur un serveur de strate 2 et ainsi de suite. En général les serveurs vont rarement au delà de la strate 4.
Attention! l'heure ne sera pas forcément plus précise avec un serveur de strate 1 qu'avec un serveur de strate supérieure, notamment sur Internet. Le chemin réseau entre toi et le serveur de strate 1 peut être plus long et traverser beaucoup plus de matériels réseau qu'avec un serveur d'une autre strate qui sera plus proche.
Pour avoir l'heure, ça peut paraître évident mais il nous faut une horloge! Mais comme on veut le maximum de précision on ne va pas utiliser n'importe quelle horloge, il faut une horloge atomique qui est le type d'horloge le plus précis avec une marge d'erreur d'une seconde sur plusieurs millions d'années. Ensuite, cette horloge doit être à l'heure, parce qu'avoir une horloge ultra précise qui n'est pas à l'heure, ce n'est pas très utile.
Ici, notre horloge de référence sera le GPS, et on parle bien du même GPS utilisé en voiture pour nous guider!
Là, tu commences à te poser des questions, c'est quoi le rapport entre le GPS et l'heure? c'est comme si l'on se servait d'une carte routière pour avoir l'heure!
Pour comprendre, il faut s'intéresser au fonctionnement du GPS.
Un récepteur GPS calcule la distance le séparant des satellites dont leur position est connue. Pour placer un point dans l'espace il faut au moins 3 satellites afin de réaliser une triangulation.
Le calcul de distance se fait via la différence de temps entre les signaux reçus des différents satellites et pour savoir quand est parti le signal, il faut l'hordorater et c'est là que le temps entre en compte. Il faut un quatrième satellite pour résoudre une équation à 4 inconnues (X, Y, Z et le temps)
Chaque satellite embarque deux horloges atomiques, dont l'une sers de secours, permettant de diffuser l'heure exacte n'importe où sur Terre.
Avoir sa propre horloge atomique, n'importe quel geek trouverait ça cool sauf que savoir l'heure qu'il est c'est bien plus complexe que ça! Paradoxalement, plus les horloges sont devenues précises, plus c'est devenu complexe de faire en sorte qu'elles indiquent l'heure juste!
Si tu va faire un tour sur Ebay, tu pourras trouver des horloges atomiques pour quelques centaines d'euros et là tu te dis qu'il n'y qu'à la synchroniser une seule fois pour avoir éternellement l'heure exacte. Sauf que ça ne fonctionne pas comme ça!
Une seconde, c'est une seconde, peu importe où l'on est. Enfin c'est ce que l'on croyait jusqu'en 1905 où Albert Einstein nous a pondu sa théorie de la relativité. L'écoulement du temps dépend de la force de gravité et de la vitesse. À l'époque ça ne pose pas de problème puisque la précision des horloges est insuffisante pour en mesurer les effets mais avec l'apparition des premières horloges atomiques dans les années 50 et devenant de plus en plus précises, cet effet va se faire ressentir et poser problème. En 1971 a lieu l'expérience de Hafele-Keating consistant à faire voyager des horloges atomiques à bord d'avions pour vérifier expérimentalement la théorie de la relativité. Parfaitement synchronisés au départ, les horloges ne l'étaient plus à la fin de leur voyage et les décalages théoriques obtenus par le calculs étaient validés expérimentalement. Même chose pour l'action de la force de gravité: une horloge soumise à une plus forte gravité va ralentir par rapport à une autre soumise à une gravité moindre.
Si tu possède ta propre horloge atomique, tu n'auras donc pas l'heure exacte puisque la force de gravité n'est pas parfaitement identique sur Terre, ton horloge ira trop vite ou trop lentement.
La référence de temps utilisée par les horloges atomiques est le TAI (Temps Atomique International), c'est la moyenne pondérée de 450 horloges atomiques dispersés sur la planète. Le TAI est calculé par le Bureau International des Poids et Mesures à Paris.
Et ce n'est pas tout puisqu'il y a un autre paramètre qui entre en compte quand on veux savoir l'heure qu'il est: la vitesse de rotation de la Terre!
Il faut savoir que Terre ne tourne pas exactement en 24h! Soumise à l'influence des autres objets du système solaire, sa rotation est irrégulière, elle accélère ou ralenti de quelques millisecondes chaque jour. Cette référence de temps est nommée UT1 (Universal Time) et correspond à l'heure solaire au méridien de Greenwich.
Maintenant, pour avoir l'heure, il faut combiner le TAI et UT1 qui nous donnent le temps UTC (Coordinated Universal Time), c'est à dire l'heure qu'indique les horloges. Le temps UTC suis l'écoulement du TAI auquel on ajoute des secondes intercalaires afin de rester calé sur le temps UT1. Ces secondes intercalaires sont ajoutés de temps en temps uniquement le 30 juin ou le 31 décembre après 23h 59min 59s, la dernière minute de ces jours dure alors 61 secondes. Depuis l'utilisation d'UTC en 1972, 27 secondes intercalaires ont été ajoutés, la dernière remontant au 31 décembre 2016. Attention! ça ne veut pas dire que les jours ont augmentés de 27 secondes depuis 1972 mais simplement que la définition de la seconde ne colle pas exactement au rythme de rotation de la Terre; ce problème est similaire à celui posé par les années bissextiles auxquelles on ajoute un jour afin que le calendrier reste calé sur les saisons.
Maintenant, tu comprends que mesurer très précisément le temps et garder les pendules à l'heure est un tâche complexe effectuée par des laboratoires spécialisés.
Cependant, tu peux toujours ajouter une horloge atomique à ton serveur NTP. Cette horloge sera synchronisée avec le GPS et servira de secours en cas de perte du signal GPS, permettant ainsi à ton serveur de continuer à fournir l'heure précise pendant quelques jours. D'ailleurs, certains serveurs NTP du commerce sont équipés d'une horloge atomique.
Pour construire notre serveur NTP, on va avoir besoin d'un récepteur GPS ou d'un autre système de positionnement par satellite comme Galilleo ou Glonass. Ce genre de récepteur se trouve sur Amazon pour environ 10€ à 20€, j'ai utilisé celui-ci de type Ublox.
Le récepteur GPS utilise un port série pour communiquer avec l'ordinateur sauf que ce port série possède une latence de quelques millisecondes qui va dégrader la précision de l'heure. Pour cela il faut utiliser en plus un signal PPS (pulse per seconde) qui est une brève impulsion électrique envoyée au début de chaque seconde par le récepteur GPS.
Pour résumer:
- le port série est utilisé pour savoir l'heure qu'il est
- le signal PPS indique très précisément le début de chaque seconde
Les données qui sortent du port série sont toutes les informations brutes calculés par la puce GPS: heure, latitude, longitude, vitesse, nombre de satellites visible etc...
Attention! bien que les puces GPS aient toutes une sortie PPS, sur certains récepteurs GPS la broche PPS de la puce GPS n'est pas câblée, il faudra alors souder un fil directement sur la broche PPS. Vu la petitesse des broches, cette opération est délicate à réaliser. Veiller à choisir un récepteur disposant de la sortie PPS; si le récepteur comporte 5 broches en sortie ça devrait être le cas.
Ensuite, pour notre serveur il nous faut un ordinateur mais pas n'importe lequel puisque l'on va utiliser un Raspberry Pi. Ce qui nous intéresse sur le Raspberry, c'est son connecteur GPIO permettant d'y connecter le récepteur GPS puisque sur le GPIO on y trouve un port série et des connecteurs spécifiques que l'on ne trouve pas sur les ordinateurs type PC permettant de récupérer le signal PPS.
Pour résumer, comme matériel il te faudra:
- un récepteur GPS avec sortie PPS
- un Rasperry Pi. Évite le Raspberry 1 qui est mono core et offre moins de précision que ses successeurs.
- éventuellement des câbles Dupont ou du fil pour connecter le récepteur GPS au Raspberry Pi
Pour gagner en précision et en stabilité, je te conseille de dédier ton Raspberry uniquement à l'utilisation en tant que serveur NTP et ne pas laisser tourner de services inutiles car cela occupe le CPU et diminue la précision de la synchronisation.
Tu recevras ton GPS emballé dans un sachet
À l'intérieur, il y a 3 éléments:
Ce GPS a aussi un port mini USB que l'on ne va pas utiliser ici. Ce port USB est en fait un adaptateur port série vers USB permettant de connecter le GPS à n'importe quel ordinateur et il a le même rôle que le port série du connecteur à souder.
La nomenclature des broches est indiqué sur le circuit imprimé du GPS.
Pour le branchement, utilise ce schéma des broches du connecteur GPIO.
Lors de la mise sous tension du Raspberry, tu doit avoir un LED rouge qui s'allume et qui au bout de quelques minutes devrait se mettre à clignoter au début de chaque seconde (la LED s'éteint quand l'impulsion PPS est envoyée) indiquant alors que le GPS a accroché le signal et est opérationnel. Tant que ça ne clignote pas, tu ne pourras pas utiliser ton GPS et le mieux est d'aller dehors afin de recevoir les signaux des satellites GPS de façon optimale.
Et si tu te poses la question: est-ce que si j'ai plusieurs modules, vont-ils tous clignoter en même temps? la réponse est oui, ils seront tous parfaitement synchronisés.
Exemple de branchement sur un Raspberry Pi 1 que j'ai utilisé pour écrire ce tuto.
Installation faite sur Raspberry Pi OS 2022-09-22-raspios-bullseye-armhf-lite
Se connecter en root
On aura besoin de:
apt install pps-tools gpsd gpsd-tools chrony
Une console est activée par défaut sur le port série du Raspberry, il faut la désactiver car elle va entrer en conflit avec le GPS.
Ouvre le fichier de configuration des paramètres du boot
vim /boot/cmdline.txt
Supprime ces deux paramètres s'ils sont présents dans la ligne d'options
console=serial0,115200
console=tty1
Désactive le service console port série
systemctl disable hciuart.service
Ouvre le fichier de configuration
vim /boot/config.txt
Vérifie que le port série est activé. S'il est présent le paramètre enable_uart doit être à 1. S'il est absent du fichier, ajoute-le.
# Activer le port série
enable_uart=1
Configuration de la broche PPS. Ici on utilise le pin GPIO N°4 mais tu peux en utiliser un autre si tu veux.
Attention! le numéro du pin GPIO est différent du numéro de la broche physique sur le connecteur GPIO.
# Broche PPS
dtoverlay=pps-gpio,gpiopin=18
Pour les Raspberry 3 et supérieur avec Bluetooth, il faut le désactiver car il utilise une partie des broches GPIO.
# Désactiver le Bluetooth
dtoverlay=disable-bt
On va mapper le GPS et le PPS sur des périphériques virtuels avec des noms spécifiques attendus par chrony.
Créer un fichier de règles UDEV
vim /etc/udev/rules.d/80-gps-pps.rules
Colle ça dedans
# Création du lien symbolique /dev/gps0 pointant vers /dev/ttyAMA0
KERNEL=="ttyAMA0", SUBSYSTEM=="tty", DRIVER=="", SYMLINK+="gps0", MODE="0666"
# Création du lien symbolique /dev/gpspps0 pointant vers /dev/pps0
KERNEL=="pps0", SUBSYSTEM=="pps", DRIVER=="", SYMLINK+="gpspps0", MODE="0666"
On va dire au kernel Linux d'utiliser un signal PPS.
Ouvre le fichier
vim /etc/modules
Ajoute cette ligne
pps-gpio
Redémarre le Raspberry
reboot
Dans /dev vérifie que tu as ces 2 périphériques grâce à cette commande
ls -l /dev/gps0 /dev/gpspps0
Tu doit avoir un résultat similaire (ignore les dates)
lrwxrwxrwx 1 root root 7 5 févr. 14:20 /dev/gps0 -> ttyAMA0
lrwxrwxrwx 1 root root 4 5 févr. 14:20 /dev/gpspps0 -> pps0
Ouvre le fichier de configuration
vim /etc/default/gpsd
Explication des paramètres
Ton fichier doit ressembler à ça
# Devices gpsd should collect to at boot time.
# They need to be read/writeable, either by user gpsd or the group dialout.
DEVICES="/dev/ttyAMA0"
# Other options you want to pass to gpsd
GPSD_OPTIONS="-n -r"
# Automatically hot add/remove USB GPS devices via gpsdctl
#USBAUTO="true"
Exécute gpsd au démarrage
systemctl enable gpsd
Démarre le service gpsd
systemctl start gpsd
Le GPS étant maintenant configuré, on va vérifier qu'il fonctionne.
Lance gpsmon
gpsmon
Tu doit avoir un tableau avec toutes les infos retournés par le GPS et ça doit s'actualiser toutes les secondes. Cet affichage est valable pour un GPS envoyant les données au format binaire, si les données sont au format NMEA, l'affichage sera différent. Pour modifier le format, voir la partie Bonus à la fin de cet article.
/dev/ttyAMA0 u-blox>
┌──────────────────────────┐┌─────────────────────────────────────────────────┐ or":14}
│Ch PRN Az El S/N Flag U ││ECEF Pos: +7295054.65m -23086.83m +3791045.55m │ ver":"u-blox","subtype":"SW
│ 0 6 89 1 0 0104 ││ECEF Vel: -0.17m/s -0.19m/s +0.20m/s │ ed":"2023-02-12T10:59:41.00
│ 1 10 277 21 16 030c ││ │ ycle":0.02}]}
│ 2 12 234 68 36 070d Y ││LTP Pos: 44.845663488° -0.572704807° 86.23m │ false,"timing":false,"split
│ 3 13 147 6 21 040d Y ││LTP Vel: 0.00m/s 0.0° 0.00m/s │
│ 4 15 169 26 21 040d Y ││ │
│ 5 17 37 14 25 040d Y ││Time: 0 11:00:02.00 │
│ 6 19 63 35 23 040d Y ││Time GPS: 2249+ 39602.000 Day: 0 │
│ 7 23 242 14 33 070d Y ││ │
│ 8 24 76 76 25 040d Y ││Est Pos Err 9.71m Est Vel Err 0.00m/s │
│ 9 25 239 37 30 070d Y ││PRNs: 9 PDOP: 1.5 Fix 0x03 Flags 0xdd │
│10 32 314 23 26 040d Y │└─────────────────── NAV_SOL ─────────────────────┘
│11 120 201 36 0 0110 │┌─────────────────────────────────────────────────┐
│12 124 150 34 0 0110 ││DOP [H] 0.8 [V] 1.2 [P] 1.5 [T] 0.7 [G] 1.6 │
│13 126 146 32 0 0110 │└─────────────────── NAV_DOP ─────────────────────┘
│14 193 0 -91 0 0110 │┌─────────────────────────────────────────────────┐
│15 194 0 -91 0 0110 ││TOFF: 0.130635318 PPS: 0.000001066 │
└────── NAV_SVINFO ────────┘└─────────────────────────────────────────────────┘
(26) 15ce49dcc90ca16cdeadfc206f4c707f65383de140fb5de720ca
(24) bcec9e3cb6c043b6b93ffe40bfc2ce9a03b01efe618db6077583
------------------- PPS offset: 0.000000925 ------
(60) df7e11eb4ec5fc383157d87fbfb72e492d6633dfcd84024cede41be8a9f074cf5d59df383fae544fa92b66303cd83ed3712af6
69f280b5295fcc14e6
(220) 4b266bb589387e397ea1056054384bd94892c8c168437882ef294f8817a1a2257f12770277b590120510fd1fc9afdc68b584f
a4239ac025c3eca02c79f29854bafa947119b60415639ffc9c3d5f4027990458adf31a7fd2e8a9d86e10e3f9206d2491b10f2b09d1b
aee3d9e5fc9300de9457392bc05e7d7cf1a813683b969d45d03dea429b9d88361fd10ad1030ef36e6c028ac2a50787f2b7b90e50b5e
461f46acb536d37b7606176907d45d91d78b1cd6c15f0251cf8d829c5f584e7b96fd713625adeb890370d0d784769cbc4e03d750c75
ceb11c3569c6070c16
(26) d9594e78700ab25287f9309342619729f3f804a962dedd90724a
(24) 701626805a097044fc604519f75b984c44c971aa3577844a
------------------- PPS offset: 0.000001066 ------
(60) 3088ff6514e187a61f65c37f4c4e74e370c2015808afdd1b6cc4eda02bf7e424148adb8bceca4f77ca51da14a1dac2ef675ba9
f0d802e7212ab5448e
Les lignes qui défilent sous le tableau sont les données brutes envoyés par le récepteur GPS sur le port série et ces données sont mises en forme dans le tableau pour faciliter leur lecture par un humain. Si ton GPS a accroché le signal et que tes branchements sont corrects, tu doit avoir la ligne “PPS offset”, dans le cas contraire elle est absente; on va tester le fonctionnement du PPS au chapitre suivant.
Attention, l'heure donnée par le GPS est fausse! Le temps GPS est calé sur le TAI et ne prends pas en compte les secondes intercalaires. Les secondes intercalaires sont listés au niveau du système dans les fichiers /usr/share/zoneinfo/leapseconds et /usr/share/zoneinfo/leap-seconds.list. Pense à faire régulièrement les mises jour ton système, ces fichiers seront ainsi actualisés.
À partir d'ici, pour continuer ton GPS doit accrocher le signal. Tu doit avoir des Y dans la colonne U à gauche indiquant les satellites actuellement utilisés. S'il n'accroche pas le signal, rapproche-toi d'une fenêtre ou va dehors.
Lors d'un démarrage à froid (au moment de la mise sous tension du GPS), il peut s'écouler une quinzaine de minutes avant que le GPS accroche le signal.
Exécute la commande
ppstest /dev/gpspps0
Tu doit avoir un résultat de ce genre avec une ligne qui s'affiche toutes les secondes
trying PPS source "/dev/gpspps0"
found PPS source "/dev/gpspps0"
ok, found 1 source(s), now start fetching data...
source 0 - assert 1676200598.000002348, sequence: 159720 - clear 0.000000000, sequence: 0
source 0 - assert 1676200599.000000675, sequence: 159721 - clear 0.000000000, sequence: 0
source 0 - assert 1676200600.000000095, sequence: 159722 - clear 0.000000000, sequence: 0
source 0 - assert 1676200601.000001234, sequence: 159723 - clear 0.000000000, sequence: 0
source 0 - assert 1676200602.000000654, sequence: 159724 - clear 0.000000000, sequence: 0
source 0 - assert 1676200603.000001949, sequence: 159725 - clear 0.000000000, sequence: 0
Si tu as ça, ce n'est pas bon, le PPS ne fonctionne pas. Causes possibles: GPS non synchronisé, mauvais contact, mauvaise broche GPIO.
trying PPS source "/dev/gpspps0"
found PPS source "/dev/gpspps0"
ok, found 1 source(s), now start fetching data...
time_pps_fetch() error -1 (Connection timed out)
time_pps_fetch() error -1 (Connection timed out)
time_pps_fetch() error -1 (Connection timed out)
On va configurer le serveur NTP.
Ouvre le fichier de configuration
vim /etc/chrony/chrony.conf
Désactive tous les autres serveurs, dans mon cas il y a juste cette ligne à commenter
pool 2.debian.pool.ntp.org iburst
Juste après cette ligne, ajoute le GPS et le PPS
# GPS
refclock SHM 0 poll 4 refid GPS noselect
# PPS
refclock PPS /dev/pps0 refid PPS poll 4 lock GPS
Explication des paramètres
Par défaut, le serveur chrony n'autorise aucune connexion, il faut les autoriser en ajoutant le paramètre allow.
Autoriser les connexions en provenance de n'importe quelle adresse
allow all
Autoriser uniquement les connexions en provenance du réseau local 192.168.1.0/24
allow 192.168.1.0/24
Redémarre chrony pour appliquer les modifications
systemctl restart chrony
À partir d'ici, ton serveur NTP est maintenant opérationnel.
Pour afficher l'état de la synchronisation, tu peux utiliser cette commande. Il faut cependant attendre quelques minutes que l'horloge se synchronise et d'ici une dizaine de minutes, tu devrait atteindre la précision maximale.
watch -n1 chronyc sources\; echo \; chronyc sourcestats \; echo \; chronyc tracking
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
#? GPS 0 4 377 20 +132ms[ +132ms] +/- 491us
#* PPS 0 4 377 20 +612ns[-1468ns] +/- 5000ns
Name/IP Address NP NR Span Frequency Freq Skew Offset Std Dev
==============================================================================
GPS 29 16 447 -3.833 4.836 +133ms 988us
PPS 6 4 77 -0.010 0.171 -109ns 1281ns
Reference ID : 50505300 (PPS)
Stratum : 1
Ref time (UTC) : Mon Feb 13 17:35:12 2023
System time : 0.000000000 seconds fast of NTP time
Last offset : -0.000002741 seconds
RMS offset : 0.000002092 seconds
Frequency : 52.534 ppm fast
Residual freq : -0.010 ppm
Skew : 0.210 ppm
Root delay : 0.000000001 seconds
Root dispersion : 0.000030353 seconds
Update interval : 16.0 seconds
Leap status : Normal
Ton serveur est synchronisé lorsque le paramètre Leap status indique Normal, tant que ce paramètre est à Not synchronised, ton serveur NTP n'est pas encore synchronisé et non opérationnel.
À côté du nom de la source, juste après le # tu as le status de la source:
Si ta synchronisation est correcte, tu doit avoir comme ici le point d'interrogation en face de “GPS” et l'étoile en face de “PPS”.
Tu remarqueras que dans ma situation, l'offset du GPS est toujours de +132ms, c'est dû à la latence du port série. Il est possible de réduire cette valeur en l'indiquant à chrony. Pour avoir un offset correct, attends 5 à 10 min après le démarrage du serveur le temps de le laisser se synchroniser précisément.
Dans la ligne GPS, il faut ajouter l'offset en secondes via le paramètre "offset". 132 ms en secondes, ça fait 0.132 s. La ligne GPS sera donc
# GPS
refclock SHM 0 poll 4 refid GPS noselect offset 0.132
Redémarre chrony pour appliquer les modifications
systemctl restart chrony
Maintenant, l'offset n'est plus que de quelques centaines de millisecondes
Name/IP Address NP NR Span Frequency Freq Skew Offset Std Dev
==============================================================================
GPS 15 8 112 -4.339 18.091 -324us 494us
PPS 15 6 112 +0.000 0.007 +0ns 236ns
Ton serveur NTP étant maintenant opérationnel, tu peux tester son bon fonctionnement en l'éteignant quelques instants et en le rallumant pour vérifier que tout fonctionne au démarrage. L'horloge devrait se mettre automatiquement à l'heure au bout de quelques minutes.
Maintenant que tu as un serveur NTP fonctionnel, on va pouvoir l'utiliser pour remettre les pendules à l'heure.
Tu peux aussi le rendre disponible à tout le monde sur Internet. Pour cela il faut faire une redirection du port 123 UDP dans ta box internet.
Ouvre la fenêtre "Exécuter" en faisant [WIN] + R
Dans "Ouvrir :" mets timedate.cpl puis [ENTRÉE]
Tu as le panneau de configuration "Date et heure" qui s'ouvre, va dans l'onglet "Temps internet" puis bouton "Modifier les paramètres".
Dans le champ "Serveur:" mets l'adresse de ton serveur NTP puis clic sur "Mettre à jour". Tu devrais voir juste en dessous "L'horloge a été synchronisée avec <ADRESSE_DU_SERVEUR> le <DATE_HEURE>".
En cas d'échec, recommence car des fois windows est capricieux. Si ça ne fonctionne toujours pas, vérifie ton serveur NTP.
Il suffit d'ajouter l'adresse de ton serveur NTP dans le fichier de configuration de ton client NTP. En général ntpd ou chrony.
Il n'est pas possible de configurer le serveur NTP utilisé sans aller bidouiller ou rooter l'appareil. C'est une limitation imposée par Google depuis le début. Il existe cependant des applis qui peuvent récupérer l'heure à partir d'un serveur NTP mais sans pouvoir synchroniser l'appareil; la synchronisation via une appli NTP est uniquement possible sur un appareil rooté.
N'utilisant pas ce système, c'est probablement le même problème que pour Android.
Si ton matériel a une option de synchronisation NTP, indique simplement l'adresse de ton serveur NTP.
Si tu veux, tu peux utiliser mon serveur NTP de strate 1 dont l'adresse est ntp.jesus-forain.fr. Il utilise un Raspberry Pi 2 avec un récepteur GPS; il est disponible en IPv4 et en IPv6.
Pour ton serveur NTP, ceci ne sera pas utile puisque ton GPS a déjà la bonne configuration mais ça peut être utile si tu utilises ton GPS pour d'autres projets ou simplement par curiosité. Tu peux aussi obtenir des informations sur le récepteur GPS comme la version du firmware. Ces paramètres sont perdus à la mise hors tension du GPS.
Le GPS envoie ses données sur le port série mais il peut également recevoir des commandes.
Tu trouveras une liste détaillé des commandes ici. Ceci est uniquement pour les GPS Ublox.
Il se peut qu'à l'exécution de ces commandes ça te renvoie cette erreur
ubxtool: failed to import gps, check PYTHONPATH
C'est qu'il te manque une bibliothèque Python qu'il faudra installer
apt install python3-gps
Remets le GPS à zéro
ubxtool -p RESET
ubxtool -e BINARY
ubxtool -d NMEA
On désactive le format NMEA et active le format binaire
-e enable (activer)
-d disable (désactiver)
On fait l'inverse que précédemment. Si tu exécute gpsmon, tu remarqueras que l'affichage est différent.
ubxtool -d BINARY
ubxtool -e NMEA
Efface toutes les données des satellites en mémoire. Le GPS reviens à un état non synchronisé où il devra chercher les satellites comme lors de la première mise sous tension.
unxtool -p COLDBOOT
Par défaut, les données GPS sont envoyés toutes les secondes; si le récepteur GPS a un taux d'actualisation de 10Hz, il est possible de les envoyer jusqu'à 10 fois par seconde.
La fréquence d'actualisation est en millisecondes (1000ms = 1s).
Actualiser toutes les secondes (comportement par défaut)
ubxtool -p CFG-RATE,1000
Actualiser 10 fois par seconde soit toutes les 100ms
ubxtool -p CFG-RATE,100
Lance gpsmon et tu verras que ça défile beaucoup plus vite.
Par exemple 115200 bps
ubxtool -s 115200
Il faudra modifier le fichier de configuration de gpsd /etc/default/gpsd en ajoutant le paramètre -s 115200 dans GPSD_OPTIONS et redémarrer gpsd.
Excellent ! Merci pour ce tuto très clair . Exactement ce que je cherchais. Ca donne envie de se lancer !!
Bonjour, tuto très clair est précis ! Le module GPS marche parfaitement suite aux indications de mises en œuvre.
Merci beaucoup !
Super intéressant, merci !