有沒有辦法在 Intel I211 Gigabit w/igb 驅動程序上禁用精確時間協議 (PTP)?
我有一塊 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
.