Linux

有沒有辦法在 Intel I211 Gigabit w/igb 驅動程序上禁用精確時間協議 (PTP)?

  • August 29, 2021

我有一塊 ASUS Pro WS X570-ACE 主機板,配備 AMD Ryzen 5700G,板載 Intel I211 乙太網,執行驅動程序 igb ver。5.11.0-27。這也有一個 Realtek 板載乙太網,但在 BIOS 中被禁用。作業系統是執行核心 5.11.0-27-generic 的 Linux Mint 20.2。

每當作業系統啟動時,“dmesg”輸出中都會顯示以下內容:

pps_core: LinuxPPS API ver. 1 registered
pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
pps pps0: new PPS source ptp0
pps_ldisc: PPS line discipline registered

出現 2 個設備:/dev/pps0 和 /dev/ptp0

我知道這是英特爾 I211 埠正在執行此操作,因為如果我ethtool -T enp5s0在適配器上執行,它會顯示:

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)

PTP Hardware Clock: 0 意味著這將創建 /dev/ptp0 和 /dev/pps0。以下是 /dev/ 中相關設備的列表:

/dev/port  /dev/ppp  /dev/pps0  /dev/pps1  /dev/psaux  /dev/ptmx  /dev/ptp0  /dev/ptp1  /dev/ptp2

這個 PTP 對我來說是個問題的原因是因為我使用 GPS 接收器來設置時間。

我有一個通過板載 COM/Serial DB9 連接器連接的 GPS 接收器,我使用它通過串列連接到引腳 1 上的每秒脈衝 (PPS) 將電腦上的時間設置為微秒精度。GPSD 和 CHRONY 負責其餘的工作……但問題是 GPSD 在 /dev/pps1 創建其 PPS 設備,而不是由於 PTP 而在 /dev/pps0 創建。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 <giometti@linux.it>
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 系統?

在 2011 年左右添加了一些英特爾卡上支持 HC 的程式碼。英特爾® 乙太網控制器 I211-AT支持基於硬體的精確時間同步。之所以啟用它,是因為模組開發人員以下列方式考慮它:(來源

如果 MAC 具有 PTP 功能,那麼使用者肯定希望啟用它。

Shorter:你的結論是正確的。不過,您可以做幾件事:

  • 聯繫模組開發人員並展示您的案例。說服他們有充分的理由禁用某個功能,即使它通常被認為是需要的並且預設情況下是打開的。
  • 移除 HC 後重新編譯模組。
  • 嘗試改用 Realtek NIC。
  • 嘗試將 gpsd 配置為忽略設備,/dev/pps0或者/dev/ptp0- 根據文件應該是可能的:

要告訴守護程序設備已斷開連接且不再可用,請發送一個減號 (’-’),後跟設備名稱,後跟 LF 或 CR-LF。因此,要從搜尋列表中刪除 /dev/foo,請發送“-/dev/foo\n”。

這也應該通過修改/etc/gpsd/device-hook.

引用自:https://serverfault.com/questions/1075960