The Raspberry Pi as a Stratum-1 NTP Server

132 points by virtualsue 6 years ago | 36 comments
  • stephen-mw 6 years ago
    I just built one of these. It's fun to have a little computer that can synchronize highly accurate time without an internet connection by listening to things in outer space!

    I built an auto-install script that anyone here is welcome to use or reference[1]. If you know what you're doing, just change the GPIO pin to your PPS input and fire away.

    Unlike the author I used Chrony instead of NTP. It's lighter-weight and much easier to configure with a PPS/GPS reference clock.

    The GPS chip I used was an ATGM336H, which can be had for less than $8 on ebay. I'm able to lock consistently 11 satellites from my desk[2]

    Keep in mind the Pi has no hw RTC. If you're doing this for fun spend a few more bucks and buy an rtc chip from ebay so you don't drift considerably between being powered off.

    1. https://github.com/stephen-mw/raspberrypi/blob/master/roles/...

    2. https://www.ebay.com/sch/i.html?_from=R40&_nkw=ATGM336H&_sac...

    • glenneroo 6 years ago
      I had one of these running with a 10 meter cable to the window so the receiver could get enough satellites. After 24/7 for about a year it just died and I haven't had time to figure out what's wrong. Lights blink but it's not reachable via ping, ssh or scp. HDMI output shows nothing. I had to move on to other projects, so I gave up and assumed I either got hacked or I hit the cheap-SD-card problem of corruption that seems to plague other users running their Pi continuously for longer periods.

      I've started buying SanDisk's "High Endurance" microSD cards hoping it will mitigate any such issues in the future, but I haven't had time to get the NTP set up again... I really should have cloned the image.

      I think the hardest part was finding a case with space for the GPS hat[0] with an open end for the coax connector. The hat sits a bit crooked because of something bulbous on top (condensator?).

      [0]: https://store.uputronics.com/index.php?route=product/product...

      • Fnoord 6 years ago
        I have two Pi's on remote locations. One is abused with power cuts, the other one not. The one with the power cuts is still alive, the other one had a corrupted microSD card which I just could not repair, and the system would hang (if I reinstalled it was OK again). Both Pi's have /var/log and a bunch of other locations mounted with tmpfs (so, in memory instead of on microSD) with swap off.

        After the advice from a fellow HN reader [1] I bought a bunch of aMLC microSD cards from DigiKey. No S&H costs and it literally arrived 1,5 days later (from Springfield to The Netherlands) though I had to pay import tax. Needless to say, they've been rock stable. I'm using one in a Pi and one in a Dafang camera [2]. I still gotta replace the microSD cards in the remote Pi's though but I'll do it once they break (again).

        [1] https://news.ycombinator.com/item?id=16777238

        [2] https://github.com/EliasKotlyar/Xiaomi-Dafang-Hacks

        • walrus01 6 years ago
          For anything serious that is not a toy like an rpi, for industrial/embedded/ISP use, you need something with a storage interface that is either:

          a) eMMC which can use a tiny flash module of the same type flash as found in MLC SSDs, with flash controller chip for write wear leveling

          or

          b) M.2 NVME SSD interface such as can be found on 170x170mm mini-itx x86-64 motherboards for intel or amd single socket CPUs. And of course on larger motherboards as well.

          c) the "traditional" SATA3 disk interface which can be used for a SATA3 interface SSD.

          Due to the very limited write lifespan of microSD cards, even "industrial" ones, it's just a really bad idea reliability wise to use a microSD card for boot and OS storage on any sort of remote embedded system that does anything important.

          The drive writes per day (DWPD) figure in GB for even a cheap $55 consumer grade MLC SSD is vastly higher than the amount of times you can write to a microsd card.

          • stephen-mw 6 years ago
            Check out my install script linked earlier. If you already have the GPS unit attached and tested, you could probably be up and running again in a few minutes (make sure to change the GPIO pin in the script to your PPS pin).
            • steve19 6 years ago
              I wonder how much the rpi foundation would need to sell a pi if it included 32gb of storage. I would gladly pay not to feel like I'm playing roulette with my microsd.
            • gsich 6 years ago
              Switch to network boot with NFS as storage. Much faster (compared to most "cheap" SD cards) and more reliable.
              • mlichvar 6 years ago
                Another possibility to improve reliability with SD cards is to use a distro that is designed to not make any writes to the storage in normal operation. I have some NTP servers running on OpenWRT and they work great.
          • jwildeboer 6 years ago
            Maybe add [2012] to the title, dear mods?
            • TheRealDunkirk 6 years ago
              And maybe a trigger warning about the FrontPage 97 theme...
            • Jaruzel 6 years ago
              Off topic: I love this couples website. If you click through to the homepage they've got lots of stuff to browse.

              Yes, it maybe old-style, but it's these sort of sites that the internet was originally built on. It's a real shame that they are becoming a dying breed.

              • cremp 6 years ago
                > Configuring Wi-Fi

                That alone will negate any benefit of running a stratum 1. You lose the precision and accuracy over wifi. Jitter on intranet with the pi as a timesource would be magnitudes greater than the GPS link.

                • johnklos 6 years ago
                  Not exactly. Sometimes it's more helpful to have a local time source that you know is accurate but has a little jitter than to have a remote time source with intermittent Internet.
                  • bestouff 6 years ago
                    RPi's ethernet-over-USB is no better: it aggregates packets to compensate for limited bandwitdh, incurring killer jitter.
                  • epynonymous 6 years ago
                    this is pretty cool. i was looking at your case, could you tell me the exact model case you were using? i couldn't find the exact model on modmypi.

                    also, here's a writeup i did on my experiences creating something with an rpi 3 model b+:

                    https://github.com/stephenhu/written/blob/master/raspberrypi...

                    • skykooler 6 years ago
                      What is the use case for microsecond-accurate timekeeping?
                      • cremp 6 years ago
                        I've done it; and my primary argument to family and friends is time attack vectors.

                        The real reason though, is because I can, and I like saying my computers are more accurate and precise than their phones.

                        • onemoresoop 6 years ago
                          it's mostly about synchronization between systems
                        • homero 6 years ago
                          I built a nixie tube clock like that with a gps receiver, it works amazingly
                          • tramtrist 6 years ago
                            They still haven't separated the USB/Ethernet Bus :/
                            • makomk 6 years ago
                              This is also possible with the Orange Pi/NanoPi boards which have actual Ethernet that doesn't go over USB, though I don't think there's such a good writeup of how to do that.
                          • gsich 6 years ago
                            Are there performance differences regarding Pi 1/2/3?
                            • abraham_lincoln 6 years ago
                              Yes, very much so.
                              • gsich 6 years ago
                                Do you have some numbers?
                                • mwambua 6 years ago
                                  The biggest factor is that each generation of the Pi has gotten a better processor (700Mhz single-core in the original Pi to a 1.4Ghz quad-core in the 3B+). There are also a number of detailed benchmarks out there if you bother to Google it.