-<HTML>
-<HEAD>
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
- <META NAME="GENERATOR" CONTENT="Mozilla/4.01 [en] (Win95; I) [Netscape]">
- <TITLE>PPS Clock Discipline
-</TITLE>
-</HEAD>
-<BODY>
-
-<H3>
-PPS Clock Discipline</H3>
-
-<HR>
-<H4>
-Synopsis</H4>
+<html><head><title>
+PPS Clock Discipline
+</title></head><body><h3>
+PPS Clock Discipline
+</h3><hr>
+
+<h4>Synopsis</h4>
+
Address: 127.127.22.<I>u</I>
-<BR>Reference ID: <TT>PPS</TT>
-<BR>Driver ID: <TT>PPS</TT>
-<BR>Serial Port: <TT>/dev/pps<I>u</I></TT>; 9600 baud, 8-bits, no parity
-<BR>Features: <TT>tty_clk</TT>
-<H4>
-Description</H4>
-This driver furnishes an interface for pulse-per-second (PPS) signals produced
-by a cesium clock, radio clock or related equipment. It can be used to
-remove accumulated jitter and retime a secondary server when synchronized
-to a primary server over a congested, wide-area network and before redistributing
-the time to local clients.
-
-<P>In order for this driver to work, the local clock must be set to within
-+-500 ms by another means, such as a radio clock or NTP itself. The PPS
-signal is connected via a serial port and <A HREF="gadget.htm">gadget box</A>
-consisting of a one-shot and RS232 level converter. When operated at 38.4
-kbps with a SPARCstation IPC, this arrangement has a worst-case jitter
-less than 26 us.
-
-<P>There are three ways in which this driver can be used. The first way
-uses the <TT>ppsclock</TT> line discipline and works only for the baseboard
-serial ports of the Sun SPARCstation running SunOS 4.x. The PPS signal
-is connected via the gadget box to the carrier detect (DCD) line of a serial
-port. The signal is activated for this port by a <TT>fudge flag3 1</TT>
-command following the <TT>server</TT> command in the configuration file.
-This causes the <TT>ppsclock</TT> streams module to be configured for that
-port and to capture a timestamp at the on-time transition of the PPS signal.
-This driver then reads the timestamp directly by a designated <TT>ioctl()</TT>
-system call. This provides the most accurate time and least jitter of any
-other scheme. There is no need to configure a dedicated device for this
-purpose, which ordinarily is the device used for the associated radio clock.
-
-<P>The second way uses the <TT>tty_clk</TT> line discipline and works for
-any architecture supporting a serial port. If after a few seconds this
-driver finds no <TT>ppsclock</TT> module configured, it attempts to open
-a serial port device <TT>/dev/pps%d</TT>, where <TT>%d</TT> is the unit
-number, and assign the <TT>tty_clk</TT> line discipline to it. If the line
-discipline fails, no harm is done except the accuracy is reduced somewhat.
-The pulse generator in the gadget box must be adjusted to produce a start
-bit of length 26 usec at 38400 bps. Used with the <TT>tty_clk</TT> line
-discipline, this produces an ASCII DEL character ('\377') followed by a
-timestamp at the on-time transition of the PPS signal.
-
-<P>The third way involves an auxiliary radio clock driver which calls the
-PPS driver with a timestamp captured by that driver. This use is documented
-in the source code for the driver(s) involved.
-<H4>
-Fudge Factors</H4>
-
-<DL>
-<DT>
-<TT>time1 <I>time</I></TT></DT>
-
-<DD>
-Specifies the time offset calibration factor, in seconds and fraction,
-with default 0.0. This parameter can be used to compensate for the UART
-and OS delays. Allow about 247 us for UART delays at 38400 bps and about
-1 ms for SunOS streams nonsense.</DD>
-
-<DT>
-<TT>time2 <I>time</I></TT></DT>
-
-<DD>
-Not used by this driver.</DD>
-
-<DT>
-<TT>stratum <I>number</I></TT></DT>
-
-<DD>
-Specifies the driver stratum, in decimal from 0 to 15, with default 0.</DD>
-
-<DT>
-<TT>refid <I>string</I></TT></DT>
-
-<DD>
-Specifies the driver reference identifier, an ASCII string from one to
-four characters, with default <TT>PPS</TT>.</DD>
-
-<DT>
-<TT>flag1 0 | 1</TT></DT>
-
-<DD>
-Not used by this driver.</DD>
-
-<DT>
-<TT>flag2 0 | 1</TT></DT>
-
-<DD>
-Not used by this driver.</DD>
-
-<DT>
-<TT>flag3 0 | 1</TT></DT>
-
-<DD>
-Not used by this driver.</DD>
-
-<DT>
-<TT>flag4 0 | 1</TT></DT>
-
-<DD>
-Not used by this driver.</DD>
-
-
-<P>Additional Information
-
-<P><A HREF="refclock.htm">Reference Clock Drivers</A></DL>
-
-<HR>
-<ADDRESS>
-David L. Mills (mills@udel.edu)</ADDRESS>
+<br>Reference ID: <tt>PPS</tt>
+<br>Driver ID: <tt>PPS</tt>
+<br>Serial or Parallel Port: <tt>/dev/pps<I>u</I></tt>
+<br>Requires: PPSAPI interface
+
+<p>Note: This driver supersedes an older one of the same name. The older driver operated with several somewhat archaic signal interface devices, required intricate configuration and was poorly documented. This driver operates only with the PPSAPI interface proposed as an IETF standard.
+
+<h4>Description</h4>
+
+<p>This driver furnishes an interface for pulse-per-second (PPS) signals produced by a cesium clock, radio clock or related equipment. It can be used to remove accumulated jitter and retime a secondary server when synchronized to a primary server over a congested, wide-area network and before redistributing the time to local clients. The driver requires the PPSAPI interface described in: Mogul, J., D. Mills, J. Brittenson, J. Stone and U. Windl. Pulse-per-second API for Unix-like operating systems, version 1. Request for Comments RFC-2783, Internet Engineering Task Force, March 2000, 31 pp. This interface has been implemented in Sun Solaris and SunOS, Digital Tru64, Linux and FreeBSD and distributed with the current versions of FreeBSD and Linux.
+
+<p>While this driver can discipline the time and frequency relative to the PPS source, it cannot number the seconds. For this purpose a auxiliary source is required, ordinarily a radio clock operated as a primary reference (stratum 1) source and connected to a serial port. Usually, the PPS source is connected via a level converter to the data carrier detect (DCD) pin of the serial port connector, but another serial port could be used as well. In some systems where a parallel port and driver is available, the PPS signal can be connected directly to pin 10 of the port connector.
+
+<p>The <tt>pps</tt> configuration command is ordinarily used to specify the PPS device name and to select the on-time signal edge and enable the kernel PPS discipline, if used. Most configuration file commands can occur in any order; however, the ordering of the <tt>pps</tt> command and the clock configuration commands is important. The <tt>pps</tt> command should precede the clock configuration commands and the PPS configuration command should follow them. The first argument of the <tt>pps</tt> command specifies the PPS device name. If this name matches the device name of a clock driver, the PPS source is attached to that device. If no clock device name matches the PPS device name, that device is opened and the PPS source is attached to it. If the PPS device name is omitted, the name is constructed from the string <tt>/dev/pps%d</tt>, where %d is the <I>u</I> in the usual syntax.
+
+<p>The stratum assigned to the PPS source should match the stratum of the auxiliary source. If the auxiliary source is a primary reference source, the stratum should be zero, which is the default. If the auxiliary source is a NTP server, the <tt>fudge</tt> configuration command should be used to assign the same stratum number to the PPS source.
+
+<h4>Fudge Factors</h4>
+
+<dl>
+
+<dt><tt>time1 <I>time</I></tt></dt>
+<dd>Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. This parameter can be used to compensate for the UART and OS delays. Allow about 247 us for UART delays at 38400 bps and about 1 ms for SunOS streams nonsense.</dd>
+
+<dt><tt>time2 <I>time</I></tt></dt>
+<dd>Not used by this driver.</dd>
+
+<dt><tt>stratum <I>number</I></tt></dt>
+<dd>Specifies the driver stratum, in decimal from 0 to 15, with default 0.</dd>
+
+<dt><tt>refid <I>string</I></tt></dt>
+<dd>Specifies the driver reference identifier, an ASCII string from one to four characters, with default <tt>PPS</tt>.</dd>
+
+<dt><tt>flag1 0 | 1</tt></dt>
+<dd>Not used by this driver.</dd>
+
+<dt><tt>flag2 0 | 1</tt></dt>
+<dd>Not used by this driver.</dd>
+
+<dt><tt>flag3 0 | 1</tt></dt>
+<dd>Not used by this driver.</dd>
+
+<dt><tt>flag4 0 | 1</tt></dt>
+<dd>Not used by this driver.</dd>
+
+<p>Additional Information
+
+<p><A HREF="refclock.htm">Reference Clock Drivers</A></dl>
-</BODY>
-</HTML>
+<hr><a href=index.htm><img align=left src=pic/home.gif></a><address><a
+href=mailto:mills@udel.edu> David L. Mills <mills@udel.edu></a>
+</address></a></body></html>