アルペンスキータイミングシステム開発中

アルペンスキー用のタイム測定器を開発しようとしています。

chrony & gps unixドメインソケット

gpsdからNMEAとppsをもらうがppsはunixドメインソケット経由

# for gps
refclock SHM 0 refid GPS precision 1e-6 offset 0.401
refclock SOCK /var/run/chrony.pps0.sock refid PPS

先にchronyを起動し後でgpsdを起動する。

本当にgpsdのログレベルを上げて確認できる。 コンソールから次のように起動する

sudo gpsd -N -n -D 9 /dev/gps0 /dev/pps0 &> log &

logファイルに次のような行があればたぶんOK

gpsd:RAW: PPS:/dev/pps0 using chrony socket: /var/run/chrony.pps0.sock

あとはchronyc sourcesで確認。

210 Number of sources = 6
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
#- GPS                           0   4   377    23    +24ms[  +24ms] +/- 5831us
#* SOCK                          0   4   377    20   +552ns[ +864ns] +/-  136ns
^- y.ns.gin.ntt.net              2   6   377    19  +2757us[+2757us] +/-  149ms
^- x.ns.gin.ntt.net              2   6   377   148  -1219us[-1220us] +/-   85ms
^- 2409:11:53c0:200::2:123       2   6    35    15   +702us[ +702us] +/-   70ms
^- laika.paina.jp                2   6   377    19   -461us[ -461us] +/-   38ms

SOCKの前に*がついていればPPSで同期していると思う。

chrony & gps pps-gpio

NMEAをgpsd、ppsをpps-gpio(/dev/pps0)からもらう

# for gps and pps by pps-gpio
refclock SHM 0 refid GPS precision 1e-6 offset 0.401
refclock PPS /dev/pps0 lock GPS

細かい設定は次を参考に

GPSD Time Service HOWTO

chrony – Manual for version 2.3

あとはchronyc sourcesで確認。

210 Number of sources = 6
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
#- GPS                           0   4    17    15    +44ms[  +44ms] +/- 5767us
#* PPS1                          0   4    17    15    -43ns[ -437ns] +/-  124ns
^- ntp.gimasystem.jp             3   6    17    61   +735us[+1336us] +/-   22ms
^- 60-56-214-78f2.kns1.eonet     1   6    17    62   -380us[ +221us] +/-   26ms
^- jp.linode.oxoox.me            2   6    17    62   -290us[ +311us] +/-   66ms
^- timpany.srv.jre655.com        2   6    17    62  +1253us[+1854us] +/-   23ms

PPS1の前に*がついていればPPSで同期していると思う。

chrony & gps 共有メモリ

gpsdからNMEAとPPSを共有メモリ経由でもらう

# for gps and pps by gpsd
refclock SHM 0 refid GPS precision 1e-6 offset 0.401
refclock SHM 2 refid PPS precision 1e-9 

一行目がNMEA用、precisionはよくわからないがとりあえず[ GPSD Time Service HOWTOを参考にした。 offsetはntpdのtime1と同じでデータの延滞時刻だと思う。

2行目がpps用、SHMに続く数字を最初1にしていたが同期しないので悩んでいたがntpshmonを実行すると0と2が出ているので2にしてみると同期した。なぜ1が出ないかは不明。

$ sudo ntpshmon
ntpshmmon version 1
#      Name   Seen@                Clock                Real               L Prec
sample NTP0 1463872322.721478570 1463872322.411618612 1463872322.000000000 0  -1
sample NTP2 1463872322.721971951 1463872322.000001586 1463872322.000000000 0 -20
sample NTP2 1463872323.222498477 1463872323.000001995 1463872323.000000000 0 -20
sample NTP0 1463872323.408892176 1463872323.407990624 1463872323.000000000 0  -1

次のようにPPSに*が付けばOK

$ chronyc sources
210 Number of sources = 6
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
#- GPS                           0   4   377    15    +30ms[  +30ms] +/- 5442us
#* PPS1                          0   4   377    16   +146ns[ +217ns] +/-  129ns
^- 2001:620:0:fffc::123:47       2  10   377   972    -22ms[  -22ms] +/-  139ms
^- 2001:67c:440:824:91:236:2     2  10   377  1002    +13ms[  +13ms] +/-  132ms
^- stratum2-4.NTP.TechFak.Un     2  10   377   398    -26ms[  -26ms] +/-  144ms
^- ns2.wlg.telesmart.co.nz       2  10   377   993  +1379us[+1386us] +/-  148ms