¿Hay alguna forma de desactivar el protocolo de tiempo de precisión (PTP) en el controlador Intel I211 Gigabit con igb?

¿Hay alguna forma de desactivar el protocolo de tiempo de precisión (PTP) en el controlador Intel I211 Gigabit con igb?

Tengo una placa base ASUS Pro WS X570-ACE, con AMD Ryzen 5700G, con Intel I211 Ethernet integrado, ejecutando el controlador igb ver. 5.11.0-27. Esto también tiene una Ethernet integrada Realtek, pero está deshabilitada en BIOS. El sistema operativo es Linux Mint 20.2 con el kernel 5.11.0-27-generic.

Cada vez que se inicia el sistema operativo, se muestra lo siguiente en la salida '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

Y aparecen 2 dispositivos: /dev/pps0 y /dev/ptp0

Sé que es el puerto Intel I211 el que hace esto porque si ejecuto ethtool -T enp5s0el adaptador, dice:

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)

Esto PTP Hardware Clock: 0 significa que esto crea el archivo /dev/ptp0 y por lo tanto /dev/pps0. Aquí hay una lista de dispositivos relevantes en /dev/:

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

La razón por la cual este PTP es un problema para mí es porque uso un receptor GPS para configurar la hora.

Tengo un receptor GPS conectado a través del conector COM/Serial DB9 integrado, que uso para configurar la hora en la computadora con una precisión de microsegundos usando el pulso por segundo (PPS) que ingresa al Pin 1 a través del serial. GPSD y CHRONY se encargan del resto... pero el problema es que GPSD crea su dispositivo PPS en /dev/pps1, en lugar de /dev/pps0 debido al PTP. GPSD normalmente espera que su fuente PPS sea /dev/pps0. GPSD funciona si especifico en la línea de comando hacer referencia a /dev/pps1 como fuente de PPS... pero tarda varios minutos más en bloquearse y sincronizarse en comparación con una computadora que no tiene ningún 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

Miré el manual de Ethtool y la guía de compilación del controlador Intel IGB, pero no hay ningún parámetro que pueda configurarse para desactivar HARDWARE_TIMESTAMPS. Ethtool solo tiene el modificador -T, que muestra la capacidad de marca de tiempo... pero no hay opciones reales que pueda configurar a través de ethtool -T/-t.

Pregunta: ¿Hay alguna manera de desactivar completamente este sistema PTP?

Respuesta1

El código para admitir HC en algunas tarjetas Intel se agregó alrededor de 2011.Controlador Ethernet Intel® I211-ATadmite sincronización horaria de precisión basada en hardware. Está habilitado porque los desarrolladores del módulo lo ven de la siguiente manera: (fuente)

Si una MAC tiene funciones PTP, los usuarios seguramente querrán habilitarlas.

Más breve: su conclusión es correcta. Aún así, puedes hacer varias cosas:

  • Póngase en contacto con los desarrolladores del módulo y muestre su caso de uso. Convéncelos de que existen buenas razones para desactivar una funcionalidad incluso si generalmente se considera deseada y está activada de forma predeterminada.
  • Vuelva a compilar el módulo sin el HC.
  • Intente utilizar la NIC Realtek en su lugar.
  • Intente configurar gpsd para ignorar los dispositivos como /dev/pps0o /dev/ptp0, según eldocumentaciónEsto debería ser posible:

Para decirle al demonio que un dispositivo ha sido desconectado y ya no está disponible, envíe un signo menos ('-') seguido del nombre del dispositivo seguido de LF o CR-LF. Por lo tanto, para eliminar /dev/foo de la lista de búsqueda, envíe "-/dev/foo\n".

Esto también debería funcionar de forma automática, modificando los archivos en /etc/gpsd/device-hook.

información relacionada