I have a PCEngines APU2 that has 1PPS wired to the third NIC's SPD0 pin NIC is i210/i2110. Third NIC is enp3s0.
ch:~$ ls -1d /sys/class/ptp/ptp*/device/net/*
/sys/class/ptp/ptp0/device/net/enp1s0
/sys/class/ptp/ptp1/device/net/enp2s0
/sys/class/ptp/ptp2/device/net/enp3s0
ch:~$ grep . /sys/class/pps/pps*/name
/sys/class/pps/pps0/name:ptp0
/sys/class/pps/pps1/name:ptp1
/sys/class/pps/pps2/name:ptp2
/sys/class/pps/pps3/name:acm0
ch:~$
Relevant chrony.conf:
refclock SHM 0 refid NMEA precision 1e-3 poll 3 offset 100e-3 noselect
refclock PHC /dev/ptp2:extpps refid PPS width 100e-3 precision 1e-9 lock NMEA poll 0 trust
This works perfectly well with Debian Buster. ppstest shows pps is on /dev/pps2 and chrony tracks it beautifully.
Buster is chrony 3.4-4+deb10u1 and Linux 4.19.0
Same hardware and config on Debian Bullseye does not work -- chrony never sees 1PPS.
Bullseye is chrony 4.0-8 and Linux 5.10.0.
ch:~$ ls -1d /sys/class/ptp/ptp*/device/net/*
/sys/class/ptp/ptp0/device/net/enp1s0
/sys/class/ptp/ptp1/device/net/enp2s0
/sys/class/ptp/ptp2/device/net/enp3s0
ch:~$ grep . /sys/class/pps/pps*/name
/sys/class/pps/pps0/name:ptp0
/sys/class/pps/pps1/name:ptp1
/sys/class/pps/pps2/name:ptp2
/sys/class/pps/pps3/name:acm0
ch:~$
If I look for PPS, I find it on ptp0/pps0 with Bullseye.
ch:~$ echo -n 1 | sudo tee /sys/class/ptp/ptp0/pps_enable
1ch:~$
ch:~$ sudo ppstest /dev/pps0
trying PPS source "/dev/pps0"
found PPS source "/dev/pps0"
ok, found 1 source(s), now start fetching data...
source 0 - assert 1636759620.959686006, sequence: 7189 - clear 0.000000000, sequence: 0
source 0 - assert 1636759621.959655086, sequence: 7190 - clear 0.000000000, sequence: 0
^C
It is not found anywhere else.
If tried telling chrony to /dev/ptp0 instead of /dev/ptp2, but it does NOT find the PPS.
-- Christopher.