@DevOpsSummit Authors: Zakia Bouachraoui, Stackify Blog, Jnan Dash, Liz McMillan, Janakiram MSV

Related Topics: @DevOpsSummit, Java IoT, Agile Computing

@DevOpsSummit: Blog Post

How to Add a GPS Time Source to ntpd | @DevOpsSummit #DevOps

It's also possible to feed the time information to ntpd as a back-up time source or as a highly accurate time source


How to Add a GPS Time Source to ntpd
by Jimmy Tang

USB GPS dongles have come down significantly in price in recent years and I picked one up to play with recently.

Apart from using a GPS module to report your latitude, longitude, altitude and time for mapping applications, it's also possible to feed the time information to ntpd as a back-up time source or as a highly accurate time source depending on the GPS module you end up getting.

The module that I use in this blog post is a Columbus v800 which was reasonably cheap (around 35USD of ebay), I had originally bought it for recording my GPS tracks on long haul flights on my laptop.

To add the USB GPS time source to ntpd, first install ntpd and the needed GPS related daemons and tools.

On a recent Ubuntu machine I did the following, this should work on a recent Debian machine as well.

apt-get install ntpd gpsd-clients gpsd gpsd-clients

Once the tools are installed, edit `/etc/default/gpsd` and modify the like that reads:


To this:


The above change will make the GPS look for satellites as soon as it starts up. Gpsd presents data to the user in a number of ways; in this case gpsd is already writing information out to a shared memory segment that ntpd understands as it usually follows the NMEA standard - some more information can be found herehttp://www.catb.org/gpsd/NMEA.html.

Once gpsd is restarted,  verify that you are receiving data by running the `cgps` command from a terminal window. If it works, this would be the type of output that is expected:


Hit ctrl-c and exit from this application. Once the GPS module is functioning as expected, ntpd must be configured to use GPS dongle as a time source.

Add the following to `/etc/ntp.conf`

# GPS Serial data reference
server minpoll 4 maxpoll 4
fudge time1 0.0 refid GPS

# GPS PPS reference
server minpoll 4 maxpoll 4 prefer
fudge refid PPS

The above adds two sources - the GPS time source from the serial data reference, a generic time source available on almost all GPS dongles; and the PPS reference, not always available on the cheaper GPS dongles but it is far more accurate if it is available. See http://www.catb.org/gpsd/hardware.html for a list of recommended GPS modules that have PPS output.

Once the above lines have been added to ntp.conf, ntpd should be restarted. To further understand the configuration see http://doc.ntp.org/4.2.6/drivers/driver28.html

To verify that the GPS module is indeed feeding ntpd, run the command `ntpq -p` in a terminal


Here the GPS time source is selected as the primary time source as it has a small offset and no delay. Over time the V800 GPS module introduces jitter which is either large or not consistent with the other time servers, ntpd then flags this particular time source as being a falseticker and as a result it is not used.

There is not much advantage of using this particular GPS device as a time source due to its lack of a PPS time source and high or random jitter. However if the network is unreliable and drops out the gps time source will be promoted back to a valid time source as the networked time servers are not accessible.

This may be useful for applications where having accurate time important and the network connection is either unreliable or non-existent.

More Stories By Trevor Parsons

Trevor Parsons is Chief Scientist and Co-founder of Logentries. Trevor has over 10 years experience in enterprise software and, in particular, has specialized in developing enterprise monitoring and performance tools for distributed systems. He is also a research fellow at the Performance Engineering Lab Research Group and was formerly a Scientist at the IBM Center for Advanced Studies. Trevor holds a PhD from University College Dublin, Ireland.

@DevOpsSummit Stories
Cloud-Native thinking and Serverless Computing are now the norm in financial services, manufacturing, telco, healthcare, transportation, energy, media, entertainment, retail and other consumer industries, as well as the public sector. The widespread success of cloud computing is driving the DevOps revolution in enterprise IT. Now as never before, development teams must communicate and collaborate in a dynamic, 24/7/365 environment. There is no time to wait for long development cycles that produce software that is obsolete at launch. DevOps may be disruptive, but it is essential. DevOpsSUMMIT at CloudEXPO expands the DevOps community, enable a wide sharing of knowledge, and educate delegates and technology providers alike.
Docker is sweeping across startups and enterprises alike, changing the way we build and ship applications. It's the most prominent and widely known software container platform, and it's particularly useful for eliminating common challenges when collaborating on code (like the "it works on my machine" phenomenon that most devs know all too well). With Docker, you can run and manage apps side-by-side - in isolated containers - resulting in better compute density. It's something that many developers don't think about, but you can even use Docker with ASP.NET.
If you are part of the cloud development community, you certainly know about “serverless computing,” almost a misnomer. Because it implies there are no servers which is untrue. However the servers are hidden from the developers. This model eliminates operational complexity and increases developer productivity. We came from monolithic computing to client-server to services to microservices to the serverless model. In other words, our systems have slowly “dissolved” from monolithic to function-by-function. Software is developed and deployed as individual functions – a first-class object and cloud runs it for you. These functions are triggered by events that follow certain rules. Functions are written in a fixed set of languages, with a fixed set of programming models and cloud-specific syntax and semantics. Cloud-specific services can be invoked to perform complex tasks. So for cloud-na...
In a recent survey, Sumo Logic surveyed 1,500 customers who employ cloud services such as Amazon Web Services (AWS), Microsoft Azure, and Google Cloud Platform (GCP). According to the survey, a quarter of the respondents have already deployed Docker containers and nearly as many (23 percent) are employing the AWS Lambda serverless computing framework. It's clear: serverless is here to stay. The adoption does come with some needed changes, within both application development and operations. That means serverless is also changing the way we leverage public clouds. Truth-be-told, many enterprise IT shops were so happy to get out of the management of physical servers within a data center that many limitations of the existing public IaaS clouds were forgiven. However, now that we've lived a few years with public IaaS clouds, developers and CloudOps pros are giving a huge thumbs down to the...
Kubernetes is an open source system for automating deployment, scaling, and management of containerized applications. Kubernetes was originally built by Google, leveraging years of experience with managing container workloads, and is now a Cloud Native Compute Foundation (CNCF) project. Kubernetes has been widely adopted by the community, supported on all major public and private cloud providers, and is gaining rapid adoption in enterprises. However, Kubernetes may seem intimidating and complex to learn. This is because Kubernetes is more of a toolset than a ready solution. Hence it’s essential to know when and how to apply the appropriate Kubernetes constructs.