RPi4, Ubuntu22.04, GPS, 1PPS, chrony

環境

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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*