%20%D0%BD%D0%B0%20%D0%B4%D1%80%D0%B0%D0%B9%D0%B2%D0%B5%D1%80%D0%B5%20Intel%20I211%20Gigabit%20w%2Figb%3F.png)
У меня материнская плата ASUS Pro WS X570-ACE с AMD Ryzen 5700G, с встроенным Intel I211 Ethernet, работающим на драйвере igb ver. 5.11.0-27. У нее также есть встроенный Ethernet Realtek, но он отключен в BIOS. Операционная система — Linux Mint 20.2 с ядром 5.11.0-27-generic.
При каждой загрузке ОС в выводе «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
Я знаю, что это порт Intel 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-приемник для установки времени.
У меня есть GPS-приемник, подключенный через встроенный разъем COM/Serial DB9, который я использую для установки времени на компьютере с точностью до микросекунды с помощью импульса в секунду (PPS), поступающего на контакт 1 по последовательному порту. GPSD и CHRONY заботятся об остальном... но проблема в том, что GPSD создает свое устройство PPS на /dev/pps1, а не на /dev/pps0 из-за PTP. GPSD обычно ожидает, что его источником PPS будет /dev/pps0. GPSD работает, если я указываю в командной строке ссылку на /dev/pps1 как на источник PPS... но для блокировки и синхронизации требуется на несколько минут больше по сравнению с компьютером, на котором вообще нет 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 на некоторых картах Intel был добавлен примерно в 2011 году.Контроллер Intel® Ethernet I211-ATподдерживает аппаратную точную синхронизацию времени. Она включена, поскольку разработчики модуля думают о ней следующим образом: (источник)
Если на MAC есть функции PTP, то пользователи наверняка захотят их включить.
Короче: Ваш вывод верный. Тем не менее, вы можете сделать несколько вещей:
- Свяжитесь с разработчиками модуля и покажите свой вариант использования. Убедите их, что есть веские причины отключить функционал, даже если он обычно считается желаемым и включенным по умолчанию.
- Перекомпилируйте модуль, удалив HC.
- Попробуйте вместо этого использовать сетевую карту Realtek.
- Попробуйте настроить gpsd так, чтобы он игнорировал устройства как
/dev/pps0
или/dev/ptp0
- в соответствии сдокументациядолжно быть возможно:
Чтобы сообщить демону, что устройство отключено и больше недоступно, отправьте знак минуса ('-'), а затем имя устройства, за которым следует LF или CR-LF. Таким образом, чтобы удалить /dev/foo из списка поиска, отправьте "-/dev/foo\n".
Это также должно работать автоматически, путем изменения файлов в /etc/gpsd/device-hook
.