xref: /freebsd/contrib/ntp/html/drivers/driver46.html (revision a466cc55373fc3cf86837f09da729535b57e69a1)
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:
17276da39aSCy 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
31276da39aSCy Schubert    <!-- --------------------------------------------------------- -->
322b15cb3dSCy Schubert
33276da39aSCy 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
72276da39aSCy Schubert      <i>GPSD</i> to set the clock precision dynamically according to
73276da39aSCy Schubert      these readings.
742b15cb3dSCy Schubert    </p>
752b15cb3dSCy Schubert    <p>
76276da39aSCy Schubert      The driver needs the VERSION, TPV, PPS, WATCH and TOFF objects
77276da39aSCy Schubert      of the <i>GPSD</i> protocol. (Others are quietly ignored.) The
78276da39aSCy Schubert      driver can operate without the TOFF objects, which are available
79276da39aSCy Schubert      with the <i>protocol</i> version 3.10 and above. (Not to be
80276da39aSCy Schubert      confused with the <i>release</i> version of <i>GPSD</i>!)
81276da39aSCy Schubert      Running without TOFF objects has a negative impact on the jitter
82276da39aSCy Schubert      and offset of the serial timing information; if possible, a
83276da39aSCy Schubert      version of <i>GPSD</i> with support for TOFF objects should be
84276da39aSCy Schubert      used.
85276da39aSCy Schubert    </p>
86276da39aSCy Schubert    <p>The acronym <u>STI</u> is used here as a synonym for <i>serial
87276da39aSCy Schubert      time information</i> from the data channel of the receiver, no
88276da39aSCy Schubert      matter what objects were used to obtain it.
892b15cb3dSCy Schubert    </p>
902b15cb3dSCy Schubert
91276da39aSCy Schubert    <!-- --------------------------------------------------------- -->
922b15cb3dSCy Schubert
93276da39aSCy Schubert    <br><h4>Naming a Device</h4>
942b15cb3dSCy Schubert    <p>
95*a466cc55SCy Schubert      By default, the <i>GPSD</i> driver uses the same device name as
96*a466cc55SCy Schubert      the NMEA driver, namely <tt>/dev/gps<i>u</i></tt>. There is a
97*a466cc55SCy Schubert      simple reason for that: While the NMEA driver and
98*a466cc55SCy Schubert      the <i>GPSD</i> driver can be active at the same time <b>for
99*a466cc55SCy Schubert      different devices</b>, they cannot access the same device at a
100276da39aSCy Schubert      time. Having the same name helps on that. It also eases
101276da39aSCy Schubert      migration from using NMEA directly to using <i>GPSD</i>, as no
102276da39aSCy 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*a466cc55SCy Schubert    <p>
114*a466cc55SCy Schubert      The driver also honors <tt>device</tt> statements for
115*a466cc55SCy Schubert      the <tt>timedata</tt> channel. (PPS is handled
116*a466cc55SCy Schubert      inside <i>GPSD</i>, so there's no need for that.) This permits a
117*a466cc55SCy Schubert      more natural way to specify the link between <i>GPSD</i>
118*a466cc55SCy Schubert      and <i>NTPD</i>: Simply name the device as it was given
119*a466cc55SCy Schubert      to <i>GPSD</i>.
120*a466cc55SCy Schubert    </p>
121276da39aSCy Schubert    <p><b>Note:</b> <i>GPSD</i> (as of version 3.10) cannot use kernel
122*a466cc55SCy Schubert      mode PPS on devices that are hot-plugged or activated on demand.
123*a466cc55SCy Schubert      This is not likely to change in the future.  Have a look
124*a466cc55SCy Schubert      at <i>GPSD</i>'s <tt>-n</tt> (<i>nowait</i>) option.
1252b15cb3dSCy Schubert    </p>
1262b15cb3dSCy Schubert
127276da39aSCy Schubert    <!-- --------------------------------------------------------- -->
128276da39aSCy Schubert
129276da39aSCy Schubert    <br><h4>The 'mode' word</h4>
1302b15cb3dSCy Schubert    <p>
1312b15cb3dSCy Schubert      A few operation modes can be selected with the mode word.
1322b15cb3dSCy Schubert    </p>
1332b15cb3dSCy Schubert    <p>
1342b15cb3dSCy Schubert      <table border="1" frame="box" rules="all">
1352b15cb3dSCy Schubert      <th colspan="3">The Mode Word</th>
1362b15cb3dSCy Schubert	<tr> <td>Bits</td><td>Value</td><td>Description</td>
1372b15cb3dSCy Schubert	</tr>
138276da39aSCy Schubert	<tr> <td rowspan="4"align="center">0..1</td>
139276da39aSCy Schubert	  <td align="center">0</td>
140276da39aSCy Schubert	  <td>STI only operation. This mode is affected by the timing
141276da39aSCy Schubert	    stability of whatever protocol is used between the GPS
142276da39aSCy Schubert	    device and GPSD.
143276da39aSCy Schubert	    <br>
144276da39aSCy Schubert	    Running on STI only is not recommended in general. Possible
145276da39aSCy Schubert	    use cases include:
146276da39aSCy Schubert	    <ul>
147276da39aSCy Schubert	      <li>The receiver does not provide a PPS signal.
148276da39aSCy Schubert	      <li>The receiver <i>does</i> provide a PPS signal and
149276da39aSCy Schubert	      the secondary PPS unit is used.
150276da39aSCy Schubert	      <li>The receiver has a stable serial timing and a proper
151276da39aSCy Schubert	      fudge can be established.
152276da39aSCy Schubert	      <li>You have other time sources available and want to
153276da39aSCy Schubert		establish a useful fudge value for <tt>time2</tt>.
154276da39aSCy Schubert	    </ul>
155276da39aSCy Schubert	  </td>
1562b15cb3dSCy Schubert	</tr>
157276da39aSCy Schubert	<tr>
158276da39aSCy Schubert	  <td align="center">1</td>
159276da39aSCy Schubert	  <td>Strict operation. This mode needs a valid PPS and a
160276da39aSCy Schubert	    valid STI to combine the absolute time from the STI with
161276da39aSCy Schubert	    the time stamp from the PPS record. Does not feed clock
162276da39aSCy Schubert	    samples if no valid PPS+STI pair is available.
163276da39aSCy Schubert	    <br><br>
164276da39aSCy Schubert	    This type of operation results in an ordinary clock with a
165276da39aSCy Schubert	    very low jitter as long as the PPS data is available, but
166276da39aSCy Schubert	    the clock fails once PPS drops out. This mode is a
167276da39aSCy Schubert	    possible choice for receivers that provide a PPS signal
168276da39aSCy Schubert	    most of the time but have an unstable serial timing that
169276da39aSCy Schubert	    cannot be fudge-compensated.
170276da39aSCy Schubert	  </td>
1712b15cb3dSCy Schubert	</tr>
1722b15cb3dSCy Schubert	<tr><td align="center">2</td>
173276da39aSCy Schubert	  <td>Automatic mode. Tries to operate in strict mode unless
174276da39aSCy Schubert	    it fails to process valid samples for some time, currently
175276da39aSCy Schubert	    120s. Then it reverts to STI-only operation until the PPS
176276da39aSCy Schubert	    is stable again for 40s, when strict mode is engaged
177276da39aSCy Schubert	    again.
178*a466cc55SCy Schubert	    <br><br><b>Important Notice: This is an experimental
179276da39aSCy Schubert	    feature!</b><br>  Switching between strict and STI-only
180276da39aSCy Schubert	    mode will cause changes in offset and jitter. Use this
181276da39aSCy Schubert	    mode only if STI-only works fairly well with your setup,
182276da39aSCy Schubert	    or if you expect longer dropouts of the PPS signal and
183276da39aSCy Schubert	    prefer to use STI alone over not getting synchronised at
184276da39aSCy Schubert	    all.</td>
1852b15cb3dSCy Schubert	</tr>
186276da39aSCy Schubert	<tr>
187276da39aSCy Schubert	  <td align="center">3</td>
188276da39aSCy Schubert	  <td><i>(reserved for future extension, do not use)</i></td>
1892b15cb3dSCy Schubert	</tr>
190276da39aSCy Schubert	<tr>
191276da39aSCy Schubert	  <td align="center">2..31</td>
192276da39aSCy Schubert	  <td colspan="2"><i>(reserved for future extension, do not
193276da39aSCy Schubert	  use)</i></td>
194276da39aSCy Schubert	</tr>
1952b15cb3dSCy Schubert      </table>
1962b15cb3dSCy Schubert    </p>
1972b15cb3dSCy Schubert
198276da39aSCy Schubert    <!-- --------------------------------------------------------- -->
199276da39aSCy Schubert
200276da39aSCy Schubert    <br><h4>Syslog flood throttle</h4>
2012b15cb3dSCy Schubert    <p>This driver can create a lot of syslog messages when things go
202276da39aSCy Schubert      wrong, and cluttering the log files is frowned upon. So we
203276da39aSCy Schubert      attempt to log persistent or recurring errors only once per
204276da39aSCy Schubert      hour. On the other hand, when tracking a problem the syslog
205276da39aSCy Schubert      flood throttle can get into the way.</p>
2062b15cb3dSCy Schubert    <p>Therefore, fudge <i>flag3</i> can be used to <i>disable</i> the
2072b15cb3dSCy Schubert      flood throttle at any time; the throttle is engaged by
2082b15cb3dSCy Schubert      default. Running with the syslog flood throttle disabled for
2092b15cb3dSCy Schubert      lengthy time is not recommended unless the log files are closely
2102b15cb3dSCy Schubert      monitored.</p>
2112b15cb3dSCy Schubert
212276da39aSCy Schubert    <!-- --------------------------------------------------------- -->
213276da39aSCy Schubert
214276da39aSCy Schubert    <br><h4>PPS secondary clock unit</h4>
215276da39aSCy Schubert    <p>Units with numbers &ge;128 act as secondary clock unit for the
216276da39aSCy Schubert      primary clock unit (u mod 128). A secondary unit processes only
217276da39aSCy Schubert      the PPS data from <i>GPSD</i> and needs the corresponding master
218276da39aSCy Schubert      unit to work<a href="#fn1" name="fn1bl"><sup>1</sup></a>. Use
219*a466cc55SCy Schubert      the '<tt>noselect</tt>' keyword on the primary unit if you are not
220276da39aSCy Schubert      interested in its data.
221276da39aSCy Schubert    </p><p>The secondary unit employs the usual precautions before
222276da39aSCy Schubert      feeding clock samples:</p>
223276da39aSCy Schubert    <ul>
224276da39aSCy Schubert      <li>The system must be already in a synchronised state.
225276da39aSCy Schubert      <li>The system offset must be less than 400ms absolute.
226276da39aSCy Schubert      <li>The phase adjustment from the PPS signal must also be less
227276da39aSCy Schubert	than 400ms absolute.
228276da39aSCy Schubert    </ul>
229276da39aSCy Schubert    <p>If fudge flag <tt>flag1</tt> is set for the secondary unit, the
230276da39aSCy Schubert      unit asserts the PPS flag on the clock as long as PPS data is
231276da39aSCy Schubert      available. This makes the unit eligible as PPS peer and should
232276da39aSCy Schubert      only be used if the GPS receiver can be trusted for the quality
233276da39aSCy Schubert      of its PPS signal<a href="fn2"
234276da39aSCy Schubert      name="fn2bl"><sup>2</sup></a>. The PPS flag gets cleared if no
235*a466cc55SCy Schubert      PPS records can be acquired for some time. The unit also flushes
236276da39aSCy Schubert      the sample buffer at this point to avoid the use of stale PPS
237276da39aSCy Schubert      data.</p>
238276da39aSCy Schubert    <p><b>Attention:</b> This unit uses its own PPS fudge value
239276da39aSCy Schubert      which must be set as fudge <tt>time1</tt>. Only the fudge
240276da39aSCy Schubert      values <tt>time1</tt> and <tt>flag1</tt> have an impact on secondary
241276da39aSCy Schubert      units.</p>
242276da39aSCy Schubert
243276da39aSCy Schubert    <!-- --------------------------------------------------------- -->
244276da39aSCy Schubert
245276da39aSCy Schubert    <br><h4>Clockstats</h4>
246276da39aSCy Schubert    <p>If flag4 is set when the driver is polled, a clockstats record
247276da39aSCy Schubert      is written for the primary clock unit. (The secondary PPS unit
248276da39aSCy Schubert      does not provide clock stats on its own.) The first 3 fields are
249276da39aSCy Schubert      the normal date, time, and IP address common to all clockstats
250276da39aSCy Schubert      records.
251276da39aSCy Schubert    </p><p>
252276da39aSCy Schubert      <table border="1" frame="box" rules="all">
253276da39aSCy Schubert	<th colspan="2">The Clockstats Line</th>
254276da39aSCy Schubert	<tr> <td>field</td><td>Description</td>	</tr>
255276da39aSCy Schubert	<tr>
256276da39aSCy Schubert	  <td align="center">1</td>
257276da39aSCy Schubert	  <td>Date as day number since NTP epoch.</td>
258276da39aSCy Schubert	</tr><tr>
259276da39aSCy Schubert	  <td align="center">2</td>
260276da39aSCy Schubert	  <td>Time as seconds since midnight.</td>
261276da39aSCy Schubert	</tr><tr>
262276da39aSCy Schubert	  <td align="center">3</td>
263276da39aSCy Schubert	  <td>(Pseudo-) IP address of clock unit.</td>
264276da39aSCy Schubert	</tr><tr>
265276da39aSCy Schubert	  <td align="center">4</td>
266276da39aSCy Schubert	  <td>Number of received known JSON records since last
267276da39aSCy Schubert	    poll. The driver knows about TPV, PPS, TOFF, VERSION and
268276da39aSCy Schubert	    WATCH records; others are silently ignored.
269276da39aSCy Schubert	  </td>
270276da39aSCy Schubert	</tr><tr>
271276da39aSCy Schubert	  <td align="center">5</td>
272276da39aSCy Schubert	  <td>Bad replies since last poll. A record is considered
273276da39aSCy Schubert	    malformed or a bad reply when it is missing vital fields
274276da39aSCy Schubert	    or the fields contain malformed data that cannot be
275276da39aSCy Schubert	    parsed.
276276da39aSCy Schubert	  </td>
277276da39aSCy Schubert	</tr><tr>
278276da39aSCy Schubert	  <td align="center">6</td>
279276da39aSCy Schubert	  <td>Number of sample cycles since last poll that were
280276da39aSCy Schubert	    discarded because there was no GPS fix. This is
281276da39aSCy Schubert	    effectively the number of TPV records with a fix value
282276da39aSCy Schubert	    &lt; 2 or without a time stamp.
283276da39aSCy Schubert	  </td>
284276da39aSCy Schubert	</tr><tr>
285276da39aSCy Schubert	  <td align="center">7</td>
286276da39aSCy Schubert	  <td>Number of serial time information records (TPV or TOFF,
287276da39aSCy Schubert	    depending on the GPSD version) received since last poll.
288276da39aSCy Schubert	  </td>
289276da39aSCy Schubert	</tr><tr>
290276da39aSCy Schubert	  <td align="center">8</td>
291276da39aSCy Schubert	  <td>Number of serial time information records used for
292276da39aSCy Schubert	    clock samples since the last poll.
293276da39aSCy Schubert	  </td>
294276da39aSCy Schubert	</tr><tr>
295276da39aSCy Schubert	  <td align="center">9</td>
296276da39aSCy Schubert	  <td>Number of PPS records received since the last poll.</td>
297276da39aSCy Schubert	</tr><tr>
298276da39aSCy Schubert	  <td align="center">10</td>
299276da39aSCy Schubert	  <td>Number of PPS records used for clock samples on the
300276da39aSCy Schubert	    secondary channel since the last poll.
301276da39aSCy Schubert	  </td>
302276da39aSCy Schubert	</tr>
303276da39aSCy Schubert      </table>
304276da39aSCy Schubert    </p>
305276da39aSCy Schubert
306276da39aSCy Schubert    <!-- --------------------------------------------------------- -->
307276da39aSCy Schubert
308276da39aSCy Schubert    <br><h4>Fudge Factors</h4>
3092b15cb3dSCy Schubert
3102b15cb3dSCy Schubert    <dl>
3112b15cb3dSCy Schubert      <dt><tt>time1 <i>time</i></tt></dt>
3122b15cb3dSCy Schubert      <dd>Specifies the PPS time offset calibration factor, in seconds
3132b15cb3dSCy Schubert      and fraction, with default 0.0.</dd>
3142b15cb3dSCy Schubert      <dt><a name="fudgetime2"><tt>time2 <i>time</i></tt></a></dt>
315276da39aSCy Schubert      <dd><em>[Primary Unit]</em> Specifies the TPV/TIME time offset
316276da39aSCy Schubert      calibration factor, in seconds and fraction, with default
317276da39aSCy Schubert      0.0.</dd>
3182b15cb3dSCy Schubert      <dt><tt>stratum <i>number</i></tt></dt>
319276da39aSCy Schubert      <dd>Specifies the driver stratum, in decimal from 0 to 15, with
320276da39aSCy Schubert	default 0.</dd>
3212b15cb3dSCy Schubert      <dt><tt>refid <i>string</i></tt></dt>
3222b15cb3dSCy Schubert      <dd>Specifies the driver reference identifier, an ASCII string
3232b15cb3dSCy Schubert	from one to four characters, with default <tt>GPSD</tt>.</dd>
324276da39aSCy Schubert      <dt><tt>flag1 0 | 1</tt></dt><dd><em>[<b>Secondary</b>
325276da39aSCy Schubert	  Unit]</em> When set, flags the secondary clock unit as a
326276da39aSCy Schubert	potential PPS peer as long as good PPS data is available.
327276da39aSCy Schubert      </dd>
328276da39aSCy Schubert      <dt><tt>flag2 0 | 1</tt></dt>
329276da39aSCy Schubert      <dd><em>[Primary Unit]</em> When set, <u>disables</u> the
330276da39aSCy Schubert	processing of incoming PPS records. Intended as an aide to
331276da39aSCy Schubert	test the effects of a PPS dropout when using automatic mode
332276da39aSCy Schubert	(mode 2).
333276da39aSCy Schubert      </dd>
334276da39aSCy Schubert      <dt><tt>flag3 0 | 1</tt></dt><dd><em>[Primary Unit]</em>
335276da39aSCy Schubert      If set, <u>disables</u> the log throttle. Useful when tracking
336276da39aSCy Schubert      problems in the interaction between <i>GPSD</i> and <i>NTPD</i>,
337276da39aSCy Schubert      since now all error events are logged. Persistent/recurrent
338276da39aSCy Schubert      errors can easily fill up the log, so this should only be
339276da39aSCy Schubert      enabled during bug hunts.</dd>
340276da39aSCy Schubert      <dt><tt>flag4 0 | 1</tt></dt><dd><em>[Primary Unit]</em>
341276da39aSCy Schubert	If set, write a clock stats line on every poll cycle.
342276da39aSCy Schubert      </dd>
3432b15cb3dSCy Schubert    </dl>
3442b15cb3dSCy Schubert
345276da39aSCy Schubert    <!-- -- footnotes -------------------------------------------- -->
346276da39aSCy Schubert
347276da39aSCy Schubert    <hr>
348276da39aSCy Schubert    <p><a name="fn1" href="#fn1bl"><sup>1</sup>) </a>Data transmission
349276da39aSCy Schubert      an decoding is done only once by the primary unit. The decoded
350276da39aSCy Schubert      data is then processed independently in both clock units. This
351276da39aSCy Schubert      avoids double transmission over two sockets and decoding the
352276da39aSCy Schubert      same data twice, but the primary unit is always needed as a
353276da39aSCy Schubert      downside of this approach.
354276da39aSCy Schubert    </p>
355276da39aSCy Schubert    <p><a name="fn2" href="#fn2bl"><sup>2</sup>) </a>The clock driver
356276da39aSCy Schubert      suppresses the processing PPS records when the TPV/TIME data
357276da39aSCy Schubert      indicates the receiver has no fix. It can also deal with
358276da39aSCy Schubert      situations where the PPS signal is not delivered
359276da39aSCy Schubert      to <i>GPSD</i>. But once it is available, it is also processed
360276da39aSCy Schubert      and used to create samples. If a receiver cannot be trusted for
361276da39aSCy Schubert      the precision of its PPS signal, it should not be used to create
362276da39aSCy Schubert      a possible PPS peer: These get extra clout and can effectively
363276da39aSCy Schubert      become the sole source of input for the control loop. You do not
364276da39aSCy Schubert      want to use sloppy data for that.
365276da39aSCy Schubert    <hr>
3662b15cb3dSCy Schubert    <p>Additional Information</p>
3672b15cb3dSCy Schubert    <p><a href="../refclock.html">Reference Clock Drivers</a></p>
3682b15cb3dSCy Schubert    <hr>
3692b15cb3dSCy Schubert    <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
3702b15cb3dSCy Schubert  </body></html>
371