%EB%A5%BC%20%EB%B9%84%ED%99%9C%EC%84%B1%ED%99%94%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%B4%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
AMD Ryzen 5700G, 온보드 Intel I211 이더넷, 드라이버 igb ver.을 실행하는 ASUS Pro WS X570-ACE 마더보드가 있습니다. 5.11.0-27. 여기에는 Realtek 온보드 이더넷도 있지만 BIOS에서는 비활성화되어 있습니다. OS는 커널 5.11.0-27-generic을 실행하는 Linux Mint 20.2입니다.
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
이 작업을 수행하는 것이 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 수신기를 사용하여 시간을 설정하기 때문이다.
온보드 COM/직렬 DB9 커넥터를 통해 연결된 GPS 수신기가 있는데, 직렬을 통해 핀 1로 들어오는 PPS(Pulse Per Second)를 사용하여 컴퓨터의 시간을 마이크로초 정밀도로 설정하는 데 사용합니다. 나머지는 GPSD와 CHRONY가 처리합니다. 하지만 문제는 GPSD가 PTP로 인해 /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
다음/dev/ptp0
에 따라 장치를 무시하도록 gpsd를 구성해 보십시오.선적 서류 비치가능해야합니다 :
장치의 연결이 끊어져 더 이상 사용할 수 없음을 데몬에게 알리려면 빼기 기호('-'), 장치 이름, LF 또는 CR-LF를 차례로 보냅니다. 따라서 검색 목록에서 /dev/foo를 제거하려면 "-/dev/foo\n"을 보냅니다.
또한 아래의 파일을 수정하여 자동으로 작동해야 합니다 /etc/gpsd/device-hook
.