超精密Raspberry PI Stratum 1 NTPサーバー

この記事では、Raspberry PI上にStratum 1 NTPサーバーを構築して時間を適度に同期させ、すべてのデバイスの時間の不一致に関連する問題を永遠に忘れる方法を説明します。そして最も重要なのは、通常のサーバーよりも2桁正確な結果が得られることです。無線とSRNS(無線航法通信システム)による時刻同期を取り上げ



前回の記事では、PPS出力を備えたGPS / GLONASS受信機の選択について話す時間はありませんでした。一方、信号受信の精度はこれに依存し、値は1ミリ秒から数マイクロ秒になり、多くの場合これは決定的に重要です。



最も正確な時報受信のためには、PPS出力を備えたGPS / GLONASSレシーバーが必要です。ただし、ロシア市場では、このような特性を備えたデバイスを手頃な価格で入手するのは容易ではありません。そのようなモデルの多くは長い間製造が中止されており、1990年代にレイアウトされた廃れたオンラインストアでは、商品の到着時に通知をサブスクライブするという申し出とともに、説明のみが残りました。





テストしたGPS機器の完全なリストができ GitLab NTPSecリソースに。リストに表示されている少数のデバイスが3〜4の星とPPSオプションでマークされていることに気づくことは難しくありません。したがって、以下の受信者が候補としてリストされます。



  • USBではなくGarmin GPS-18 ***(概算価格1万ルーブル)
  • GlobalSat MR-350P ****
  • Jackson Labs FireFly-II ***
  • マゼランタレスAC12 ***
  • Motorola Oncore GT + ***
  • Navisys GR601-W ****
  • SkyTraq SKG16B ****
  • Trimble Lassen IQ ***
  • u-blox ANTARIS LEA-4T ***
  • u-blox EVK 6H ****
  • u-blox LEA SQ ****


4 *優れたパフォーマンス:GPSdは受信機を迅速かつ確実に認識し、レポートは完全かつ正確に生成されます。



3 *良好なパフォーマンス:gpsdは、軽微な問題または遅延のあるデバイスを認識しますが、レポートは完全かつ適切に生成されます。



これらのモデルの価格に不安があり、腺をいじくり回したいという大きな欲求もない場合は、これ以上読むことはできません。USBまたはRS232インターフェースを介してサーバーに接続された受信機は、tcp / ipを使用するNTPサーバーよりもはるかに正確な時間を決定します。しかし、侍のやり方があなたにとって異質でない場合は、GPS時間同期を使用してRaspberry PI NTPサーバーを構築しましょう。



Raspberry PIをまとめる



だから:私たちは、マイクロサーバーのために次のコンポーネントを取ります。



  1. Raspberry Pi 4モデルBボード、4 GiB RAM(6200ルーブル);
  2. ケース、例えばこれ(890ルーブル);
  3. 32 GiB、16 GiBのマイクロSDカードが可能です。(540摩擦。)
  4. u-blox NEO-M8チップ(アンテナ付き1700ルーブル)に基づくGPSモジュール。
  5. 15 dBのGPSアンテナ。
  6. はんだごて。


実際、u-blox NEO-M8にはUARTインターフェースが装備されていますが、PPS出力の場合、GPSモジュールのピン3をRaspberri Piボードの対応するGPIOコネクタにはんだ付けする必要があります。スイスの会社のモジュールは専門家の間で人気を得ており、これは偶然ではありません。特徴が物語っています。



  • サポートされているSRNS:BeiDou、Galileo、GNSS。GPS / QZSS、GLONASS;
  • 供給電圧:2.7 ... 3.6 V;
  • インターフェース:UART、USB、SPI、DDC、I2C;
  • サポートされるプロトコル:NMEA 0.183バージョン4.0、UBX(バイナリ)、RTCM 2.3;
  • 検出感度:-167 dBm;
  • トラッキング感度:-160 dBm;
  • コールドスタート時間:26秒。
  • ホットスタート時間:1.5秒。
  • 消費電力:35 mW;
  • 動作温度:-40 ... + 85°;
  • 寸法:16x12.2x2.4 mm


最新の設備を備えたこの構成では、組み立てられたRaspberry PIのおおよその合計価格は9330ルーブルになります。Raspberry PI 3、または2 GiB RAM搭載の4を購入すると、費用を節約できます。それでもGPSチップ、アンテナ付きのu-blox NEO-6Mを約650ルーブルで節約できます。その後、NTPサーバーの価格は5500ルーブルに下がります。





GPS / GlonassモジュールUBLOX NEO 8M



問題が発生する可能性があります。なぜこれらすべての投資が必要であり、これまたはその時刻同期の方法によってどのような精度が提供されるのでしょうか。参考のために小さな要約プレート。

時報ソース エラー
原子時計付きGPS ±50ナノ秒
KPPS ±1μSec
PPS ±5μSec
USB 1.1インターフェイス ±1ミリ秒
USB 2.0インターフェイス ±100μSec(100000 nSec)
ネットワーク上のNTP 〜±30ミリ秒


カーネルPPS(KPPS)は、PPS行の状態変化に正確にタイムスタンプを付けるためにLinux / Unixカーネル関数を使用する点でPPSとは異なります。通常のPPSはユーザー空間に実装されます。LinuxカーネルがAPI RFC 2783を通じてKPPSをサポートしている場合、gpsdはそれを使用して精度を向上させます。



