The LinuxPPS project is an implementation of the Pulse Per Second (PPS) API for GNU/Linux version 2.6 and newer.
Note: LinuxPPS has been (partially) merged into Linux source tree on Thu Jun 18 13:04:04 2009 (commit eae9d2ba0cfc27a2ad9765f23efb98fb80d80234)!
This API uses character devices to exchange data between userspace and the GNU/Linux kernel using a well defined kernel API. It also makes adding new PPS sources to the kernel extremely simple.
The benefits of this solution are:
- Consistent API for all PPS sources -- this avoids the duplicated code problems present in earlier implementions such as PPSkit-light-PPSAPI-alpha-1610m-2.6.5
- The kernel API makes it very simple to add new PPS sources
- Management of the PPS source with a few simple
Alternative PPS Implementations
There are other Pulse Per Second API implementions for GNU/Linux. Please view Steven Bjork's experimental NTP info website to view several PPS implementations in action.
You may also want to look at Steven Bjork's main site to learn more about the Network Time Protocol.
This wiki is the main documentation for LinuxPPS.
If you need more help, please ask your question on the LinuxPPS mailing list and we will try to help you as best we are able.
Getting and building the code
We have created detailed instructions for downloading, compiling, installing, and testing LinuxPPS.
Please view the LinuxPPS installation page for the instructions.
NTP classic support
For LinuxPPS to function correctly, you may need to patch NTPD. This depends on which PPS source you are using. We are working to get the patches accepted into the main NTPD distribution.
We have written a detailed guide to configuring NTPD to work with LinuxPPS on the LinuxPPS NTPD support page.
NTPsec is a secure, hardened, and improved implementation of Network Time Protocol derived from NTP Classic, Dave Mills’s original (now called NTP classic). We have written a guide for configuring NTPsec to work with LinuxPPS on the LinuxPPS NTPD support page.
How to contribute
We welcome all kinds of contributions to LinuxPPS. Please view this page for instructions on how to contribute to LinuxPPS.
We look forward to your help!
If you have patches for the wiki documentation, please contact Udo van den Heuvel via the LinuxPPS mailing list; he is managing the documentation part of
the LinuxPPS project.
Please do not contact Rodolfo for these issues.
Hacking the code
For information about how to add a new LinuxPPS source to the Linux kernel, please see the LinuxPPS_hacking page
For the answers to some frequently asked questions, see the LinuxPPS_FAQ page.
LinuxPPS based projects
Projects using LinuxPPS:
- Dedicated Short Range Communications (DSRC) radio synchronization used by US-DOT's VII  .
- Owens Valley Radio Observatory (OVRO / CARMA) correlator system
- Raspberry Pi Stratum 1 NTP server with PPS Accurate timekeeping at low cost
If you have a project that is using LinuxPPS and you would like it to be shown here, please email email@example.com
- Linux&C. issue 68 (year 11) at page 5 (Italian magazine).
- Linux Journal issue 185 (September 2009) at page 14.
- Kenji Hiranuma
- Folkert van Heusden