Using GPS time server from xntpd on FreeBSD
(To English Version)
GPS 受信機によって時刻合わせをする NTP time server が,FreeBSD
(2.2 系および 3.0)上で動くようになりました.これにより,FreeBSD
上において時刻をミリ秒以上の精度 (数10マイクロ秒〜数100マイクロ
秒) で維持することができます.
構成
- OS --- FreeBSD
Version 2.2.8-STABLE, 3.*-STABLE
- NTP server --- xntpd version 3.4e (FreeBSDに付属しているもの)
(注) 1999/12/16 以降の 4.0-CURRENT では ntpd (Version 4) が使用され
ていますので,この patch は当たりません.
- GPS 受信機 --- 古野電気製
TS-800 および
TS-820
xntpd に対するパッチ
インストールの方法
- /usr/src/usr.sbin/xntpd 以下のソースを FreeBSD の distribution
から開きます.
- 上の Makefile.inc へのパッチと refclock_nmea.c へのパッチを当て
ます.
- /usr/src/usr.sbin/xntpd で make; make install します.
- 上の ntp.conf を /etc に置きます.
ここで,ntp.conf に書いてある 'server 127.127.20.1' とい
う行は,このサーバが GPS を使用する事を示す数字であり,
install される machine の IP address ではありませんので,
変更しないでください.
- /dev ディレクトリで gps1 というファイルを作成してください.
たとえば,GPS受信機が com1 につながっている場合には,
cd /dev; ln -s cuaa0 gps1 とします.
- /etc/sysconfig もしくは /etc/rc.conf の xntpdflags="NO" という行を
xntpdflags="-c /etc/ntp.conf" のように書きかえます.
- reboot するか,/usr/sbin/xntpd -c /etc/ntp.conf とやって
xntpd を起動してください.
Note---うまく時刻の設定ができない場合
- まず,/etc/remote の最後の行に,
gps:dv=/dev/cuaa0:br#4800
のような行を追加して,
tip gps
とやってみてください.ちゃんと接続されている場合には,gps 受信機
から届く文字列が見えると思います.
- shell prompt に対して 'ntpq -c rl' と打ち込むと,xntpd に
関する情報が出力されます.'reftime='で始まる行が,GPS か
ら読み取っている時刻,'clock='で始まる行が,現在の計算機
の時刻です.
古野電気製以外の GPS receiver について
当方では,古野電気製TS-800およびTS-820についてのみ動作を確認して
いますが,それ以外の機種でも
- 1PPS が CD (Carrier Detect) line に来ている(FreeBSD の
kernel にこの機能が含まれており,TIOCDCDTIMESTAMP という ioctl
で使用することができます)
- GPS receiver からの情報がtext formatで,時刻がsscanfで簡単
に取り出せる
場合には,若干の変更で動くと思います.
Links
Special Thanks To
以下の方々に情報を頂きました.有難うございます.
古野電気 足穂豊様
東京大学 下川英敏様
富士ゼロックス(株)システム実験研究所 前田正浩様
There was ????? accesses
from Apr. 16, 1997.
This page is maintained by Mitsuharu Arimura (
arimura@jp.FreeBSD.ORG)
$Id: index-j.html,v 1.5 2000/02/01 12:56:25 arimura Exp $