文書一覧に戻る | TS-GPS01 | AE-GYSFDMAXB


ntpd で、秋月電子通商の AE-GYSFDMAXB の1秒パルス信号 ( PPS ) を参照する

  1. ハードウェアと結線
  2. ntpd の設定
  3. デバイスの準備
  4. その他

1. ハードウェアと結線

GPS受信キット AE-GYSFDMAXB の NMEA データと PPS 信号を、レベル変換して RS-232C の RXD と DCD に出力させます。
RS-232Cレベル変換基板 AE-ADM3202 の CN1 の5番へ5V定電圧を供給しますので、基盤上の JP1 は短絡します。
下記の図の D-Sub9 のコネクターと、サーバーのシリアル・ポート D-Sub9 は、ストレート・ケーブルで接続します。

Circuit diagram

主な部品は、秋月電子通商で販売している以下のものです。
価格は、2020年1月時点です。価格改定されるかもしれませんので、ご自身でお調べ下さい。

部品通販コード単価数量
AE-GYSFDMAXBGPS受信機キット 1PPS出力付きK-099912,100円1
AE-ADM32023V・3.3V・5V系-RS232レベル変換基板K-06464500円2

2. ntpd の設定

ntp.conf は、以下のように設定します。
GPS NMEA ドライバー ( Type 20 ) も、PPS 信号を参照することができますが、
ここでは、PPS ドライバー ( Type 22 ) を併用しています。

# GPS NMEA ( AE-GYSFDMAXB )
server 127.127.20.0 mode 16 prefer
fudge  127.127.20.0 time2 0.125

# PPS
server 127.127.22.0 minpoll 4 maxpoll 4
fudge  127.127.22.0 time1 0.0 flag2 0

fudge の time2 と time1 は、正しいと想定される時刻ソースと比較しながら適宜調整します。
GPSモジュール AE-GYSFDMAXB は、デフォルトの設定で使用していますが、NMEAセンテンスの出力対象を $GPRMC または $GPZDA のいずれかだけに設定変更すれば、時刻取得時のゆらぎを小さくすることができます。


3. デバイスの準備

ntpd を起動する前に、デバイスを準備します。
デバイスの番号(下記の ttyS0 のゼロの部分)は、利用する環境に合わせます。

# GPS NMEA ( AE-GYSFDMAXB )
ln -s /dev/ttyS0 /dev/gps0

# PPS
/sbin/modprobe 8250
/sbin/setserial /dev/ttyS0 low_latency
/usr/sbin/ldattach PPS /dev/ttyS0

ldattach を実行すると、/dev/pps0 が生成されます。
先に /dev/pps0 のシンボリック・リンクを作成すると、ldattach が /dev/pps0 を生成できないため動作しません。


A. その他

Linuxのディストリビューションによるかもしれませんが、Linuxのカーネルの再構築しなくても動作します。
上記のデバイスの準備の後、/sys/class/pps/pps0 が生成されていることで確認できます。
Linuxのカーネルの再構築なしに動作したLinuxのディストリビューションのレポートを email または email 宛てにお送りいただければ、ここで紹介/掲載します。

ntpq -p

ntp.conf で 127.127.22.0 を指定しているにもかかわらず、ntpq -p で照会したときに PPS のリファレンス・クロックがないときは、ntpd で Type 22 のリファレンス・クロック・ドライバーが有効になっていない可能性があります。
ntpd をコンパイルし直す必要があります。その際、timepps.h がないと Type 22 のクロック・ドライバーは有効になりません。
find /usr/include -name timepps.h で、timepps.h が見つからないときは、github から入手できます。


最終更新日:2020/01/13 Another HTML-lint W3C Validation LogCounter
Copyright(C) 2020, Takao Abe