%20%E3%82%92%E7%84%A1%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%E3%81%AF%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%81%8B%3F.png)
私は ASUS Pro WS X570-ACE マザーボードを使用しています。AMD Ryzen 5700G、オンボード Intel I211 イーサネットを搭載し、igb ドライバー バージョン 5.11.0-27 を実行しています。このマザーボードには Realtek オンボード イーサネットも搭載されていますが、BIOS で無効になっています。OS は Linux Mint 20.2 で、カーネル 5.11.0-27-generic を実行しています。
OS が起動するたびに、'dmesg' 出力に次の内容が表示されます。
pps_core: LinuxPPS API ver. 1 registered
pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <[email protected]>
pps pps0: new PPS source ptp0
pps_ldisc: PPS line discipline registered
2つのデバイスが表示されます: /dev/pps0 と /dev/ptp0
ethtool -T enp5s0
アダプタ上で実行すると次のように表示されるため、これが Intel I211 ポートで発生していることはわかっています。
Time stamping parameters for enp5s0:
Capabilities:
hardware-transmit (SOF_TIMESTAMPING_TX_HARDWARE)
software-transmit (SOF_TIMESTAMPING_TX_SOFTWARE)
hardware-receive (SOF_TIMESTAMPING_RX_HARDWARE)
software-receive (SOF_TIMESTAMPING_RX_SOFTWARE)
software-system-clock (SOF_TIMESTAMPING_SOFTWARE)
hardware-raw-clock (SOF_TIMESTAMPING_RAW_HARDWARE)
PTP Hardware Clock: 0
Hardware Transmit Timestamp Modes:
off (HWTSTAMP_TX_OFF)
on (HWTSTAMP_TX_ON)
Hardware Receive Filter Modes:
none (HWTSTAMP_FILTER_NONE)
all (HWTSTAMP_FILTER_ALL)
これは /dev/ptp0 と /dev/pps0 を作成することPTP Hardware Clock: 0
を意味します。以下は /dev/ 内の関連デバイスのリストです。
/dev/port /dev/ppp /dev/pps0 /dev/pps1 /dev/psaux /dev/ptmx /dev/ptp0 /dev/ptp1 /dev/ptp2
この PTP が私にとって問題となる理由は、時間を設定するために GPS 受信機を使用しているためです。
オンボード COM/シリアル DB9 コネクタ経由で接続された GPS 受信機があり、シリアル経由でピン 1 に入力されるパルス/秒 (PPS) を使用して、コンピュータの時間をマイクロ秒の精度で設定するために使用しています。残りは GPSD と CHRONY が処理しますが、問題は、PTP が原因で、GPSD が /dev/pps0 ではなく /dev/pps1 に PPS デバイスを作成することです。GPSD は通常、PPS ソースが /dev/pps0 であると想定しています。コマンド ラインで /dev/pps1 を PPS ソースとして参照するように指定すると、GPSD は機能しますが、PTP がまったくないコンピュータと比べて、ロックと同期に数分余分に時間がかかります...
pps_core: LinuxPPS API ver. 1 registered
pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <[email protected]>
pps pps0: new PPS source ptp0
pps_ldisc: PPS line discipline registered
pps pps1: new PPS source serial0
pps pps1: source "/dev/ttyS0" added
Ethtool マニュアルと Intel IGB ドライバー ビルド ガイドを確認しましたが、HARDWARE_TIMESTAMPS をオフにするために設定できるパラメーターはありません。Ethtool には、タイムスタンプ機能を示す -T スイッチのみがあり、ethtool -T/-t で設定できる実際のオプションはありません。
質問: この PTP システムを完全に無効にする方法はありますか?
答え1
一部のインテルカードでHCをサポートするコードは2011年頃に追加されました。インテル® イーサネット コントローラー I211-ATハードウェアベースの高精度な時間同期をサポートします。これは、モジュール開発者が次のように考えているために有効になっています:(ソース)
MAC に PTP 機能がある場合、ユーザーはそれを有効にしたいと考えるはずです。
簡潔に言うと、あなたの結論は正しいです。それでも、できることはいくつかあります。
- モジュール開発者に連絡して、ユースケースを示します。一般的には必要と考えられており、デフォルトでオンになっている機能であっても、無効にする正当な理由があることを開発者に納得させます。
- HC を削除してモジュールを再コンパイルします。
- 代わりに Realtek NIC を使用してみてください。
/dev/pps0
gpsdを次の/dev/ptp0
ようにデバイスを無視するように設定してみてください。ドキュメンテーション可能であるはずです:
デバイスが切断され、使用できなくなったことをデーモンに通知するには、マイナス記号 ('-') に続けてデバイス名を送信し、その後に LF または CR-LF を送信します。したがって、検索リストから /dev/foo を削除するには、"-/dev/foo\n" を送信します。
下のファイルを変更することで、これも自動的に動作するはずです/etc/gpsd/device-hook
。