Motorola Oncore GPS receiver


Reference ID: GPS
Serial Port: /dev/oncore.serial.0;  9600 baud, 8-bits, no parity.
PPS Port: /dev/oncore.pps.0PPS_CAPTUREASSERT required,  PPS_OFFSETASSERT supported.


This driver supports various models of the Motorola Oncore GPS receivers as long as they support the Motorola Binary Protocol.

The three most interesting versions of the Oncore are the "VP",  the "UT+",  and the "Remote" which is a prepackaged "UT+".  The "VP" is no longer available.

The evaluation kit can also be recommended, it interfaces to a PC straightaway, using the serial (DCD) or parallel port for PPS input and packs the receiver in a nice and sturdy box. Two less expensive interface kits are available from TAPR .

UT+ oncore
Evaluation kit
Oncore Remote

The driver requires a standard PPS interface for the pulse-per-second output from the receiver.  The serial data stream alone does not provide precision time stamps (0-50msec variance, according to the manual), whereas the PPS output is precise down to 50 nsec (1 sigma) for the VP/UT models.

The driver will use the "position hold" mode with user provided coordinates, the receivers built-in site-survey, or a similar algorithm implemented in this driver.

Monitor Data

The driver is quite chatty on stdout if ntpd is run with debugging.  A manual will be required though. Additional information is written to the clockstats file, if configured.

Fudge Factors

time1 time
Specifies the time offset calibration factor, in seconds and fraction, with default 0.0.
time2 time
Not used by this driver.
stratum number
Specifies the driver stratum, in decimal from 0 to 15, with default 0.
refid string
Specifies the driver reference identifier, an ASCII string from one to four characters, with default GPS.
flag1 0 | 1
Not used by this driver.
flag2 0 | 1
Not used by this driver.
flag3 0 | 1
Not used by this driver.
flag4 0 | 1
Not used by this driver.
Additional Information

The driver has been tested on FreeBSD, Linux and SunOS.

There is a driver specific configuration file /etc/ntp.oncore that contains information on the startup mode, the location of the GPS receiver, an offset of the PPS signal from zero, and the cable delay. The offset shifts the PPS signal to avoid interrupt pileups `on' the second, and adjust the timestamp accordingly. See the driver source for information on this file. The default with no file is: no delay, no offset, and a site survey is done to get the location of the gps receiver.

The /etc/ntp.conf file will need a line of the form
       pps /dev/oncore.pps.0 [ assert/clear ] hardpps
if you want the oncore driver to control the kernel PLL. For more information, see the Reference Clock Options page.


Really good.  With the VP/UT+, the generated PPS pulse is referenced to UTC(GPS) with better than 50 nsec (1 sigma) accuracy.  The limiting factor will be the timebase of the computer and the precision with which you can timestamp the rising flank of the PPS signal.  Using FreeBSD,  a FPGA based Timecounter/PPS interface and an ovenized quartz oscillator, that performance has been reproduced.  For more details on this aspect:  Sub-Microsecond timekeeping under FreeBSD

Poul-Henning Kamp (, Reg Clemens (