This section describes how to set up SatPulse and the software that works with it.

Before installing SatPulse, you obviously need a working OS. SatPulse runs on Unix-like systems, including Linux and macOS. When running headless, you should get to the point where you can log in with SSH.

On a Raspberry Pi, I recommend installing Raspberry Pi OS (note that kernel version 6.12.34 does not work for SatPulse or PTP). It is also possible to install Fedora. On a CM4 or CM5, if you are connecting the TX/RX pins on the GPS board to the 40-pin HAT connector on the carrier board, then you also need to configure the UARTs.

If the machine will act as a server, you will probably want a static IP address; the network configuration page describes how to do this on Linux.

The first stage is the baseline setup, which gets you to the point where the GPS receiver is connected, satpulsed is running, and monitoring is working:

  1. Install SatPulse. After this, you can use satpulsetool without any additional configuration.
  2. Identify the serial device connected to the GPS and verify that data is being received. This can most easily be done with satpulsetool. Configuration also needs to know the baud rate.
  3. Configure and run satpulsed.
  4. Monitor satpulsed in a variety of ways.

On top of the baseline, you can add support for positioning with RTK and/or timing.

For positioning, RTK setup shows how to configure SatPulse for the base side and the rover side of an RTK setup.

For timing, there are two levels, depending on your hardware:

  • Basic use with NTP builds an NTP server on general-purpose, widely available hardware, such as a Raspberry Pi, with accuracy in the microsecond range.
  • Precision timing with a PHC uses a network interface with a PTP Hardware Clock that timestamps the GPS PPS signal in hardware. This supports a PTP server as well as NTP. It can achieve accuracy in the tens of nanoseconds, but needs very specific hardware.

The timing pages apply to Linux only: PHC support is Linux-specific, and macOS does not yet have a good way to read a PPS signal.