usrp-users@lists.ettus.com

Discussion and technical support related to USRP, UHD, RFNoC

View all threads

E310 NTP PPS support on meta-ettus images

PD
Peacock, Daniel Jackson
Wed, Oct 13, 2021 10:18 PM

I'm trying to get NTP working with GPS on the E310. In the past, I've gotten it to work with the old release 4 images (UHD 3.9.2), but with latest meta-ettus images (UHD 4.1.0), only the serial GPS data is getting NTP (via SHM), and not the PPS data, so the accuracy isn't great.

The approach configured out of the box for release 4 has NTP connecting directly to the PPS device (using the server 127.127.22.0 alias). This approach doesn't work with the new images as there are no /dev/ppsX devices - in fact PPS support isn't even compiled into the kernel:

root@ni-e31x-3203241:~# zcat /proc/config.gz | grep -i PPS
# CONFIG_PPS is not set

Compare to release 4 image output:

root@ettus-e3xx-sg3:~# zcat /proc/config.gz | grep -i PPS
# PPS support
CONFIG_PPS=y
# CONFIG_PPS_DEBUG is not set
# PPS clients support
# CONFIG_PPS_CLIENT_KTIMER is not set
# CONFIG_PPS_CLIENT_LDISC is not set
CONFIG_PPS_CLIENT_GPIO=m
# PPS generators support

Last month a message on this list[1] suggested that the following ntp.conf (which uses GPSD SHM for both Serial and PPS data) should work:

# GPS Serial data reference
server 127.127.28.0 minpoll 4 maxpoll 4
fudge 127.127.28.0 time1 0.0 refid GPS

# GPS PPS reference
server 127.127.28.1 minpoll 4 maxpoll 4 prefer
fudge 127.127.28.1 refid PPS

Unfortunately, I haven't had success with that either. NTP is just getting serial GPS updates, not PPS:
root@ni-e31x-3203241:~# ~/install/usr/local/bin/ntpq -p
remote          refid      st t when poll reach  delay  offset  jitter


---============
*SHM(0)          .GPS.            0 l    7  16  377    0.000  -1.830  3.126
SHM(1)          .PPS.            0 l    -  16    0    0.000  +0.000  0.000

Starting gpsd with -D3 gives the following startup logs:

GPS: Activating GPS antenna supply voltage...
GPS: Activating GPS PPS...
gpsd:INFO: /etc/gpsd/device-hook returned 0
gpsd:INFO: SER: opening GPS data source type 2 at '/dev/ttyPS1'
gpsd:INFO: SER: speed 9600, 8N1
gpsd:INFO: SER: speed 9600, 8O1
gpsd:INFO: SER: speed 9600, 8N1
gpsd:INFO: SER: speed 9600, 8N1
gpsd:INFO: SER: speed 9600, 8N1
gpsd:INFO: gpsd_activate(2): activated GPS (fd 7)
gpsd:INFO: KPPS:/dev/ttyPS1 cannot set PPS line discipline unknown error
gpsd:WARN: KPPS:/dev/ttyPS1 kernel PPS unavailable, PPS accuracy will suffer
gpsd:INFO: PPS:/dev/ttyPS1 ntpshm_link_activate: 1
gpsd:INFO: device /dev/ttyPS1 activated

Does the new image use a different API to get the PPS data to gpsd/ntpd that I need to configure?

Thanks,
Jackson

[1] https://lists.ettus.com/empathy/thread/YRNSBGDFVCXJDLOVHFYWMDVC5F3QAK5J

I'm trying to get NTP working with GPS on the E310. In the past, I've gotten it to work with the old release 4 images (UHD 3.9.2), but with latest meta-ettus images (UHD 4.1.0), only the serial GPS data is getting NTP (via SHM), and not the PPS data, so the accuracy isn't great. The approach configured out of the box for release 4 has NTP connecting directly to the PPS device (using the server 127.127.22.0 alias). This approach doesn't work with the new images as there are no /dev/ppsX devices - in fact PPS support isn't even compiled into the kernel: root@ni-e31x-3203241:~# zcat /proc/config.gz | grep -i PPS # CONFIG_PPS is not set Compare to release 4 image output: root@ettus-e3xx-sg3:~# zcat /proc/config.gz | grep -i PPS # PPS support CONFIG_PPS=y # CONFIG_PPS_DEBUG is not set # PPS clients support # CONFIG_PPS_CLIENT_KTIMER is not set # CONFIG_PPS_CLIENT_LDISC is not set CONFIG_PPS_CLIENT_GPIO=m # PPS generators support Last month a message on this list[1] suggested that the following ntp.conf (which uses GPSD SHM for both Serial and PPS data) should work: # GPS Serial data reference server 127.127.28.0 minpoll 4 maxpoll 4 fudge 127.127.28.0 time1 0.0 refid GPS # GPS PPS reference server 127.127.28.1 minpoll 4 maxpoll 4 prefer fudge 127.127.28.1 refid PPS Unfortunately, I haven't had success with that either. NTP is just getting serial GPS updates, not PPS: root@ni-e31x-3203241:~# ~/install/usr/local/bin/ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== *SHM(0) .GPS. 0 l 7 16 377 0.000 -1.830 3.126 SHM(1) .PPS. 0 l - 16 0 0.000 +0.000 0.000 Starting gpsd with -D3 gives the following startup logs: GPS: Activating GPS antenna supply voltage... GPS: Activating GPS PPS... gpsd:INFO: /etc/gpsd/device-hook returned 0 gpsd:INFO: SER: opening GPS data source type 2 at '/dev/ttyPS1' gpsd:INFO: SER: speed 9600, 8N1 gpsd:INFO: SER: speed 9600, 8O1 gpsd:INFO: SER: speed 9600, 8N1 gpsd:INFO: SER: speed 9600, 8N1 gpsd:INFO: SER: speed 9600, 8N1 gpsd:INFO: gpsd_activate(2): activated GPS (fd 7) gpsd:INFO: KPPS:/dev/ttyPS1 cannot set PPS line discipline unknown error gpsd:WARN: KPPS:/dev/ttyPS1 kernel PPS unavailable, PPS accuracy will suffer gpsd:INFO: PPS:/dev/ttyPS1 ntpshm_link_activate: 1 gpsd:INFO: device /dev/ttyPS1 activated Does the new image use a different API to get the PPS data to gpsd/ntpd that I need to configure? Thanks, Jackson [1] https://lists.ettus.com/empathy/thread/YRNSBGDFVCXJDLOVHFYWMDVC5F3QAK5J