driver29.html   [plain text]


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

	<head>
		<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
		<title>Trimble Palisade and Thunderbolt Receivers</title>
		<link href="scripts/style.css" type="text/css" rel="stylesheet">
	</head>

	<body bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
		<h1><font size="+2">Trimble Palisade and Thunderbolt Receivers</font>
			<hr>
		</h1>
		<table>
		<tr>
		<td>
		<h2><img src="../pic/driver29.gif" alt="gif" nosave height="100" width="420"></h2>
		</td>
		<td>
		<h2><img src="../pic/thunderbolt.jpg" alt="jpg" nosave height="270" width="420"></h2>
		</td>
		</tr>
		</table>
		<h2><font size="+1">Synopsis</font></h2>
		<table>
			<tr>
				<td>
					<div align="right">
						<tt>Address:&nbsp;</tt></div>
				</td>
				<td><b>127.127.29.<i>u</i></b></td>
			</tr>
			<tr>
				<td>
					<div align="right">
						<tt>Reference ID:</tt></div>
				</td>
				<td><a name="REFID"></a><b>GPS</b></td>
			</tr>
			<tr>
				<td>
					<div align="right">
						<tt>Driver ID:</tt></div>
				</td>
				<td><b>GPS_PALISADE</b></td>
			</tr>
			<tr>
				<td>
					<div align="right">
						<tt>Serial Port:</tt></div>
				</td>
				<td><b>/dev/palisade<i>u</i></b></td>
			</tr>
			<tr>
				<td>
					<div align="right">
						<tt><font size="+1">Serial I/O:</font></tt></div>
				</td>
				<td><b>9600 baud, 8-bits, 1-stop, odd parity</b></td>
			</tr>
			<tr>
			        <td>
					<div align="right">
						<tt><font size="+1">Serial I/O (Thunderbolt):</font></tt></div>
				</td>
				<td><b>9600 baud, 8-bits, 1-stop, no parity</b></td>
			</tr>
		</table>
		<h2><font size="+1">Description</font></h2>
		The <b>refclock_palisade</b> driver supports <a href="http://www.trimble.com/products/ntp">Trimble Navigation's Palisade Smart Antenna GPS receiver</a>.<br>
		Additional software and information about the Palisade GPS is available from: <a href="http://www.trimble.com/oem/ntp">http://www.trimble.com/oem/ntp</a>.<br>
		Latest NTP driver source, executables and documentation is maintained at: <a href="ftp://ftp.trimble.com/pub/ntp">ftp://ftp.trimble.com/pub/ntp</a>
		<p>This documentation describes version 7.12 of the GPS Firmware and version 2.46 (July 15, 1999) and later, of the driver source.<br>&nbsp;</p>
		<p>This documentation describes version 1 of the Thunderbolt Receiver Firmware, no tests have been made on further firmwares, please read "Notes on the Thunderbolt Receiver's Firmware" at the end of this documentation for more information.</p>
		<h2><font size="+1">Operating System Compatibility</font></h2>
		The Palisade driver has been tested on the following software and hardware platforms:<br>&nbsp;
		<center>
			<table>
				<tr>
					<td valign="CENTER" width="23%">Platform</td>
					<td valign="CENTER">Operating System</td>
					<td>NTP Sources</td>
					<td>Accuracy</td>
				</tr>
				<tr>
					<td valign="CENTER" width="23%">i386 (PC)&nbsp;</td>
					<td valign="CENTER">Linux</td>
					<td>NTP Distribution</td>
					<td>10 us</td>
				</tr>
				<tr>
					<td>i386 (PC)&nbsp;</td>
					<td>Windows NT</td>
					<td><a href="ftp://ftp.trimble.com/pub/ntp">ftp://ftp.trimble.com/pub/ntp</a></td>
					<td>1 ms</td>
				</tr>
				<tr>
					<td valign="CENTER" width="23%">SUN</td>
					<td valign="CENTER">Solaris 2.x</td>
					<td>NTP Distribution</td>
					<td>50 us</td>
				</tr>
				<tr>
					<td valign="CENTER" width="23%">Hewlett-Packard</td>
					<td valign="CENTER">HPUX 9, 10, 11</td>
					<td><a href="http://us-support.external.hp.com">http://us-support.external.hp.com</a></td>
					<td>50 us</td>
				</tr>
				<tr>
					<td>Various</td>
					<td>Free BSD</td>
					<td>NTP Distribution</td>
					<td>20 us</td>
				</tr>
			</table>
		</center><P>
		<b>Attention</b>: Thunderbolt Receiver has not being tested on the previous software and hardware plataforms.
		<h2><font size="+1">GPS Receiver</font></h2>
		The Palisade GPS receiver is an 8-channel smart antenna, housing the GPS receiver, antenna and interface in a single unit, and is designed for rooftop deployment in static timing applications.
		<p>Palisade generates a PPS synchronized to UTC within +/- 100 ns.&nbsp; The Palisade's external event input with 40 nanosecond resolution is utilized by the Palisade NTP driver for asynchronous precision time transfer.</p>
		<p>No user initialization of the receiver is required. This driver is compatible with the following versions of Palisade:<br>&nbsp;</p>
		<center>
			<table>
				<tr>
					<td valign="CENTER">
						<center>
							Version</center>
					</td>
					<td valign="TOP">
						<center>
							Event Input</center>
					</td>
					<td valign="CENTER">
						<center>
							Trimble Part Number</center>
					</td>
				</tr>
				<tr>
					<td valign="CENTER">
						<center>
							7.02</center>
					</td>
					<td valign="TOP">
						<center>
							No</center>
					</td>
					<td valign="CENTER">
						<center>
							26664-00</center>
					</td>
				</tr>
				<tr>
					<td align="CENTER" valign="CENTER">
						<center>
							7.02E</center>
					</td>
					<td valign="TOP">
						<center>
							Yes</center>
					</td>
					<td valign="CENTER">
						<center>
							26664-10</center>
					</td>
				</tr>
				<tr>
					<td valign="CENTER">
						<center>
							7.12</center>
					</td>
					<td valign="TOP">
						<center>
							Yes</center>
					</td>
					<td valign="CENTER">
						<center>
							38158-00</center>
					</td>
				</tr>
			</table>
		</center>
		<dl>
			<dl>
				Note: When using Palisade 26664-00, you must set fudge flag2 to 1 in <b>ntp.conf</b>. See <a href="#Configuration">configuration</a>.
			</dl>
			<dl>
				<h3><font size="+1">GPS&nbsp;<a name="Installation"></a>Installation</font></h3>
				A location with unobstructed view of the horizon is recommended. Palisade is designed to be securely mounted atop standard 3/4 inch threaded pipe.
				<p>The 12 conductor (dia. 10 mm)&nbsp; power and I/O cable must be routed from the rooftop site to the NTP server and properly strain relieved.</p>
				<h3><font size="+1">GPS&nbsp;<a name="Connection"></a>Connection</font></h3>
				The Palisade is equipped with dual (A &amp; B) RS-422 serial interfaces and a differential TTL PPS output. An RS-232 / RS-422 Interface Module is supplied with the Palisade NTP Synchronization Kit. Palisade <a href="#PortA">port A</a> must be connected to the NTP host server. Maximum antenna cable length is 500 meters. See the <a href="#Pinouts">pinouts</a> table for detailed connection Information.
				<p>Palisade's <a href="#PortB">port B</a> provides a TSIP (Trimble Standard Interface Protocol) interface for diagnostics, configuration, and monitoring. Port B and the PPS output are not currently used by the Palisade NTP reference clock driver.<br>&nbsp;</p>
			</dl>
		</dl>
		<h2><font size="+1">O/S Serial Port Configuration</font></h2>
		The driver attempts to open the device <b><tt><a href="#REFID">/dev/palisade<i>u</i></a></tt></b> where <b><i>u</i></b> is the NTP refclock unit number as defined by the LSB of the refclock address.&nbsp; Valid refclock unit numbers are 0 - 3.
		<p>The user is expected to provide a symbolic link to an available serial port device.&nbsp; This is typically performed by a command such as:</p>
		<blockquote>
			<tt>ln -s /dev/ttyS0 /dev/palisade0</tt></blockquote>
		Windows NT does not support symbolic links to device files. COM<b>x</b>: is used by the driver, based on the refclock unit number, where unit 1 corresponds to COM<b>1</b>: and unit 3 corresponds to COM3:<br>&nbsp;
		<h2><a name="Configuration"></a><font size="+1">NTP Configuration</font></h2>
		Palisade NTP configuration file <b><tt>&quot;ntp.conf&quot;</tt></b> with event polling:<br>
		<tt>#------------------------------------------------------------------------------</tt><br>
		<tt># The Primary reference</tt><br>
		<tt>server 127.127.29.0 # Trimble Palisade GPS Refclock Unit #0</tt><br>
		<tt>peer terrapin.csc.ncsu.edu # internet server</tt><br>
		<tt># Drift file for expedient re-synchronization after downtime or reboot.</tt><br>
		<tt>driftfile /etc/ntp.drift</tt><br>
		<tt>#------------------------------------------------------------------------------</tt>
		<p>Configuration without event polling:<br>
			<tt>#------------------------------------------------------------------------------</tt><br>
			<tt># The Primary reference</tt><br>
			<tt>server 127.127.29.0 # Trimble Palisade GPS (Stratum 1).</tt><br>
			<tt># Set packet delay</tt><br>
			<tt><a href="#time1">fudge 127.127.29.0 time1 0.020</a></tt><br>
			<tt># and set flag2 to turn off event polling.</tt><br>
			<tt><a href="#flag2">fudge 127.127.29.0 flag2 1</a></tt><br>
			<tt>#------------------------------------------------------------------------------</tt><br>&nbsp;</p>
		
		<h4>Thunderbolt NTP Configuration file</h4>
		<tt>#------------------------------------------------------------------------------</tt>
		<p>Configuration without event polling:<br>
		<tt>#------------------------------------------------------------------------------</tt><br>
		<tt># The Primary reference</tt><br>
		<tt>server 127.127.29.0 mode 2 # Trimble Thunderbolt GPS (Stratum 1).</tt><br>
		<tt># Set packet delay</tt><br>
		<tt><a href="#time1">fudge 127.127.29.0 time1 0.020</a></tt><br>
		<tt># and set flag2 to turn off event polling.</tt><br>
		<tt><a href="#flag2">fudge 127.127.29.0 flag2 1</a></tt><br>
		<tt>#------------------------------------------------------------------------------</tt><br>&nbsp;</p>
		Currently the Thunderbolt mode doesn't support event polling, the reasons are explained on the "Notes on the Thunderbolt Receiver's Firmware" section at the end of this documentation.
		<h2><a name="TimeTransfer"></a><font size="+1">Time Transfer and Polling</font></h2>
		Time transfer to the NTP host is performed via the Palisade's comprehensive time packet output. The time packets are output once per second, and whenever an event timestamp is requested.
		<p>The driver requests an event time stamp at the end of each polling interval, by pulsing the RTS (request to send) line on the serial port. The Palisade GPS responds with a time stamped event packet.</p>
		<p>Time stamps are reported by the Palisade with respect to UTC time. The GPS receiver must download UTC offset information from GPS satellites. After an initial UTC download, the receiver will always start with correct UTC offset information.<br>&nbsp;</p>
		<h2><font size="+1">Run NTP in Debugging Mode</font></h2>
		The following procedure is recommended for installing and testing a Palisade NTP driver:
		<ol>
			<li>Perform initial checkout procedures. Place the GPS receiver outdoors; with clear view of the sky. Allow the receiver to obtain an UTC almanac.
			<li>Verify presence of timing packets by observing the 1 Hz (PPS) led on the interface module. It should flash once per second.
			<li>Connect Palisade's port A to the NTP host.
			<li>Configure NTP and the serial I/O port on the host system.
			<li>Initially use <tt><a href="#flag2">fudge flag2</a></tt> in <b><a href="#Configuration">ntp.conf</a>,</b> to disable event polling (see configuration).
			<li>Run NTP in debug mode (-d -d), to observe Palisade_receive events.
			<li>The driver reports the <a href="#TrackingStatus">tracking status of the receiver</a>. Make sure it is tracking several satellites.
			<li>Remove fudge flag2 and restart <b>ntpd</b> in debug mode to observe palisade_receive events.
			<li>If event polling fails, verify the <a href="#Pinouts">connections</a> and that the host hardware supports RTS control.
		</ol>
		<h2><font size="+1">Event Logging</font></h2>
		System and Event log entries are generated by NTP to report significant system events. Administrators should monitor the system log to observe NTP error messages. Log entries generated by the Palisade NTP reference clock driver will be of the form:
		<blockquote>
			<pre>Nov 14 16:16:21 terrapin ntpd[1127]: Palisade #0: <i>message</i></pre>
		</blockquote>
		<h2><font size="+1">Fudge Factors</font></h2>
		<dl>
			<dt><a name="time1"></a><tt><font size="+1"><a href="#Configuration">time1 <i>time</i></a></font></tt>
			<dd>Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. If event capture is not used, time1 should be set to 20 milliseconds to correct serial line and operating system delays incurred in capturing time stamps from the synchronous packets.
			<dt><tt><font size="+1">stratum <i>number</i></font></tt>
			<dd>Specifies the driver stratum, in decimal from 0 to 15, with default 0.
			<dt><tt><font size="+1"><a href="#REFID">refid <i>string</i></a></font></tt>
			<dd>Specifies the driver reference identifier, <b>GPS</b>.
			<dt><a name="flag2"></a><tt><font size="+1"><a href="#Configuration">flag2 0 | 1</a></font></tt>
			<dd>When set to 1, driver does not use hardware event capture. The synchronous packet output by the receiver at the beginning of each second is time stamped by the driver. If triggering the event pulse fails, the driver falls back to this mode automatically.
		</dl>
		<h2><font size="+1">Mode Parameter</font></h2>
		<dl>
			<dt><tt><font size="+1">mode <i>number</i></font></tt>
			<dd>The mode parameter to the server command specifies the specific hardware this driver is for. The default is 0 for a normal Trimble Palisade. The other options are <b>1</b> for an <b>Endrun Praecis</b> in Trimble emulation mode, and <b>2</b> for the <b>Trimble Thunderbolt</b> GPS Disciplined Clock Receiver.
		</dl>
		<h2><font size="+1">DEFINEs</font></h2>
		The following constants are defined in the driver source code. These defines may be modified to improve performance or adapt to new operating systems.<br>&nbsp;
		<center>
			<table border>
				<tr>
					<td><b>Label</b></td>
					<td>Definition</td>
					<td>Default Value</td>
				</tr>
				<tr>
					<td>DEVICE</td>
					<td>The serial port device to be used by the driver</td>
					<td>/dev/palisade<b><i>u</i></b></td>
				</tr>
				<tr>
					<td>PRECISION</td>
					<td>Accuracy of time transfer</td>
					<td>1 microsecond</td>
				</tr>
				<tr>
					<td>CURRENT_UTC</td>
					<td>Valid GPS - UTC offset</td>
					<td>13</td>
				</tr>
				<tr>
					<td>SPEED232</td>
					<td>Host RS-232 baud rate</td>
					<td>B9600</td>
				</tr>
				<tr>
					<td>TRMB_MINPOLL&nbsp;</td>
					<td>Minimum polling interval</td>
					<td>5 (32 seconds)</td>
				</tr>
				<tr>
					<td>TRMB_MAXPOLL</td>
					<td>Maximum interval between polls</td>
					<td>7 (128 seconds)</td>
				</tr>
			</table>
		</center>
		<h2><a name="DataFormat"></a><font size="+1">Data Format</font></h2>
		Palisade port A can output two synchronous time packets. The NTP driver can use either packet for synchronization. Packets are formatted as follows:
		<h3><b><font size="+0">Packet 8F-AD (Primary NTP Packet)</font></b></h3>
		<center>
			<table>
				<tr>
					<td>Byte</td>
					<td>Item</td>
					<td>Type</td>
					<td>Meaning</td>
				</tr>
				<tr>
					<td>0</td>
					<td>Sub-Packet ID</td>
					<td>BYTE</td>
					<td>Subcode 0xAD</td>
				</tr>
				<tr>
					<td>1 - 2</td>
					<td>Event Count</td>
					<td>INTEGER</td>
					<td>External event count recorded (0 = PPS)</td>
				</tr>
				<tr>
					<td>3 - 10</td>
					<td>Fractional Second</td>
					<td>DOUBLE</td>
					<td>Time elapsed in current second (s)</td>
				</tr>
				<tr>
					<td>11</td>
					<td>Hour</td>
					<td>BYTE</td>
					<td>Hour (0 - 23)</td>
				</tr>
				<tr>
					<td>12</td>
					<td>Minute</td>
					<td>BYTE</td>
					<td>Minute (0 - 59)</td>
				</tr>
				<tr>
					<td>13</td>
					<td>Second</td>
					<td>BYTE</td>
					<td>Second (0 - 59; 60 = leap)</td>
				</tr>
				<tr>
					<td>14</td>
					<td>Day</td>
					<td>BYTE</td>
					<td>Date (1 - 31)</td>
				</tr>
				<tr>
					<td>15</td>
					<td>Month</td>
					<td>BYTE</td>
					<td>Month (1 - 12)</td>
				</tr>
				<tr>
					<td>16 - 17</td>
					<td>Year</td>
					<td>INTEGER</td>
					<td>Year (4 digit)</td>
				</tr>
				<tr>
					<td>18</td>
					<td>Receiver Status</td>
					<td>BYTE</td>
					<td>Tracking Status</td>
				</tr>
				<tr>
					<td>19</td>
					<td>UTC Flags</td>
					<td>BYTE</td>
					<td>Leap Second Flags</td>
				</tr>
				<tr>
					<td>20</td>
					<td>Reserved</td>
					<td>BYTE</td>
					<td>Contains 0xFF</td>
				</tr>
				<tr>
					<td>21</td>
					<td>Reserved</td>
					<td>BYTE</td>
					<td>Contains 0xFF</td>
				</tr>
			</table>
		</center>
		
		<blockquote>
			<h4>Leap Second Flag Definition:</h4>Bit 0:&nbsp; (1) UTC Time is available<br>
			Bits 1 - 3: Undefined<br>Bit 4:&nbsp; (1) Leap Scheduled: Leap second pending asserted by GPS control segment.<br>Bit 5:&nbsp; (1) Leap Pending: set 24 hours before, until beginning of leap second.<br>Bit 6:&nbsp; (1) GPS Leap Warning: 6 hours before until 6 hours after leap event<br>Bit 7:&nbsp; (1) Leap In Progress. Only set during the leap second.
			<h4><a name="TrackingStatus"></a>Tracking Status Flag Definitions:</h4>
		</blockquote>
		<center>
			<table width="712" border="0" cellspacing="0">
				<tr>
					<td valign="CENTER" width="5%">Code</td>
					<td valign="CENTER" width="59%">Meaning</td>
					<td>Accuracy</td>
					<td>Receiver Mode</td>
				</tr>
				<tr>
					<td>0</td>
					<td>Receiver is Navigating</td>
					<td>+/- 1 us</td>
					<td>Self Survey</td>
				</tr>
				<tr>
					<td valign="CENTER" width="5%">1</td>
					<td valign="CENTER" width="59%">Static 1 Sat. Timing Mode&nbsp;</td>
					<td>+/- 1 us</td>
					<td>1-D Timing</td>
				</tr>
				<tr>
					<td valign="CENTER" width="5%">2</td>
					<td valign="CENTER" width="59%">Approximate Time</td>
					<td>20 - 50 ms</td>
					<td>Acquisition</td>
				</tr>
				<tr>
					<td valign="CENTER" width="5%">3</td>
					<td valign="CENTER" width="59%">Startup</td>
					<td>N/A</td>
					<td>Initialization</td>
				</tr>
				<tr>
					<td valign="CENTER" width="5%">4</td>
					<td valign="CENTER" width="59%">Startup</td>
					<td>N/A</td>
					<td>Initialization</td>
				</tr>
				<tr>
					<td valign="CENTER" width="5%">5</td>
					<td valign="CENTER" width="59%">Dilution of Position too High&nbsp;</td>
					<td>5 ppm</td>
					<td>Self Survey</td>
				</tr>
				<tr>
					<td valign="CENTER" width="5%">6</td>
					<td valign="CENTER" width="59%">Static 1 Sat. Timing: Sat. not usable</td>
					<td>5 ppm</td>
					<td>1-D Timing</td>
				</tr>
				<tr>
					<td valign="CENTER" width="5%">7</td>
					<td valign="CENTER" width="59%">No Satellites Usable</td>
					<td>N/A</td>
					<td>Self Survey</td>
				</tr>
				<tr>
					<td valign="CENTER" width="5%">8</td>
					<td valign="CENTER" width="59%">Only 1 Satellite Usable</td>
					<td>20 - 50 ms</td>
					<td>Self Survey</td>
				</tr>
				<tr>
					<td valign="CENTER" width="5%">9</td>
					<td valign="CENTER" width="59%">Only 2 Satellite Usable</td>
					<td>20 - 50 ms</td>
					<td>Self Survey</td>
				</tr>
				<tr>
					<td valign="CENTER" width="5%">10</td>
					<td valign="CENTER" width="59%">Only 3 Satellites Usable</td>
					<td>20 - 50 ms</td>
					<td>Self Survey</td>
				</tr>
				<tr>
					<td valign="CENTER" width="5%">11</td>
					<td valign="CENTER" width="59%">Invalid Solution</td>
					<td>N/A</td>
					<td>Error</td>
				</tr>
				<tr>
					<td valign="CENTER" width="5%">12</td>
					<td valign="CENTER" width="59%">Differential Corrections&nbsp;</td>
					<td>N/A</td>
					<td>N/A</td>
				</tr>
				<tr>
					<td valign="CENTER" width="5%">13</td>
					<td valign="CENTER" width="59%">Overdetermined Fixes</td>
					<td>+/- 100 ns</td>
					<td>Timing Steady State</td>
				</tr>
			</table>
		</center>
		<h3><b><font size="+0">Packet 8F-0B (Comprehensive Timing Packet)</font></b></h3>
		<center>
			<table border="0" cellspacing="0">
				<tr>
					<td valign="CENTER" width="9%">Byte</td>
					<td valign="CENTER" width="27%">Item</td>
					<td valign="CENTER" width="16%">Type</td>
					<td valign="CENTER" width="48%">Meaning</td>
				</tr>
				<tr>
					<td valign="CENTER" width="9%">0</td>
					<td valign="CENTER" width="27%">Sub-Packet ID</td>
					<td valign="CENTER" width="16%">BYTE</td>
					<td valign="CENTER" width="48%">Subcode 0x0B</td>
				</tr>
				<tr>
					<td valign="TOP" width="9%">1 - 2</td>
					<td valign="TOP" width="27%">Event Count</td>
					<td valign="TOP" width="16%">INTEGER</td>
					<td valign="TOP" width="48%">External event count recorded (0 = PPS)</td>
				</tr>
				<tr>
					<td valign="TOP" width="9%">3 - 10</td>
					<td valign="TOP" width="27%">UTC / GPS TOW</td>
					<td valign="TOP" width="16%">DOUBLE</td>
					<td valign="TOP" width="48%">UTC / GPS time of week (seconds)</td>
				</tr>
				<tr>
					<td valign="CENTER" width="9%">11</td>
					<td valign="CENTER" width="27%">Date</td>
					<td valign="CENTER" width="16%">BYTE</td>
					<td valign="CENTER" width="48%">Day of Month</td>
				</tr>
				<tr>
					<td valign="CENTER" width="9%">12</td>
					<td valign="CENTER" width="27%">Month</td>
					<td valign="CENTER" width="16%">BYTE</td>
					<td valign="CENTER" width="48%">Month of Event</td>
				</tr>
				<tr>
					<td valign="CENTER" width="9%">13 - 14</td>
					<td valign="CENTER" width="27%">Year</td>
					<td valign="CENTER" width="16%">INT</td>
					<td valign="CENTER" width="48%">Year of event</td>
				</tr>
				<tr>
					<td valign="TOP" width="9%">15</td>
					<td valign="TOP" width="27%">Receiver Mode</td>
					<td valign="TOP" width="16%">BYTE</td>
					<td valign="TOP" width="48%">Receiver operating dimensions:&nbsp;<br>0: Horizontal (2D)&nbsp;<br>1: Full Position (3D)&nbsp;<br>2: Single Satellite (0D)&nbsp;<br>3: Automatic (2D / 3D)&nbsp;<br>4: DGPS reference&nbsp;<br>5: Clock hold (2D)&nbsp;<br>
						6: Over determined Clock</td>
				</tr>
				<tr>
					<td valign="CENTER" width="9%">15 - 17</td>
					<td valign="CENTER" width="27%">UTC Offset</td>
					<td valign="CENTER" width="16%">INTEGER</td>
					<td valign="CENTER" width="48%">UTC Offset value (seconds)</td>
				</tr>
				<tr>
					<td valign="CENTER" width="9%">18 - 25</td>
					<td valign="CENTER" width="27%">Oscillator Bias</td>
					<td valign="CENTER" width="16%">DOUBLE</td>
					<td valign="CENTER" width="48%">Oscillator BIAS (meters)</td>
				</tr>
				<tr>
					<td valign="TOP" width="9%">26 - 33</td>
					<td valign="TOP" width="27%">Oscillator Drift Rate</td>
					<td valign="TOP" width="16%">DOUBLE</td>
					<td valign="TOP" width="48%">Oscillator Drift (meters / second)</td>
				</tr>
				<tr>
					<td valign="CENTER" width="9%">34 - 37</td>
					<td valign="CENTER" width="27%">Bias Uncertainty</td>
					<td valign="CENTER" width="16%">SINGLE</td>
					<td valign="CENTER" width="48%">Oscillator bias uncertainty (meters)</td>
				</tr>
				<tr>
					<td valign="CENTER" width="9%">38 - 41</td>
					<td valign="CENTER" width="27%">Drift Uncertainty</td>
					<td valign="CENTER" width="16%">SINGLE</td>
					<td valign="CENTER" width="48%">Oscillator bias rate uncertainty (m / sec)</td>
				</tr>
				<tr>
					<td valign="CENTER" width="9%">42 - 49</td>
					<td valign="CENTER" width="27%">Latitude</td>
					<td valign="CENTER" width="16%">DOUBLE</td>
					<td valign="CENTER" width="48%">Latitude in radians</td>
				</tr>
				<tr>
					<td valign="CENTER" width="9%">50 - 57</td>
					<td valign="CENTER" width="27%">Longitude</td>
					<td valign="CENTER" width="16%">DOUBLE</td>
					<td valign="CENTER" width="48%">Longitude in radians</td>
				</tr>
				<tr>
					<td valign="CENTER" width="9%">58 - 65</td>
					<td valign="CENTER" width="27%">Altitude</td>
					<td valign="CENTER" width="16%">DOUBLE</td>
					<td valign="CENTER" width="48%">Altitude above mean sea level, in meters</td>
				</tr>
				<tr>
					<td valign="CENTER" width="9%">66 - 73</td>
					<td valign="CENTER" width="27%">Satellite ID</td>
					<td valign="CENTER" width="16%">BYTE</td>
					<td valign="CENTER" width="48%">SV Id No. of tracked satellites</td>
				</tr>
			</table>
		</center>
		<h3>Thunderbolt Timing packets Data Format</h3>
		Thunderbolt can output 2 synchronous packets.
		<h4><b>Primary Timing Packet - 0x8FAB</h4>
		<center>
			<table>
				<tr>
					<td><b>Byte</b></td>
					<td><b>Bit</b></td>
					<td><b>Item</b></td>
					<td><b>Type</b></td>
					<td><b>Value</b></td>
					<td><b>Description</b></td>
				</tr>
				<tr>
					<td>0</td>
					<td></td>
					<td>Subcode</td>
					<td>UINT8</td>
					<td></td>
					<td>0xAB</td>
				</tr>
				<tr>
					<td>1-4</td>
					<td></td>
					<td>Time of Week</td>
					<td>UINT32</td>
					<td></td>
					<td>GPS seconds of week</td>
				</tr>
				<tr>
					<td>5-6</td>
					<td></td>
					<td>Week Number</td>
					<td>UINT16</td>
					<td></td>
					<td>GPS Week Number</td>
				</tr>
				<tr>
					<td>7-8</td>
					<td></td>
					<td>UTC Offset</td>
					<td>SINT16</td>
					<td></td>
					<td>UTC Offset (seconds)</td>
				</tr>
				<tr>
					<td valign="top">9</td>
					<td><table><tr><td>0</td></tr><tr><td>1</td></tr><tr><td>2</td></tr><tr><td>3</tr><tr><td>4</tr></table></td>
					<td valign="top">Timing Flag</td>
					<td valign="top">Bit field</td>
					<td valign="top"><table><tr><td>0 or 1</td></tr><tr><td>0 or 1</td></tr><tr><td>0 or 1</td></tr><tr><td>0 or 1</tr><tr><td>0 or 1</tr></table></td></td>
					<td valign="top"><table><tr><td>GPS Time or UTC Time</td></tr><tr><td>GPS PPS or UTC PPS</td></tr><tr><td>time is set or time is not set</td></tr><tr><td>have UTC info or no UTC info</td></tr><tr><td>Time from GPS or time from user</td></tr></table></td>
				</tr>
				<tr>
					<td>10</td>
					<td></td>
					<td>Seconds</td>
					<td>UINT8</td>
					<td>0-59</td>
					<td>(60 for UTC leap second event)</td>
				</tr>
				<tr>
					<td>11</td>
					<td></td>
					<td>Minutes</td>
					<td>UINT8</td>
					<td>0-59</td>
					<td>Minutes of Hour</td>
				</tr>
				<tr>
					<td>12</td>
					<td></td>
					<td>Hours</td>
					<td>UINT8</td>
					<td>0-23</td>
					<td>Hour of Day</td>
				</tr>
				<tr>
					<td>13</td>
					<td></td>
					<td>Day of Month</td>
					<td>UINT8</td>
					<td>1-31</td>
					<td>Day of Month</td>
				</tr>
				<tr>
					<td>14</td>
					<td></td>
					<td>Month</td>
					<td>UINT8</td>
					<td>1-12</td>
					<td>Month of Year</td>
				</tr>
				<tr>
					<td>15-16</td>
					<td></td>
					<td>Year</td>
					<td>UINT16</td>
					<td></td>
					<td>Four digits of Year (e.g. 1998)</td>
				</tr>
			</table>
		</center>
		<h4><b>Supplemental Timing Packet - 0x8FAC</h4>
		<center>
			<table>
				<tr>
					<td><b>Byte</b></td>
					<td><b>Bit</b></td>
					<td><b>Item</b></td>
					<td><b>Type</b></td>
					<td><b>Value</b></td>
					<td><b>Description</b></td>
				</tr>
				<tr>
					<td>0</td>
					<td></td>
					<td>Subcode</td>
					<td>UINT8</td>
					<td></td>
					<td>0xAC</td>
				</tr>
				<tr>
					<td valign="top">1</td>
					<td></td>
					<td valign="top">Receiver Mode</td>
					<td valign="top">UINT8</td>
					<td valign="top"><table><tr><td>0</td></tr><tr><td>1</td></tr><tr><td>2</td></tr><tr><td>3</td></tr><tr><td>4</td></tr><tr><td>5</td></tr><tr><td>6</td></tr></table></td>
					<td valign="top"><table><tr><td>Automatic (2D/3D)</td></tr><tr><td>Single Satellite (Time)</td></tr><tr><td>Horizontal (2D)</td></tr><tr><td>Full Position (3D)</td></tr><tr><td>DGPS Reference</td></tr><tr><td>Clock Hold (2D)</td></tr><tr><td>Overdetermined Clock</td></tr></table></td>
				</tr>
				<tr>
					<td valign="top">2</td>
					<td></td>
					<td valign="top">Disciplining Mode</td>
					<td valign="top">UINT8</td>
					<td valign="top"><table><tr><td>0</td></tr><tr><td>1</td></tr><tr><td>2</td></tr><tr><td>3</td></tr><tr><td>4</td></tr><tr><td>5</td></tr><tr><td>6</td></tr></table></td>
					<td valign="top"><table><tr>Normal<td></td></tr><tr><td>Power-Up</td></tr><tr><td>Auto Holdover</td></tr><tr><td>Manual Holdover</td></tr><tr><td>Recovery</td></tr><tr><td>Not Used</td></tr><tr><td>Disciplining disabled</td></tr></table></td>
				</tr>
				<tr>
				        <td>3</td>
					<td></td>
					<td>Self-Survey Progress</td>
					<td>UINT 8</td>
					<td>0-100%</td>
					<td></td>
				<tr>
					<td>4-7</td>
					<td></td>
					<td>Holdover Duration</td>
					<td>UINT 32</td>
					<td></td>
					<td>seconds</td>
				</tr>
				<tr>
					<td valign="top">8-9</td>
					<td><table><tr><td>0</td></tr><tr><td>1</td></tr><tr><td>2</td></tr><tr><td>3</tr><tr><td>4</tr></table></td>
					<td valign="top">Critical Alarms</td>
					<td valign="top">UINT16</td>
					<td valign="top">Bit field</td>
					<td valign="top"><table><tr><td>ROM checksum error</td></tr><tr><td>RAM check has failed</td></tr><tr><td>Power supply failure</td></tr><tr><td>FPGA check has failed</td></tr><tr><td>Oscillator control voltage at rail</td></tr></table></td>
				</tr>
				<tr>
					<td valign="top">10-11</td>
					<td valign="top"><table><tr><td>0</td></tr><tr><td>1</td></tr><tr><td>2</td></tr><tr><td>3</tr><tr><td>4</tr><tr><td>5</td></tr><tr><td>6</td></tr></table></td>
					<td valign="top">Minor Alarms</td>
					<td valign="top">UINT16</td>
					<td valign="top">Bit field</td>
					<td valign="top"><table><tr><td>Normal</td></tr><tr><td>Power-Up</td></tr><tr><td>Auto Holdover</td></tr><tr><td>Manual Holdover</tr><tr><td>Recovery</tr><tr><td>Not Used</td></tr><tr><td>Disciplining disabled</td></tr></table></td>
				</tr>
				<tr>
					<td valign="top">12</td>
					<td></td>
					<td valign="top">GPS Decoding Status</td>
					<td valign="top">UINT8</td>
					<td valign="top"><table><tr><td>0</td></tr><tr><td>1</td></tr><tr><td>3</td></tr><tr><td>8</tr><tr><td>9</tr><tr><td>0x0A</td></tr><tr><td>0x0B</td></tr><tr><td>0x0C</td></tr><tr><td>0x10</tr></table></td>
					<td valign="top"><table><tr><td>Doing fixes</td></tr><tr><td>Don t have GPS time</td></tr><tr><td>PDOP is too high</td></tr><tr><td>No usable sats</tr><tr><td>Only 1 usable sat</tr><tr><td>Only 2 usable sats</td></tr><tr><td>Only 3 usable sats</td></tr><tr><td>The chosen sat is unusable</td></tr><tr><td>TRAIM rejected the fix</tr></table></td>
				</tr>
				<tr>
					<td valign="top">13</td>
					<td></td>
					<td valign="top">Disciplining Activity</td>
					<td valign="top">UINT8</td>
					<td><table><tr><td>0</td></tr><tr><td>1</td></tr><tr><td>2</td></tr><tr><td>3</tr><tr><td>4</tr><tr><td>5</td></tr><tr><td>6</td></tr><tr><td>7</td></tr><tr><td>8</tr></table></td>
					<td><table><tr><td>Phase locking</td></tr><tr><td>Oscillator warming up</td></tr><tr><td>Frequency locking</td></tr><tr><td>Placing PPS</tr><tr><td>Initializing loop filter</tr><tr><td>Compensating OCXO</td></tr><tr><td>Inactive</td></tr><tr><td>Not used</td></tr><tr><td>Recovery mode</tr></table></td>
				</tr>
				<tr>
					<td>14</td>
					<td></td>
					<td>Spare Status 1</td>
					<td>UINT8</td>
					<td>0</td>
					<td></td>
				</tr>
				<tr>
					<td>15</td>
					<td></td>
					<td>Spare Status 2</td>
					<td>UINT8</td>
					<td>0</td>
					<td></td>
				</tr>
				<tr>
					<td>16-19</td>
					<td></td>
					<td>PPS Offset</td>
					<td>Single</td>
					<td></td>
					<td>Estimate of UTC/GPS offset (ns)</td>
				</tr>
				<tr>
				        <td>20-23</td>
					<td></td>
					<td>10 MHz Offset</td>
					<td>Single</td>
					<td></td>
					<td>Estimate of UTC/GPS offset (ns)</td>
				</tr>
				<tr>
				        <td>24-27</td>
					<td></td>
					<td>DAC Value</td>
					<td>UINT32</td>
					<td></td>
					<td>Offset binary (0x00 - 0xFFFFF)</td>
				</tr>
				<tr>
				        <td>28-31</td>
					<td></td>
					<td>DAC Voltage</td>
					<td>Single</td>
					<td></td>
					<td>Volts</td>
				</tr>
				<tr>
				        <td>32-35</td>
					<td></td>
					<td>Temperature</td>
					<td>Single</td>
					<td></td>
					<td>degrees C</td>
				</tr>
				<tr>
				        <td>36-43</td>
					<td></td>
					<td>Latitude</td>
					<td>Double</td>
					<td></td>
					<td>radians</td>
				</tr>
				<tr>
				        <td>44-51</td>
					<td></td>
					<td>Longitude</td>
					<td>Double</td>
					<td></td>
					<td>radians</td>
				</tr>
				<tr>
				        <td>52-59</td>
					<td></td>
					<td>Altitude</td>
					<td>Double</td>
					<td></td>
					<td>Meters</td>
				</tr>
				<tr>
				        <td>60-67</td>
					<td></td>
					<td>Spare</td>
					<td></td>
					<td></td>
					<td>For Future Expantion</td>
				</tr>
			</table>
		</center>
		<h2><a name="Pinouts"></a><font size="+1">Pinouts</font></h2>
		<a href="#Connection">The following connections are required when connecting Palisade with a host:</a><br>&nbsp;<br>&nbsp;
		<center>
			<table>
				<tr>
					<td><u>Description</u></td>
					<td><b>Host</b></td>
					<td></td>
					<td></td>
					<td><b>Palisade&nbsp;</b></td>
					<td></td>
					<td></td>
				</tr>
				<tr>
					<td><a name="PortA"></a><b>Port A</b></td>
					<td><u>DB-9</u></td>
					<td><u>DB-25</u></td>
					<td></td>
					<td><u>RS-232</u></td>
					<td><u>RS-422</u></td>
					<td><u>Palisade Pin</u></td>
				</tr>
				<tr>
					<td>Receive Data&nbsp;</td>
					<td>2</td>
					<td>3</td>
					<td>&lt;--&gt;</td>
					<td>Green</td>
					<td>Green / Blue</td>
					<td>8 (T-) &amp; 10 (T+)</td>
				</tr>
				<tr>
					<td>Request to Send</td>
					<td>7</td>
					<td>4</td>
					<td>&lt;--&gt;</td>
					<td>Gray</td>
					<td>Gray / White</td>
					<td>6 (R-) &amp; 7 (R+)</td>
				</tr>
				<tr>
					<td>Signal Ground</td>
					<td>5</td>
					<td>7</td>
					<td>&lt;--&gt;</td>
					<td>Black</td>
					<td>Black</td>
					<td>9 (GND)</td>
				</tr>
				<tr>
					<td></td>
					<td></td>
					<td></td>
					<td></td>
					<td></td>
					<td></td>
					<td></td>
				</tr>
				<tr>
					<td><a name="PortB"></a><b>Port B</b></td>
					<td></td>
					<td></td>
					<td></td>
					<td></td>
					<td></td>
					<td></td>
				</tr>
				<tr>
					<td>Receive Data&nbsp;</td>
					<td>2</td>
					<td>3</td>
					<td>&lt;--&gt;</td>
					<td>Brown</td>
					<td>Brown / Yellow</td>
					<td>4 (T-) &amp; 5 (T+)</td>
				</tr>
				<tr>
					<td>Transmit Data</td>
					<td>3</td>
					<td>2</td>
					<td>&lt;--&gt;</td>
					<td>Violet</td>
					<td>Orange/ Violet</td>
					<td>2 (R-) &amp; 3 (R+)</td>
				</tr>
				<tr>
					<td>Signal Ground</td>
					<td>5</td>
					<td>7</td>
					<td>&lt;--&gt;</td>
					<td>Black</td>
					<td>Black</td>
					<td>9 (GND)</td>
				</tr>
			</table>
		</center>
		<blockquote>
			Note: If driving the RS-422 inputs on the Palisade single ended, i.e. using the Green and Gray connections only, does not work on all serial ports. Use of the Palisade NTP Synchronization Interface Module is recommended.</blockquote>
		<blockquote>
			The 12 pin connector pinout definition:<br>
			Face the round 12 pin connector at the end of the cable, with the notch turned upwards.<br>
			Pin 1 is to the left of the notch. Pins 2 - 8 wrap around the bottom, counterclockwise to pin 9 on the right of the notch. Pin 10 is just below the notch. Pins 10 (top), 11 (bottom left) and 12 (bottom right) form a triangle in the center of the connector.</blockquote>
		<blockquote>
			<a name="SIM"></a>Pinouts for the Palisade NTP host adapter (Trimble PN 37070) DB-25 M connector are as follows:</blockquote>
		<center>
			<table width="682" border="0" cellspacing="0">
				<tr>
					<td valign="CENTER" width="12%">DB-25M</td>
					<td valign="CENTER" width="31%">Conductor&nbsp;</td>
					<td valign="CENTER" width="16%">Palisade</td>
					<td valign="CENTER" width="41%">Description</td>
				</tr>
				<tr>
					<td valign="CENTER" width="12%">1&nbsp;</td>
					<td valign="CENTER" width="31%">Red</td>
					<td valign="CENTER" width="16%">1</td>
					<td valign="CENTER" width="41%">Power</td>
				</tr>
				<tr>
					<td valign="CENTER" width="12%">7&nbsp;</td>
					<td valign="CENTER" width="31%">Black</td>
					<td valign="CENTER" width="16%">9</td>
					<td valign="CENTER" width="41%">Ground</td>
				</tr>
				<tr>
					<td valign="CENTER" width="12%">9</td>
					<td valign="CENTER" width="31%">Black/White</td>
					<td valign="CENTER" width="16%">12</td>
					<td valign="CENTER" width="41%">PPS -</td>
				</tr>
				<tr>
					<td valign="CENTER" width="12%">10&nbsp;</td>
					<td valign="CENTER" width="31%">Green</td>
					<td valign="CENTER" width="16%">8</td>
					<td valign="CENTER" width="41%">Transmit Port A (T-)</td>
				</tr>
				<tr>
					<td valign="CENTER" width="12%">11&nbsp;</td>
					<td valign="CENTER" width="31%">Brown</td>
					<td valign="CENTER" width="16%">4</td>
					<td valign="CENTER" width="41%">Transmit Port B (T-)</td>
				</tr>
				<tr>
					<td valign="CENTER" width="12%">12&nbsp;</td>
					<td valign="CENTER" width="31%">Gray</td>
					<td valign="CENTER" width="16%">7</td>
					<td valign="CENTER" width="41%">Receive Port A (R+)</td>
				</tr>
				<tr>
					<td valign="CENTER" width="12%">13</td>
					<td valign="CENTER" width="31%">Orange</td>
					<td valign="CENTER" width="16%">3</td>
					<td valign="CENTER" width="41%">Receive Port B (R+)</td>
				</tr>
				<tr>
					<td valign="CENTER" width="12%">21</td>
					<td valign="CENTER" width="31%">Orange/White</td>
					<td valign="CENTER" width="16%">11</td>
					<td valign="CENTER" width="41%">PPS +</td>
				</tr>
				<tr>
					<td valign="CENTER" width="12%">22</td>
					<td valign="CENTER" width="31%">Blue</td>
					<td valign="CENTER" width="16%">10</td>
					<td valign="CENTER" width="41%">Transmit Port A (T+)</td>
				</tr>
				<tr>
					<td valign="CENTER" width="12%">23</td>
					<td valign="CENTER" width="31%">Yellow</td>
					<td valign="CENTER" width="16%">5</td>
					<td valign="CENTER" width="41%">Transmit Port B (T+)</td>
				</tr>
				<tr>
					<td valign="CENTER" width="12%">24</td>
					<td valign="CENTER" width="31%">White</td>
					<td valign="CENTER" width="16%">6</td>
					<td valign="CENTER" width="41%">Receive Port A (R-)</td>
				</tr>
				<tr>
					<td valign="CENTER" width="12%">25</td>
					<td valign="CENTER" width="31%">Violet</td>
					<td valign="CENTER" width="16%">2</td>
					<td valign="CENTER" width="41%">Receive Port B (R-)</td>
				</tr>
			</table>
		</center>

		<b><h3>Notes on the Thunderbolt Receiver's Firmware</h3></b>

		The support for Thunderbolt Receiver in the palisade driver doesn't support (for now) event-polling, the reason is that the Thunderbolt receiver the patch is written for doesn't support time-on-request, so you just have to sit there and wait for the time to arrive with the PPS. We tried to contact Trimble because there's presumably a firmware update that support it, but we didn't have much luck.
Here is a link explaining the situation:<p>
<a href="https://lists.ntp.isc.org/pipermail/hackers/2006-April/002216.html">https://lists.ntp.isc.org/pipermail/hackers/2006-April/002216.html
		<p></p>
		<hr>
		<p>Questions or Comments:<br>
			<a href="mailto:sven_dietrich@trimble.com">Sven Dietrich</a><br>
			<a href="http://www.trimble.com/">Trimble Navigation Ltd.</a></p>
			<a href="mailto:fernandoph@iar.unlp.edu.ar">Fernando P. Hauscarriaga</a><br>
		<p>(last updated January 15, 2007)</p>
		<hr>
		<script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
		;
	</body>

</html>