{{:documentation:informatique:linux:gps_time_sync:terre_gps_13714.jpg?direct&300|}} ====== SYNCHRONISATION DE L'HORLOGE D'UN RASPBERRY PI AVEC UN RÉCEPTEUR GPS ====== ===== POURQUOI / INTRO ===== Plusieurs applications radioamateurs nécessitent que l'ordinateur sur lequel elles fonctionne soit précisément à l'heure. C'est notamment le cas pour des modes de transmissions qui utilisent un cadencement précis entre émission et réception. En temps normal, la synchro de l'horloge du PC se fait à travers le réseau (localement si on dispose d'un serveur NTP ou plus généralement, par internet) via le protocole NTP. Sur le terrain il n'est pas toujours possible d'avoir accès à un réseau fiable, voire à un réseau tout court. En utilisant un récepteur GPS autonome, il est possible de mettre à l'heure son ordinateur de manière suffisamment précise, sans connexion à un réseau. ===== INSTALLATION + CONFIG ===== **Environnement** : "Raspbian GNU/Linux 11 (bullseye)" ==== OUTILS GPS ==== $> sudo apt install -y gpsd gpsd-tools gpsd-clients ==== CONFIG GPSD ==== Éditer ''/etc/default/gpsd'' # Devices gpsd should collect to at boot time. # They need to be read/writeable, either by user gpsd or the group dialout. # Remplacer /dev/ttyACM0 par le device créé à la connexion du GPS au port USB # Faire un ''tail -F /var/log/syslog'' avant de connecter le GPS au port USB et regarder quel device est créé DEVICES="/dev/ttyACM0" # Other options you want to pass to gpsd # '-n' permet de rechercher les sats au lancement du daemon GPSD_OPTIONS="-n" # Automatically hot add/remove USB GPS devices via gpsdctl USBAUTO="true" # Socket GPSD_SOCKET="/var/run/gpsd.sock" # Start deamon at startup START_DAEMON="true" ==== REDÉMARRER GPSD ==== $> sudo service gpsd start ==== INSTALLER LES PAQUETS NTP ==== sudo apt install -y ntp ntpstat ==== ÉDITER LA CONFIGURATION NTP ==== Éditer ''/etc/ntp.conf'' et ajouter #GPS TIME SOURCE server 127.127.28.0 minpoll 4 maxpoll 4 fudge 127.127.28.0 refid GPS ==== REDÉMARRER LE SERVICE NTP ==== $> sudo service ntp restart ==== CRÉER UN LANCEUR DU DAEMON GPSD AU DÉMARRAGE ==== Éditer ''/etc/systemd/system/gpsd.service'' [Unit] Description=GPS (Global Positioning System) Daemon Requires=gpsd.socket # Needed with chrony SOCK refclock After=chronyd.service [Service] EnvironmentFile=-/etc/default/gpsd EnvironmentFile=-/etc/sysconfig/gpsd ExecStart=/usr/sbin/gpsd -N $GPSD_OPTIONS $DEVICES [Install] WantedBy=multi-user.target Also=gpsd.socket [Unit] Description=GPS (Global Positioning System) Daemon Requires=gpsd.socket # Needed with chrony SOCK refclock After=chronyd.service [Service] EnvironmentFile=-/etc/default/gpsd EnvironmentFile=-/etc/sysconfig/gpsd ExecStart=/usr/sbin/gpsd -N $GPSD_OPTIONS $DEVICES [Install] WantedBy=multi-user.target Also=gpsd.socket ==== REDEMARRER LE SERVICE AVEC LA NOUVELLE CONFIG ==== $> sudo systemctl daemon-reload $> sudo systemctl reenable gpsd.service ===== RESSOURCES ===== * https://linuxembedded.fr/2020/11/distribuer-le-temps-gps * https://www.framboise314.fr/un-gps-usb-pour-le-raspberry-pi/#Installer_gpsd * https://www.framboise314.fr/lheure-gps-sur-votre-raspberry-pi/