多くのLinuxディストリビューションには、KPPSサポートを提供し、timepps.hヘッダーファイルをインストールするpps-toolsパッケージがあります。必ずこのパッケージをインストールしてください。



(1:1146)$ sudo emerge -av pps-tools

Local copy of remote index is up-to-date and will be used.
These are the packages that would be merged, in order:

Calculating dependencies... done!
[binary   R    ] net-misc/pps-tools-0.0.20120407::gentoo  0 KiB

Total: 1 package (1 reinstall, 1 binary), Size of downloads: 0 KiB
Would you like to merge these packages? [Yes/No] 


したがって、USBを介してPPS出力を備えたGPS受信機を接続することにより、時刻同期の精度が300倍向上します。KPPSモードでボード上のGPSチップから読み取ると、精度がさらに2桁向上します。



正直に言って-私たち全員がはんだごての使い方を知っているわけではなく、誰もがこのツールを定期的に使用しているわけではありません。この場合、はんだ付け接点を必要としないGPSモジュールを探すことは理にかなっています。





Raspberry Pi GPS / RTC拡張ボード



そのようなボードはほとんどなく、高価です。価格の違いは、はんだごての購入と人件費によって完全に補償されます。



OSインストール



Raspberry PI OSもあります。 ka Raspbian。リンクをクリックして、最新バージョンをダウンロードしてインストールできます。多くの人がこれを行いますが、Raspberry PI 4は64ビットのオペレーティングシステムをサポートしているのに対し、Raspberry PI OSはArmアーキテクチャ用に32ビットのDebian Linuxの変更のみを行っていることを思い出してください。



Raspberry PI 4の64ビットOSでは、アーキテクチャとアセンブリの機能によりパフォーマンスを向上させる方法がないため、正当化されないという見方があります。この視点は、私には疑わしいと思われる、彼らはすでにしている書かれた本についてHabréに- 64ビットのOSは高速です



ありのDebianのLinuxのポート arm64アーキテクチャのための、しかし、分布は、Ubuntu for Raspberry PIには明確なページと説明があります。このページでは、64ビットOSを選択することをお勧めします。







インストールインベントリ:



  • Raspberry Pi 4;
  • Pi 4用USB-C電源ケーブル。
  • Ubuntuインストールイメージを含むマイクロSDカード。
  • HDMI出力付きモニター;
  • MicroHDMIケーブル;
  • USBキーボード。


次のステップは、インストールイメージをマイクロSDカードに書き込むことです。これらの目的のための特別なユーティリティとプログラムが手元にない場合、最も単純なケースではそれで十分です。



sudo dd if=/path/to/ubuntu-core-arm64.iso of=/dev/mmcblk0 status=progress


新しいデバイスが検出されると、デバイスの正確な名前がdmesg出力に表示されます。



PM: Adding info for No Bus:179:0
device: 'mmcblk0': device_add
PM: Adding info for No Bus:mmcblk0


マイクロSDカードを挿入し、HDMIモニター、USBキーボード、電源ケーブルを接続して、Raspberry Pi上のUbuntuサーバーを起動します。デフォルトのユーザー名とパスワードはubuntuです。



NTPサーバーのセットアップ



  1. Raspberry PI (headless), IP . .



    (1:1151)$ arp -na | grep -i "dc:a6:32"


    Pi HDMI USB , 1-2 .
  2. ssh



    (1:1152)$ ssh ubuntu@<Raspberry Pi’s IP address>
  3. .



    user@server ~$ sudo apt-get install aptitude
    user@server ~$ sudo aptitude install wpasupplicant gpsd chrony
  4. Wi-Fi wpasupplicant.
  5. Linux UART0 Pi /dev/ttyAMA0. UART0 GPS Linux. console=ttyAMA0,115200, console=tty1. /etc/default/grub GRUB_CMDLINE_LINUX_DEFAULT. , /boot/config.txt, .



    Raspberry Pi 4 6 UART-

    UART0 PLO11 /dev/ttyAMA0 (Bluetooth)
    UART1 mini UART /dev/ttyS0
    UART2 PLO11
    UART3 PLO11
    UART4 PLO11
    UART4 PLO11
    UART2-5 .



    , UART0 — , UART1, mini UART. Bluetooth UART1 , UART0. /etc/default/grub, /boot/config.txt enable_uart=1.
  6. /etc/defaults/gpsd .



    DEVICES="/dev/ttyAMA0 /dev/pps0"
    GPSD_OPTIONS="-n"
    USBAUTO="false"
  7. , gpsd.



    user@server ~$ sudo /etc/init.d/gpsd start
    user@server ~$ sudo /etc/init.d/gpsd restart
  8. GPS.



    user@server ~$ cat /dev/ttyAMA0
    user@server ~$ cgps -s
    user@server ~$ ppstest /dev/pps0
  9. /etc/ntp.conf.



    , Stratum 1, 2 NTP (, pool [0-9].subdomain.pool.ntp.org) , GPS/PPS .



    # GPS Serial data reference (NTP0)
    server 127.127.28.0 minpoll 4
    fudge 127.127.28.0 flag1 1 time1 0.9999 refid GPS #flag1 - PPS on


    # GPS PPS reference (NTP1)
    server 127.127.22.0 minpoll 4
    fudge 127.127.22.0 flag3 1 refid PPS #flag3 - enable KPPS API


    NTP0 , GPS. NTP1 PPS .
  10. ntpd



    user@server ~$ sudo /etc/init.d/ntpd restart









All Articles