PPS from NEO-M9N

Hi there,

We have a NEO-M9N (SMA) unit that we’d like to use for a time server accurate to within approx 100ms. I am able to receive GPS gata on my computer via the USB cable, but I am having trouble integrating the PPS signal into our server. I can see the blue LED PPS light blinking, so it appears the fix is good enough that it should be outputting the signal.

Details:

  • Connection via USB-C output

  • OS: tried in Arch Linux as well as Ubuntu 23.04

  • Packages installed: ntpd, gpsd, gpsd-clients, pps-tools

  • When plugged in, the OS creates the devices /dev/gps0 and /dev/pps0

Output of ppstest /dev/pps0:

trying PPS source “/dev/pps0”

found PPS source “/dev/pps0”

ok, found 1 source(s), now start fetching data…

time_pps_fetch() error -1 (Connection timed out)

time_pps_fetch() error -1 (Connection timed out)

time_pps_fetch() error -1 (Connection timed out)

(continues like this)

Do you know what might cause this error? Is it possible for the LED to be blinking but the signal too weak to pulse the PPS line correctly? Can you even get the PPS just from plugging in the USB or do I have to run a separate serial to USB converter for the PPS? Sorry, I am a bit new to all this so I’m not sure where to go from here.

Thanks.

I have no experience using PPS through USB. I have always used a dedicated connection from the GPS PPS output pin to a GPIO pin. I use GPIO18 on my Raspberry Pi. I have a pi time server how-to here: https://robrobinette.com/pi_GPS_PPS_Time_Server.htm

Hi,

Have you managed to solve this problem? I am interested in using a pc with an embedded NEOM9N on the motherboard (I think it uses an internal USB port I think, I still did not bought the pc).

Thanks

USB doesn’t provide a means of physical attachment for the 1PPS signal.

With RS232 there was a means of connecting to an otherwise unused status pin like DCD or DSR, and reading that via a control/status register on the PC side UART, like a GPIO pin.

I don’t think I’ve seen a successful implementation of this with USB, you’d have to get access to the line state, and deal with the interaction with the driver and the device on the far end of the interface.

Maybe looking at project like Arduino based NTP Server.