環境
u-blox M10S <UART, PPS-GPIO> Raspberry Pi 4B + Ubuntu 22.04 + chrony (NTP)
この Raspberry Pi HAT GR-M10-RP は UART が結線されている。PPS は引き出してあるが結線されていないので PPS と GPIO18 を接続する。とりあえずクリップで接続しているだけで、決して推奨しているわけではない。電源を切って接続すること。
いろいろインストールする。
$ sudo apt update $ sudo apt install gpsd gpsd-tools pps-tools chrony
PPS-GPIO モジュールを読み込む設定。
$ sudo vi /etc/modules pps-gpio
UART を有効にして、PPS-GPIO モジュールを紐付ける設定。
$ sudo vi /boot/firmware/config.txt [all] ... # Enable the UART port enable_uart=1 # Associate GPS 1PPS with the GPIO18 dtoverlay=pps-gpio,gpiopin=18
再起動する。
$ sudo reboot
PPS デバイスが生えて信号が取れてくるか確認。
$ sudo ppstest /dev/pps0 trying PPS source "/dev/pps0" found PPS source "/dev/pps0" ok, found 1 source(s), now start fetching data... source 0 - assert 1680849684.999999591, sequence: 10165 - clear 0.000000000, sequence: 0 source 0 - assert 1680849685.999998084, sequence: 10166 - clear 0.000000000, sequence: 0 source 0 - assert 1680849687.000001170, sequence: 10167 - clear 0.000000000, sequence: 0 source 0 - assert 1680849687.999997829, sequence: 10168 - clear 0.000000000, sequence: 0
NMEA がワラワラ取れていることを確認。
$ gpsmon -n /dev/ttS0
gpsd を設定。
$ sudo vi /etc/default/gpsd DEVICES="/dev/ttyS0 /dev/pps0" GPSD_OPTIONS="-n" USBAUTO="false"
gpsd を再起動。
$ sudo systemctl restart gpsd.service
デバイスを指定せず NMEA が取れていることを確認。
$ gpsmon -n
chrony を設定。
$ sudo vi /etc/chrony/chrony.conf pool ntp.ubuntu.com iburst maxsources 4 pool ntp.nict.jp iburst maxsources 4 refclock PPS /dev/pps0 lock NMEA refid GPS
chrony を再起動。
$ sudo systemctl restart chrony.service
$ chronyc sources -v .-- Source mode '^' = server, '=' = peer, '#' = local clock. / .- Source state '*' = current best, '+' = combined, '-' = not combined, | / 'x' = may be in error, '~' = too variable, '?' = unusable. || .- xxxx [ yyyy ] +/- zzzz || Reachability register (octal) -. | xxxx = adjusted offset, || Log2(Polling interval) --. | | yyyy = measured offset, || \ | | zzzz = estimated error. || | | \ MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== #* GPS 0 4 77 14 +291ns[ +637ns] +/- 243ns ^- prod-ntp-3.ntp4.ps5.cano> 2 6 37 27 -1629us[-1629us] +/- 125ms ^- prod-ntp-3.ntp4.ps5.cano> 2 6 37 26 -5502us[-5502us] +/- 131ms ^- alphyn.canonical.com 2 6 37 27 +1522us[+1522us] +/- 133ms ^- prod-ntp-4.ntp4.ps5.cano> 2 6 37 27 -4972us[-4972us] +/- 126ms ^- ntp-a2.nict.go.jp 1 6 37 28 +1090us[+1090us] +/- 5824us ^- 2001:ce8:78::2 1 6 37 29 +589us[ +589us] +/- 10ms ^- ntp-a3.nict.go.jp 1 6 37 29 -2611us[-2611us] +/- 5687us ^- ntp-a2.nict.go.jp 1 6 37 28 -166us[ -166us] +/- 3466us
同期してなかったら数分待つと同期する。
参考にしたページのリンク
https://chrony.tuxfamily.org/doc/4.3/chrony.conf.html
https://qiita.com/yamakenjp/items/e69eeabdefd9cc960610
https://www.popnja.com/entry/2021/10/04/181652