Existe uma maneira de desativar o Precision Time Protocol (PTP) no Intel I211 Gigabit com driver igb?

Existe uma maneira de desativar o Precision Time Protocol (PTP) no Intel I211 Gigabit com driver igb?

Eu tenho uma placa-mãe ASUS Pro WS X570-ACE, com AMD Ryzen 5700G, com Ethernet Intel I211 integrada, rodando driver igb ver. 5.11.0-27. Ele também possui Ethernet integrada Realtek, mas está desabilitada no BIOS. O sistema operacional é Linux Mint 20.2 executando kernel 5.11.0-27-genérico.

Sempre que o sistema operacional é inicializado, o seguinte é mostrado na saída '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

E 2 dispositivos aparecem: /dev/pps0 e /dev/ptp0

Eu sei que é a porta Intel I211 que está fazendo isso porque se eu rodar ethtool -T enp5s0no adaptador, ele diz:

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)

Isso PTP Hardware Clock: 0 significa que isso cria o /dev/ptp0 e, portanto, /dev/pps0. Aqui está uma lista de dispositivos relevantes em /dev/:

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

A razão pela qual este PTP é um problema para mim é porque eu uso um receptor GPS para definir a hora.

Eu tenho um receptor GPS conectado através do conector COM/Serial DB9 integrado, que uso para definir a hora no computador com precisão de microssegundos usando o Pulse Per Second (PPS) entrando no Pino 1 pela serial. GPSD e CHRONY cuidam do resto... mas o problema é que GPSD cria seu dispositivo PPS em /dev/pps1, em vez de /dev/pps0 devido ao PTP. O GPSD normalmente espera que sua fonte PPS seja /dev/pps0. O GPSD funciona se eu especificar na linha de comando para me referir a /dev/pps1 como a fonte PPS... mas leva mais alguns minutos para bloquear e sincronizar em comparação com um computador que não possui nenhum 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

Eu olhei o manual do Ethtool e o guia de construção do driver Intel IGB, mas não há nenhum parâmetro que possa ser definido para desligar o HARDWARE_TIMESTAMPS. Ethtool possui apenas a opção -T, que mostra a capacidade de carimbo de data / hora ... mas nenhuma opção real que você possa definir via ethtool -T/-t.

Pergunta: Existe uma maneira de desabilitar completamente este sistema PTP?

Responder1

O código para suportar HC em algumas placas Intel foi adicionado por volta de 2011. OControlador Ethernet Intel® I211-ATsuporta sincronização de tempo de precisão baseada em hardware. Ele está habilitado porque os desenvolvedores do módulo pensam nisso da seguinte maneira: (fonte)

Se um MAC tiver recursos PTP, os usuários certamente desejarão ativá-lo.

Mais curto: sua conclusão está correta. Ainda assim, você pode fazer várias coisas:

  • Entre em contato com os desenvolvedores do módulo e mostre seu caso de uso. Convença-os de que há bons motivos para desativar uma funcionalidade, mesmo que ela seja geralmente considerada desejada e ativada por padrão.
  • Recompile o módulo com o HC removido.
  • Tente usar a NIC Realtek.
  • Tente configurar o gpsd para ignorar dispositivos como /dev/pps0ou /dev/ptp0- de acordo com odocumentaçãoisso deveria ser possível:

Para informar ao daemon que um dispositivo foi desconectado e não está mais disponível, envie um sinal de menos ('-') seguido do nome do dispositivo seguido de LF ou CR-LF. Assim, para remover /dev/foo da lista de pesquisa, envie "-/dev/foo\n".

Isso também deve funcionar de forma automatizada, modificando os arquivos em /etc/gpsd/device-hook.

informação relacionada