xref: /freebsd/contrib/ntp/html/drivers/driver46.html (revision 276da39af92f48350aa01091a2b8b3e735217eea)
12b15cb3dSCy Schubert<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
22b15cb3dSCy Schubert<html><head>
32b15cb3dSCy Schubert    <meta http-equiv="Content-Type"
42b15cb3dSCy Schubert    content="text/html;charset=iso-8859-1"><title>GPSD-NG client driver</title>
52b15cb3dSCy Schubert
62b15cb3dSCy Schubert    <link href="scripts/style.css" type="text/css" rel="stylesheet">
72b15cb3dSCy Schubert    <style type="text/css">
82b15cb3dSCy Schubert      table.dlstable { font-size:85%; }
92b15cb3dSCy Schubert      td.ttf{ font-family:Courier; font-weight:bold; }
102b15cb3dSCy Schubert    </style></head>
112b15cb3dSCy Schubert
122b15cb3dSCy Schubert
132b15cb3dSCy Schubert
142b15cb3dSCy Schubert  <body>
152b15cb3dSCy Schubert    <h3>GPSD NG client driver</h3>
162b15cb3dSCy Schubert<p>Last update:
17*276da39aSCy Schubert  <!-- #BeginDate format:En2m -->30-Apr-2015  05:53<!-- #EndDate -->
182b15cb3dSCy Schubert  UTC</p>
192b15cb3dSCy Schubert    <hr>
202b15cb3dSCy Schubert    <h4>Synopsis</h4>
212b15cb3dSCy Schubert
222b15cb3dSCy Schubert    <p>
232b15cb3dSCy Schubert      Address: 127.127.46.<i>u</i><br>
242b15cb3dSCy Schubert      Reference ID: <tt>GPSD</tt><br>
252b15cb3dSCy Schubert      Driver ID: <tt>GPSD_JSON</tt><br>
262b15cb3dSCy Schubert      Serial Port: <tt>/dev/gps<i>u</i></tt> as symlink to the true
272b15cb3dSCy Schubert      device (not used directly; see below)<br>
282b15cb3dSCy Schubert      Features: <tt></tt>
292b15cb3dSCy Schubert    </p>
302b15cb3dSCy Schubert
31*276da39aSCy Schubert    <!-- --------------------------------------------------------- -->
322b15cb3dSCy Schubert
33*276da39aSCy Schubert    <br><h4>Description</h4>
342b15cb3dSCy Schubert    <p>
352b15cb3dSCy Schubert      This driver is a client driver to the <i>GPSD</i> daemon, which
362b15cb3dSCy Schubert      over the time became increasingly popular for UN*Xish
372b15cb3dSCy Schubert      platforms. <i>GPSD</i> can manage several devices in parallel,
382b15cb3dSCy Schubert      aggregate information, and acts as a data hub for client
392b15cb3dSCy Schubert      applications. <i>GPSD</i> can also auto-detect and handle PPS
402b15cb3dSCy Schubert      hardware signals on serial ports. Have a look
412b15cb3dSCy Schubert      at <a href="http://www.catb.org/gpsd/">the
422b15cb3dSCy Schubert      <i>GPSD</i> project page</a>.
432b15cb3dSCy Schubert    </p>
442b15cb3dSCy Schubert    <p>
452b15cb3dSCy Schubert      <b>It is important to understand that this driver works best
462b15cb3dSCy Schubert      using a GPS device with PPS support.</b>
472b15cb3dSCy Schubert    </p>
482b15cb3dSCy Schubert    <p>
492b15cb3dSCy Schubert      The GPSD-NG protocol is text based, using JSON notation to
502b15cb3dSCy Schubert      transfer records in form of JSON objects. The driver uses a
512b15cb3dSCy Schubert      TCP/IP connection to <tt>localhost:gpsd</tt> to connect to the
522b15cb3dSCy Schubert      daemon and then requests the GPS
532b15cb3dSCy Schubert      device <tt>/dev/gps<i>u</i></tt> to be watched. (Different clock
542b15cb3dSCy Schubert      units use different devices, and
552b15cb3dSCy Schubert      <i>GPSD</i> is able to give only the relevant information to a clock
562b15cb3dSCy Schubert      instance.)
572b15cb3dSCy Schubert    </p>
582b15cb3dSCy Schubert    <p>
592b15cb3dSCy Schubert      This driver does not expect <i>GPSD</i> to be running or the
602b15cb3dSCy Schubert      clock device to be present <i>a priori</i>; it will try to
612b15cb3dSCy Schubert      re-establish a lost or hitherto unsuccessful connection and will
622b15cb3dSCy Schubert      wait for device to come up in <i>GPSD.</i> There is an initial
632b15cb3dSCy Schubert      10 seconds delay between a connection loss or failed attempt and
642b15cb3dSCy Schubert      the next reconnect attempt; this makes sure that there is no
652b15cb3dSCy Schubert      thrashing on the network layer. If the connection fails again,
662b15cb3dSCy Schubert      an exponential back off is used with an upper limit of
672b15cb3dSCy Schubert      approximately 10 minutes.
682b15cb3dSCy Schubert    </p>
692b15cb3dSCy Schubert    <p>
702b15cb3dSCy Schubert      The overall accuracy depends on the receiver used. The driver
712b15cb3dSCy Schubert      uses the error estimations (95% probability limits) provided by
72*276da39aSCy Schubert      <i>GPSD</i> to set the clock precision dynamically according to
73*276da39aSCy Schubert      these readings.
742b15cb3dSCy Schubert    </p>
752b15cb3dSCy Schubert    <p>
76*276da39aSCy Schubert      The driver needs the VERSION, TPV, PPS, WATCH and TOFF objects
77*276da39aSCy Schubert      of the <i>GPSD</i> protocol. (Others are quietly ignored.) The
78*276da39aSCy Schubert      driver can operate without the TOFF objects, which are available
79*276da39aSCy Schubert      with the <i>protocol</i> version 3.10 and above. (Not to be
80*276da39aSCy Schubert      confused with the <i>release</i> version of <i>GPSD</i>!)
81*276da39aSCy Schubert      Running without TOFF objects has a negative impact on the jitter
82*276da39aSCy Schubert      and offset of the serial timing information; if possible, a
83*276da39aSCy Schubert      version of <i>GPSD</i> with support for TOFF objects should be
84*276da39aSCy Schubert      used.
85*276da39aSCy Schubert    </p>
86*276da39aSCy Schubert    <p>The acronym <u>STI</u> is used here as a synonym for <i>serial
87*276da39aSCy Schubert      time information</i> from the data channel of the receiver, no
88*276da39aSCy Schubert      matter what objects were used to obtain it.
892b15cb3dSCy Schubert    </p>
902b15cb3dSCy Schubert
91*276da39aSCy Schubert    <!-- --------------------------------------------------------- -->
922b15cb3dSCy Schubert
93*276da39aSCy Schubert    <br><h4>Naming a Device</h4>
942b15cb3dSCy Schubert    <p>
95*276da39aSCy Schubert      The <i>GPSD</i> driver uses the same device name as the NMEA
96*276da39aSCy Schubert      driver, namely <tt>/dev/gps<i>u</i></tt>. There is a simple
97*276da39aSCy Schubert      reason for that: While the NMEA driver and the <i>GPSD</i>
98*276da39aSCy Schubert      driver can be active at the same time <b>for different
99*276da39aSCy Schubert      devices</b>, they cannot access the same device at a
100*276da39aSCy Schubert      time. Having the same name helps on that. It also eases
101*276da39aSCy Schubert      migration from using NMEA directly to using <i>GPSD</i>, as no
102*276da39aSCy Schubert      new links etc need to be created.
1032b15cb3dSCy Schubert    </p>
1042b15cb3dSCy Schubert    <p>
1052b15cb3dSCy Schubert      <i>GPSD</i> is normally started with the device name to access;
1062b15cb3dSCy Schubert      it can also be instructed by hot-plug scripts to add or remove
1072b15cb3dSCy Schubert      devices from its device pool. Luckily, the symlinks used by the
1082b15cb3dSCy Schubert      NMEA driver are happily accepted and used by <i>GPSD</i>; this
1092b15cb3dSCy Schubert      makes it possible to use the symlink names as device
1102b15cb3dSCy Schubert      identification. This makes the migration from the built-in NMEA
1112b15cb3dSCy Schubert      driver a bit easier.
1122b15cb3dSCy Schubert    </p>
113*276da39aSCy Schubert    <p><b>Note:</b> <i>GPSD</i> (as of version 3.10) cannot use kernel
114*276da39aSCy Schubert      mode PPS on devices that are hot-plugged. This would require to
115*276da39aSCy Schubert      attach the PPS line discipline to the character special file,
116*276da39aSCy Schubert      which is not possible when running with root privileges already
117*276da39aSCy Schubert      dropped. This is not likely to change in the future.
1182b15cb3dSCy Schubert    </p>
1192b15cb3dSCy Schubert
120*276da39aSCy Schubert    <!-- --------------------------------------------------------- -->
121*276da39aSCy Schubert
122*276da39aSCy Schubert    <br><h4>The 'mode' word</h4>
1232b15cb3dSCy Schubert    <p>
1242b15cb3dSCy Schubert      A few operation modes can be selected with the mode word.
1252b15cb3dSCy Schubert    </p>
1262b15cb3dSCy Schubert    <p>
1272b15cb3dSCy Schubert      <table border="1" frame="box" rules="all">
1282b15cb3dSCy Schubert      <th colspan="3">The Mode Word</th>
1292b15cb3dSCy Schubert	<tr> <td>Bits</td><td>Value</td><td>Description</td>
1302b15cb3dSCy Schubert	</tr>
131*276da39aSCy Schubert	<tr> <td rowspan="4"align="center">0..1</td>
132*276da39aSCy Schubert	  <td align="center">0</td>
133*276da39aSCy Schubert	  <td>STI only operation. This mode is affected by the timing
134*276da39aSCy Schubert	    stability of whatever protocol is used between the GPS
135*276da39aSCy Schubert	    device and GPSD.
136*276da39aSCy Schubert	    <br>
137*276da39aSCy Schubert	    Running on STI only is not recommended in general. Possible
138*276da39aSCy Schubert	    use cases include:
139*276da39aSCy Schubert	    <ul>
140*276da39aSCy Schubert	      <li>The receiver does not provide a PPS signal.
141*276da39aSCy Schubert	      <li>The receiver <i>does</i> provide a PPS signal and
142*276da39aSCy Schubert	      the secondary PPS unit is used.
143*276da39aSCy Schubert	      <li>The receiver has a stable serial timing and a proper
144*276da39aSCy Schubert	      fudge can be established.
145*276da39aSCy Schubert	      <li>You have other time sources available and want to
146*276da39aSCy Schubert		establish a useful fudge value for <tt>time2</tt>.
147*276da39aSCy Schubert	    </ul>
148*276da39aSCy Schubert	  </td>
1492b15cb3dSCy Schubert	</tr>
150*276da39aSCy Schubert	<tr>
151*276da39aSCy Schubert	  <td align="center">1</td>
152*276da39aSCy Schubert	  <td>Strict operation. This mode needs a valid PPS and a
153*276da39aSCy Schubert	    valid STI to combine the absolute time from the STI with
154*276da39aSCy Schubert	    the time stamp from the PPS record. Does not feed clock
155*276da39aSCy Schubert	    samples if no valid PPS+STI pair is available.
156*276da39aSCy Schubert	    <br><br>
157*276da39aSCy Schubert	    This type of operation results in an ordinary clock with a
158*276da39aSCy Schubert	    very low jitter as long as the PPS data is available, but
159*276da39aSCy Schubert	    the clock fails once PPS drops out. This mode is a
160*276da39aSCy Schubert	    possible choice for receivers that provide a PPS signal
161*276da39aSCy Schubert	    most of the time but have an unstable serial timing that
162*276da39aSCy Schubert	    cannot be fudge-compensated.
163*276da39aSCy Schubert	  </td>
1642b15cb3dSCy Schubert	</tr>
1652b15cb3dSCy Schubert	<tr><td align="center">2</td>
166*276da39aSCy Schubert	  <td>Automatic mode. Tries to operate in strict mode unless
167*276da39aSCy Schubert	    it fails to process valid samples for some time, currently
168*276da39aSCy Schubert	    120s. Then it reverts to STI-only operation until the PPS
169*276da39aSCy Schubert	    is stable again for 40s, when strict mode is engaged
170*276da39aSCy Schubert	    again.
171*276da39aSCy Schubert	    <br><br><b>Important Notice: This is an expiremental
172*276da39aSCy Schubert	    feature!</b><br>  Switching between strict and STI-only
173*276da39aSCy Schubert	    mode will cause changes in offset and jitter. Use this
174*276da39aSCy Schubert	    mode only if STI-only works fairly well with your setup,
175*276da39aSCy Schubert	    or if you expect longer dropouts of the PPS signal and
176*276da39aSCy Schubert	    prefer to use STI alone over not getting synchronised at
177*276da39aSCy Schubert	    all.</td>
1782b15cb3dSCy Schubert	</tr>
179*276da39aSCy Schubert	<tr>
180*276da39aSCy Schubert	  <td align="center">3</td>
181*276da39aSCy Schubert	  <td><i>(reserved for future extension, do not use)</i></td>
1822b15cb3dSCy Schubert	</tr>
183*276da39aSCy Schubert	<tr>
184*276da39aSCy Schubert	  <td align="center">2..31</td>
185*276da39aSCy Schubert	  <td colspan="2"><i>(reserved for future extension, do not
186*276da39aSCy Schubert	  use)</i></td>
187*276da39aSCy Schubert	</tr>
1882b15cb3dSCy Schubert      </table>
1892b15cb3dSCy Schubert    </p>
1902b15cb3dSCy Schubert
191*276da39aSCy Schubert    <!-- --------------------------------------------------------- -->
192*276da39aSCy Schubert
193*276da39aSCy Schubert    <br><h4>Syslog flood throttle</h4>
1942b15cb3dSCy Schubert    <p>This driver can create a lot of syslog messages when things go
195*276da39aSCy Schubert      wrong, and cluttering the log files is frowned upon. So we
196*276da39aSCy Schubert      attempt to log persistent or recurring errors only once per
197*276da39aSCy Schubert      hour. On the other hand, when tracking a problem the syslog
198*276da39aSCy Schubert      flood throttle can get into the way.</p>
1992b15cb3dSCy Schubert    <p>Therefore, fudge <i>flag3</i> can be used to <i>disable</i> the
2002b15cb3dSCy Schubert      flood throttle at any time; the throttle is engaged by
2012b15cb3dSCy Schubert      default. Running with the syslog flood throttle disabled for
2022b15cb3dSCy Schubert      lengthy time is not recommended unless the log files are closely
2032b15cb3dSCy Schubert      monitored.</p>
2042b15cb3dSCy Schubert
205*276da39aSCy Schubert    <!-- --------------------------------------------------------- -->
206*276da39aSCy Schubert
207*276da39aSCy Schubert    <br><h4>PPS secondary clock unit</h4>
208*276da39aSCy Schubert    <p>Units with numbers &ge;128 act as secondary clock unit for the
209*276da39aSCy Schubert      primary clock unit (u mod 128). A secondary unit processes only
210*276da39aSCy Schubert      the PPS data from <i>GPSD</i> and needs the corresponding master
211*276da39aSCy Schubert      unit to work<a href="#fn1" name="fn1bl"><sup>1</sup></a>. Use
212*276da39aSCy Schubert      the 'noselect' keyword on the primary unit if you are not
213*276da39aSCy Schubert      interested in its data.
214*276da39aSCy Schubert    </p><p>The secondary unit employs the usual precautions before
215*276da39aSCy Schubert      feeding clock samples:</p>
216*276da39aSCy Schubert    <ul>
217*276da39aSCy Schubert      <li>The system must be already in a synchronised state.
218*276da39aSCy Schubert      <li>The system offset must be less than 400ms absolute.
219*276da39aSCy Schubert      <li>The phase adjustment from the PPS signal must also be less
220*276da39aSCy Schubert	than 400ms absolute.
221*276da39aSCy Schubert    </ul>
222*276da39aSCy Schubert    <p>If fudge flag <tt>flag1</tt> is set for the secondary unit, the
223*276da39aSCy Schubert      unit asserts the PPS flag on the clock as long as PPS data is
224*276da39aSCy Schubert      available. This makes the unit eligible as PPS peer and should
225*276da39aSCy Schubert      only be used if the GPS receiver can be trusted for the quality
226*276da39aSCy Schubert      of its PPS signal<a href="fn2"
227*276da39aSCy Schubert      name="fn2bl"><sup>2</sup></a>. The PPS flag gets cleared if no
228*276da39aSCy Schubert      PPS records can be aquired for some time. The unit also flushes
229*276da39aSCy Schubert      the sample buffer at this point to avoid the use of stale PPS
230*276da39aSCy Schubert      data.</p>
231*276da39aSCy Schubert    <p><b>Attention:</b> This unit uses its own PPS fudge value
232*276da39aSCy Schubert      which must be set as fudge <tt>time1</tt>. Only the fudge
233*276da39aSCy Schubert      values <tt>time1</tt> and <tt>flag1</tt> have an impact on secondary
234*276da39aSCy Schubert      units.</p>
235*276da39aSCy Schubert
236*276da39aSCy Schubert    <!-- --------------------------------------------------------- -->
237*276da39aSCy Schubert
238*276da39aSCy Schubert    <br><h4>Clockstats</h4>
239*276da39aSCy Schubert    <p>If flag4 is set when the driver is polled, a clockstats record
240*276da39aSCy Schubert      is written for the primary clock unit. (The secondary PPS unit
241*276da39aSCy Schubert      does not provide clock stats on its own.) The first 3 fields are
242*276da39aSCy Schubert      the normal date, time, and IP address common to all clockstats
243*276da39aSCy Schubert      records.
244*276da39aSCy Schubert    </p><p>
245*276da39aSCy Schubert      <table border="1" frame="box" rules="all">
246*276da39aSCy Schubert	<th colspan="2">The Clockstats Line</th>
247*276da39aSCy Schubert	<tr> <td>field</td><td>Description</td>	</tr>
248*276da39aSCy Schubert	<tr>
249*276da39aSCy Schubert	  <td align="center">1</td>
250*276da39aSCy Schubert	  <td>Date as day number since NTP epoch.</td>
251*276da39aSCy Schubert	</tr><tr>
252*276da39aSCy Schubert	  <td align="center">2</td>
253*276da39aSCy Schubert	  <td>Time as seconds since midnight.</td>
254*276da39aSCy Schubert	</tr><tr>
255*276da39aSCy Schubert	  <td align="center">3</td>
256*276da39aSCy Schubert	  <td>(Pseudo-) IP address of clock unit.</td>
257*276da39aSCy Schubert	</tr><tr>
258*276da39aSCy Schubert	  <td align="center">4</td>
259*276da39aSCy Schubert	  <td>Number of received known JSON records since last
260*276da39aSCy Schubert	    poll. The driver knows about TPV, PPS, TOFF, VERSION and
261*276da39aSCy Schubert	    WATCH records; others are silently ignored.
262*276da39aSCy Schubert	  </td>
263*276da39aSCy Schubert	</tr><tr>
264*276da39aSCy Schubert	  <td align="center">5</td>
265*276da39aSCy Schubert	  <td>Bad replies since last poll. A record is considered
266*276da39aSCy Schubert	    malformed or a bad reply when it is missing vital fields
267*276da39aSCy Schubert	    or the fields contain malformed data that cannot be
268*276da39aSCy Schubert	    parsed.
269*276da39aSCy Schubert	  </td>
270*276da39aSCy Schubert	</tr><tr>
271*276da39aSCy Schubert	  <td align="center">6</td>
272*276da39aSCy Schubert	  <td>Number of sample cycles since last poll that were
273*276da39aSCy Schubert	    discarded because there was no GPS fix. This is
274*276da39aSCy Schubert	    effectively the number of TPV records with a fix value
275*276da39aSCy Schubert	    &lt; 2 or without a time stamp.
276*276da39aSCy Schubert	  </td>
277*276da39aSCy Schubert	</tr><tr>
278*276da39aSCy Schubert	  <td align="center">7</td>
279*276da39aSCy Schubert	  <td>Number of serial time information records (TPV or TOFF,
280*276da39aSCy Schubert	    depending on the GPSD version) received since last poll.
281*276da39aSCy Schubert	  </td>
282*276da39aSCy Schubert	</tr><tr>
283*276da39aSCy Schubert	  <td align="center">8</td>
284*276da39aSCy Schubert	  <td>Number of serial time information records used for
285*276da39aSCy Schubert	    clock samples since the last poll.
286*276da39aSCy Schubert	  </td>
287*276da39aSCy Schubert	</tr><tr>
288*276da39aSCy Schubert	  <td align="center">9</td>
289*276da39aSCy Schubert	  <td>Number of PPS records received since the last poll.</td>
290*276da39aSCy Schubert	</tr><tr>
291*276da39aSCy Schubert	  <td align="center">10</td>
292*276da39aSCy Schubert	  <td>Number of PPS records used for clock samples on the
293*276da39aSCy Schubert	    secondary channel since the last poll.
294*276da39aSCy Schubert	  </td>
295*276da39aSCy Schubert	</tr>
296*276da39aSCy Schubert      </table>
297*276da39aSCy Schubert    </p>
298*276da39aSCy Schubert
299*276da39aSCy Schubert    <!-- --------------------------------------------------------- -->
300*276da39aSCy Schubert
301*276da39aSCy Schubert    <br><h4>Fudge Factors</h4>
3022b15cb3dSCy Schubert
3032b15cb3dSCy Schubert    <dl>
3042b15cb3dSCy Schubert      <dt><tt>time1 <i>time</i></tt></dt>
3052b15cb3dSCy Schubert      <dd>Specifies the PPS time offset calibration factor, in seconds
3062b15cb3dSCy Schubert      and fraction, with default 0.0.</dd>
3072b15cb3dSCy Schubert      <dt><a name="fudgetime2"><tt>time2 <i>time</i></tt></a></dt>
308*276da39aSCy Schubert      <dd><em>[Primary Unit]</em> Specifies the TPV/TIME time offset
309*276da39aSCy Schubert      calibration factor, in seconds and fraction, with default
310*276da39aSCy Schubert      0.0.</dd>
3112b15cb3dSCy Schubert      <dt><tt>stratum <i>number</i></tt></dt>
312*276da39aSCy Schubert      <dd>Specifies the driver stratum, in decimal from 0 to 15, with
313*276da39aSCy Schubert	default 0.</dd>
3142b15cb3dSCy Schubert      <dt><tt>refid <i>string</i></tt></dt>
3152b15cb3dSCy Schubert      <dd>Specifies the driver reference identifier, an ASCII string
3162b15cb3dSCy Schubert	from one to four characters, with default <tt>GPSD</tt>.</dd>
317*276da39aSCy Schubert      <dt><tt>flag1 0 | 1</tt></dt><dd><em>[<b>Secondary</b>
318*276da39aSCy Schubert	  Unit]</em> When set, flags the secondary clock unit as a
319*276da39aSCy Schubert	potential PPS peer as long as good PPS data is available.
320*276da39aSCy Schubert      </dd>
321*276da39aSCy Schubert      <dt><tt>flag2 0 | 1</tt></dt>
322*276da39aSCy Schubert      <dd><em>[Primary Unit]</em> When set, <u>disables</u> the
323*276da39aSCy Schubert	processing of incoming PPS records. Intended as an aide to
324*276da39aSCy Schubert	test the effects of a PPS dropout when using automatic mode
325*276da39aSCy Schubert	(mode 2).
326*276da39aSCy Schubert      </dd>
327*276da39aSCy Schubert      <dt><tt>flag3 0 | 1</tt></dt><dd><em>[Primary Unit]</em>
328*276da39aSCy Schubert      If set, <u>disables</u> the log throttle. Useful when tracking
329*276da39aSCy Schubert      problems in the interaction between <i>GPSD</i> and <i>NTPD</i>,
330*276da39aSCy Schubert      since now all error events are logged. Persistent/recurrent
331*276da39aSCy Schubert      errors can easily fill up the log, so this should only be
332*276da39aSCy Schubert      enabled during bug hunts.</dd>
333*276da39aSCy Schubert      <dt><tt>flag4 0 | 1</tt></dt><dd><em>[Primary Unit]</em>
334*276da39aSCy Schubert	If set, write a clock stats line on every poll cycle.
335*276da39aSCy Schubert      </dd>
3362b15cb3dSCy Schubert    </dl>
3372b15cb3dSCy Schubert
338*276da39aSCy Schubert    <!-- -- footnotes -------------------------------------------- -->
339*276da39aSCy Schubert
340*276da39aSCy Schubert    <hr>
341*276da39aSCy Schubert    <p><a name="fn1" href="#fn1bl"><sup>1</sup>) </a>Data transmission
342*276da39aSCy Schubert      an decoding is done only once by the primary unit. The decoded
343*276da39aSCy Schubert      data is then processed independently in both clock units. This
344*276da39aSCy Schubert      avoids double transmission over two sockets and decoding the
345*276da39aSCy Schubert      same data twice, but the primary unit is always needed as a
346*276da39aSCy Schubert      downside of this approach.
347*276da39aSCy Schubert    </p>
348*276da39aSCy Schubert    <p><a name="fn2" href="#fn2bl"><sup>2</sup>) </a>The clock driver
349*276da39aSCy Schubert      suppresses the processing PPS records when the TPV/TIME data
350*276da39aSCy Schubert      indicates the receiver has no fix. It can also deal with
351*276da39aSCy Schubert      situations where the PPS signal is not delivered
352*276da39aSCy Schubert      to <i>GPSD</i>. But once it is available, it is also processed
353*276da39aSCy Schubert      and used to create samples. If a receiver cannot be trusted for
354*276da39aSCy Schubert      the precision of its PPS signal, it should not be used to create
355*276da39aSCy Schubert      a possible PPS peer: These get extra clout and can effectively
356*276da39aSCy Schubert      become the sole source of input for the control loop. You do not
357*276da39aSCy Schubert      want to use sloppy data for that.
358*276da39aSCy Schubert    <hr>
3592b15cb3dSCy Schubert    <p>Additional Information</p>
3602b15cb3dSCy Schubert    <p><a href="../refclock.html">Reference Clock Drivers</a></p>
3612b15cb3dSCy Schubert    <hr>
3622b15cb3dSCy Schubert    <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
3632b15cb3dSCy Schubert  </body></html>
364