NTP server using GPS NMEA-0183

私はGPSによる測位が大好きでして,遠出やスキーのときにはGPSレシーバを片手にトラッキングしていますが,そんな私が昔からやってみたかったことがあります.それは,GPSを用いたNTPサーバの構築です.
いい加減使わないGPSレシーバが増えてきましたので,まずは構築してみましょう.

道具

  • Linux PC (Vine 4.1CR)
  • IO-Data CFGPS2 と GlobalSat BC-337

CFGPS2 も BC-337 も NMEA-0183 フォーマットを出力可能な GPS レシーバですが, BC-337 の方が格段に性能がよいです.

手順

  1. GPS レシーバを Linux PC に挿入.ttyS1 と認識された.
  2. # ln -s /dev/ttyS1 /dev/gps1
  3. ntp.conf を下記の通りとした.

server 127.127.20.1 prefer
fudge 127.127.20.1 flag3 1 time1 1.747529 refid GPS
restrict 0.0.0.0 mask 0.0.0.0 ignore
restrict 127.0.0.0 mask 255.0.0.0

127.127.20.1 が /dev/gps1 に対応しています.
fudge の 1.747529 は CFGPS2 の場合,これくらいディレイが生じているようなので,その補正値として記述しました.
BC-337でもちゃんと動きました.

精度はよくない

ぶっちゃけ PPS とか使ってないので精度はわるいです.
しかも通常運用では CFGPS2 を使うためますます精度はわるいです.GGA とか眺めてみても緯度経度とれてないことが多いですし.
とはいえ,誤差は±1秒程度ですので,私はあまり気にしません.