{{: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/