Git Product home page Git Product logo

rpi-gps-pps-stratumone's Introduction

RPi-GPS-PPS-StratumOne

setup a Raspberry Pi as an Stratum One NTP server.
it is a private project i have made for myself.
i did not keep an eye on network security.

the script will override some existing configurations
(a backup of the changed configuration files will be stored to backup.tar.xz)

USE IT AT YOUR OWN RISK

Please give me a 'Star', if you find that project useful.

overview schematic:

                     ╔═══╗       ╔══════╗         ╔══════╗  GPS-Antenna
                   ──╢ s ║       ║RPi as╟RX───────╢GPS-  ║    ═╪═
                     ║ w ║       ║NTP-  ╟TX───────╢module║     │
                     ║ i ║       ║server║         ╠═══╗  ║     │
       ╔══════╗      ║ t ╟───eth0╢      ╟GPIO#4───╢PPS║  ╟─────┘
       ║ RPi  ╟──────╢ c ║       ║      ║         ╚═══╩══╝
       ╚══════╝   ┌──╢ h ╟──┐    ║      ╟GPIO#7╴╴╴╢PPS║  ╟╴╴
                  │  ╚═══╝  │    ╚══════╝         ╚═══╩══╝
               ╔══╧══╗   ╔══╧══╗
               ║ PC1 ║   ║ PC2 ║
               ╚═════╝   ╚═════╝

overview: path of time source

(without external NTP servers)

╔═══════╗       ╔══════════════════╗
║ GPS   ╫──RX───╫──┐ KERNEL        ║
║ ╔═════╣       ║  │               ║                                     ╔══════════════
║ ║NMEA─╫──TX───╫─[+]─/dev/ttyAMA0─╫────────┬───NMEA──x                  ║ CHRONY
║ ╠═════╣       ║                  ║        │                            ║
║ ║ PPS─╫─GPIO4─╫─────/dev/pps0────╫──────┬─)────────────────────────────╫──[+]────PPS0
╚═╩═════╝      ╴╫╴╴┐               ║      │ │                            ║   │
  ╠═════╣      ╴╫╴[+]╴/dev/ttyAMA1╴╫╴╴╴┐  │ │                            ║   │
║ ║*PPS╴╫╴GPIO7╴╫╴╴╴╴╴/dev/pps1╴╴╴╴╫╴┬╴)╴╴)╴)╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╴╫╴╴╴)╴[+]╴PPS1*
╚═╩═════╝       ╚══════════════════╝ ╵ ╵  │ │ ╔══════════════════╗       ║   │  ╵
                                     ╵ ╵  │ │ ║ GPSD             ║       ║   │  ╵
                                     ╵ ╵  │ │ ║                  ║       ║   │  ╵
                                     ╵ ╵  │ └─╫─GPS0──┬──────────╫─SHM0──╫───)──)──GPS0
                                     ╵ ╵  │   ║       │        ┌─╫─SHM1──╫───┴──)──PSM0
                                     ╵ ╵  └───╫─PPS0─[+]───────┴─╫─SOCK0─╫──────)──PST0
                                     ╵ ╵      ║                  ║       ║      ╵
                                     ╵ └╴╴╴╴╴╴╫╴GPS1╴╴╴╴╴┬╴╴╴╴╴╴╴╫╴SHM2╴╴╫╴╴╴╴╴╴)╴╴GPS1*
                                     ╵        ║          │     ┌╴╫╴SHM3╴╴╫╴╴╴╴╴╴┴╴╴PSM1*
                                     └╴╴╴╴╴╴╴╴╫╴PPS1╴╴╴╴[+]╴╴╴╴┴╴╫╴SOCK1╴╫╴╴╴╴╴╴╴╴╴PST1*
                                              ╚══════════════════╝       ╚══════════════
*) optional second PPS device

requirements

hardware:

software:

  • Raspberry Pi OS Bullseye (2021-10-30 or newer, (link))

installation:

assuming,

  • your Raspberry Pi is running Raspberry Pi OS Bullseye (2021-10-30 or newer),
  • and has a proper connection to the internet via LAN.
  • and your SD card is expanded,
  • and you connected the GPS module direct to the RPi's RX/TX pins of the GPIO and the GPS PPS pin to the RPi' GPIO 4
    (you can use other GPIO pins for PPS by changing dtoverlay=pps-gpio,gpiopin=... in /boot/config.txt)
  1. clone this repository with: git clone https://github.com/beta-tester/RPi-GPS-PPS-StratumOne.git
    and change into the folder where it was cloned to (e.g.: RPi-GPS-PPS-StratumOne).
    (in case it fails, because git is not installed yet, please do sudo apt update; sudo apt install git and try to clone the repository again)
  2. run bash install-gps-pps.sh to install necessary packages and setup Kernel PPS, GPSD, and NTP with PPS support.
  3. reboot your RPi with sudo reboot
  4. in case you have a RPi3, RPi3+, RPi4 or RPi0w with a built-in Bluetooth adapter, and the script didn't disabled Bluetooth successfully, please run sudo raspi-conf and disable the Bluetooth adapter there. otherwise the built-in Bluetooth adapter will block the serial port of the GPIO pins.

done.

NOTES:

gpsd v3.20 available on bullseye repository may have an issue with autobaud feature (finding the correct baud rate of the gps device automatically).
you may have to set the correct baud rate explicitly in the file /etc/default/gpsd
e.g. for baud rate 115200:
GPSD_OPTIONS="--listenany --nowait --badtime --passive --speed 115200"

note1:

the chrony configuration files are in the /etc/chrony/statum1 folder. only files with *.conf will be included to the configuration. all other files in that folder will be ignored. by renaming the files you easily can enable and disable different configuration files.

note2:

PPS is a high precise pulse, without a time information.
GPS (NMEA) has date/time information, but with mostly lower precision.

to combine GPS and PPS in chrony, there is a specific requirement, (link)
that GPS data and PPS signal must have a time offset of less than +/-200ms
otherwise the PPS signal is seen as false-ticker and will be rejected by chrony.

depending on your GPS device the offset used in my script can be way too off.

to adjust the offset of GPS0 edit the file /etc/chrony/stratum1/10-refclocks-pps0.conf

refclock SHM 0 refid GPS0 precision 1e-1 offset 0.0 ...

to find the actual offset, you can use gnuplot (already installed by the script) and run the plot script 99-calibrate-offset-gps0.gnuplot to visualize the actual histogram of the measured offsets.

# stop gpsd and chrony, delete all log files, restart chrony and gpsd
# wait few seconds to give time to create a log file,
# and start the histogram.

sudo systemctl stop --now gpsd.{service,socket} && sudo systemctl stop --now chrony && \
sudo rm -f /var/log/chrony/*.log && \
sudo systemctl start --now chrony && sudo systemctl start --now gpsd && \
sleep 10 && \
gnuplot ~/RPi-GPS-PPS-StratumOne/gnuplot/99-calibrate-offset-gps0.gnuplot

the histogram will updated every minute. keep it running for at least 30 minutes. the longer you keep it running the better offset value you can find. (but not longer than 24h. every 24h a new log will started from zero)

the x-value of the highest spike in the histogram is the offset value for the GPS0 you can once you got a good offset, you can use your RPi + GPS offline.

for more information, see also:
/etc/chrony/chrony.conf
/etc/chrony/statum1/99-calibrate-offset.gps0

note3:

  • GPS0 (NMEA), has a mostly a low accuracy.

  • PPS0, has the highest accuracy.
    it is passed throught by the kernel to /dev/pps0.
    in chrony there is a specific timing offset requirement to PPS, that may cause the PPS0 to be seen as false-ticker by chrony and may be rejected.
    (see note2)

  • PSM0, is coming from the gpsd service via shared memory and is a combination of PPS0+NMEA, but handled by gpsd service.
    it has a similar accuracy as the PPS0 directly, but does not require the specific requirements as noted under note 2, because gpsd knows how the relationship of this.
    it is very accurate and does not need manual calibration. that's why it is selected by me as prefered refclock in 10-refclocks-pps0.conf.

  • PST0, is used by gpsd socket to provide PPS0+NMEA information.
    it has the same accuracy as PSM0 because they have the same time source.

  • GPS1, PPS1, PSM1, PST1, same as above, but only for the second GPS/PPS device.

to properly restart chrony, use:

sudo systemctl stop --now gpsd.{service,socket} && \
sudo systemctl restart --now chrony && \
sudo systemctl start --now gpsd

this will disconnect all connected gpsd-clients.

enable second PPS:

to enable a second PPS source (/dev/pps1), please uncomment the prepared lines in the following files:

  • /boot/config.txt
    uncomment the line to:
    dtoverlay=pps-gpio,gpiopin=7,capture_clear # /dev/pps1

  • /etc/default/gpsd
    uncomment the line to:
    DEVICES="/dev/ttyAMA0 /dev/pps0 /dev/pps1"

  • rename file /etc/chrony/stratum1/11-refclocks-pps1.conf.disabled to
    /etc/chrony/stratum1/11-refclocks-pps1.conf

and reboot the system.

be warned: as long the kernel of the RPi uses "soft"-interrupts for the second PPS its accuracy is questionable.
for tests i feeded both gpio-pins with the same signal from the same pps-device (shorted both pins) and noticed a time difference of about 20µs in chrony between /dev/pps0 and /dev/pps1
see (two gpio pins has different delays?)

rpi-gps-pps-stratumone's People

Contributors

beta-tester avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rpi-gps-pps-stratumone's Issues

gpsd startup conflicts

Could gpsd.socket be interfering with gpsd, or could something else be taking place?

Using Raspbian Stretch Lite 2018-03-13 on a RPi 3, syslog shows:

Apr 1 10:55:36 tocktick gpsd[657]: gpsd:ERROR: /dev/ttyAMA0 already opened by another process
Apr 1 10:55:36 tocktick gpsd[657]: gpsd:ERROR: initial GPS device /dev/ttyAMA0 open failed
Apr 1 10:56:23 tocktick gpsd[657]: gpsd:ERROR: device open of /dev/ttyAMA0 failed: Device or resource busy - retrying read-only
Apr 1 10:56:23 tocktick gpsd[657]: gpsd:ERROR: read-only device open of /dev/ttyAMA0 failed: Device or resource busy
Apr 1 10:56:23 tocktick gpsd[657]: gpsd:ERROR: /dev/ttyAMA0: device activation failed.
Apr 1 10:56:23 tocktick gpsd[657]: gpsd:ERROR: /dev/ttyAMA0: activation failed, freeing device

RPi 3b+ offline mode

Hi,

i want to use the raspberry with a gps as an offline time source. I just changed the pps pin on the script to 18.

Otherwise unchanged I had the following chronyc sources output:

#? NMEA 0 3 177 11 -435ms[ -435ms] +/- 200ms
#? PPS 0 3 0 - +0ns[ +0ns] +/- 0ns
#* PPSx 0 3 177 10 +355ns[ +817ns] +/- 283ns
#- PPSy 0 3 177 8 +430ns[ +430ns] +/- 258ns

With the changes in chrony.conf to the "offline only mode" of the following sources output:

#x NMEA 0 3 77 9 -452ms[ -452ms] +/- 200ms
#? PPS 0 3 0 - +0ns[ +0ns] +/- 0ns
#- PPSx 0 3 77 10 -1078ns [-1078ns] +/- 319ns
#- PPSy 0 3 77 8 -1172ns[-1172ns] +/- 329ns

as i understand it, it's good that chrony is using pps as their primary reference. But there shouldn't be any question mark with nmea, should there?

Explanation why so many sources?

Hi, why is there so many alternative sources of the PPS signal? I'm kinda confused about the purpose. I understand they should be more or less of the same precision (because they stem from a single source), but then why they are getting defined?
Also, I'm getting all other sources (other from PSM0) marked as '?'

MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
#? PPS0                          0   3   377    12  +1468ns[+1601ns] +/-  504ns
#? GPS0                          0   3   377    12    -25ms[  -25ms] +/-  100ms
#* PSM0                          0   3   377    12  +1468ns[+1601ns] +/-  501ns
#? PST0                          0   3   377    12  +1468ns[+1468ns] +/-  483ns
^? ntp1.karneval.cz              2   4   377    15  -1641us[-1641us] +/-   24ms
^? inter.tyjo.eu                 2   4   377    16   -868us[ -868us] +/- 4832us
^? herbrand.noumicek.cz          2   4   377    14  -2697us[-2697us] +/-   49ms
^? time.cloudflare.com           3   4   377     1  -2959us[-2959us] +/-   13ms

Changing the PPS pin

I am needing to change the pin if the primary PPS pin. Can I change the configuration file before installing or will the install overwrite the file?

Not working

Using RPi 3, Adafruit GPS V3. Have fix, have data, have pps out of gps.:

output of sudo ppswatch -a /dev/pps0 attached
gpsmon output attached.
cgps output attached.
Suggestions for troubleshooting?
tx from gps to rx pin 10 of rpi header.
rx from gps to tx pin 8 of rpi header
pps from gps to pin 7 of rpi header

Tnx for any help.
screen shot 2018-04-02 at 1 05 47 am
screen shot 2018-04-02 at 12 55 18 am
screen shot 2018-04-02 at 12 59 14 am

Mitch
Opelika, AL
[email protected]

Would This Receiver Work?

I found this GNSS timing module and am wondering if it could be used with your repo?

My suspicion is that it can; though I value your opinion.

I already asked the seller and they said that it could indeed be wired up to the GPIO without issue for data, PPS and power.

Seller quote from email exchange:

Dear customer,
 
Yes, ELT0030 module can be used with RPI. You can either connect it with USB cable to RPI USB port or connect with some wires to RPI serial port (ELT0030 have 3V serial port signals).

is it possible to access NMEA data using a Python program or a shell script?

After running your script, this is the closest I've ever been to getting my Adafruit GPS HAT to work on my Raspberry Pi Model 2 running Raspbian Stretch Lite.
I have been trying for weeks to get a system to adjust the time only from GPS and not use any Internet-based sources. This setup has to run with no Internet connectivity.
I have tried your test commands. I'm getting good sync, I think.

When I run chronyc sources, I get the following results:
210 Number of sources = 4
MS Name/IP address Stratum Poll Reach LastRx Last sample
#* PPS 0 3 377 9 +131ns[ +557ns] +/- 252ns
#- PPSx 0 3 377 9 +128ns[ +128ns] +/- 249ns
#- PPSy 0 3 377 9 +131ns[ +131ns] +/- 252ns
#- NMEA 0 3 377 9 +49ms[ +49ms] +/- 109ms

Question 1: Why isn't NMEA showing a *?

When I run chronyc tracking, I get the following results:
Reference ID : 50505300 (PPS)
Stratum : 1
Ref time (UTC) : Fri Feb 23 02:54:14 2018
System time : 0.000000000 seconds fast of NTP time
Last offset : -0.000001798 seconds
RMS offset : 0.000000652 seconds
Frequency : 3.760 ppm fast
Residual freq : -0.027 ppm
Skew : 0.135 ppm
Root delay : 0.000000 seconds
Root dispersion : 0.000022 seconds
Update interval : 16.0 seconds
Leap status : Normal

cgps -s works.
gpsmon works.

Question 2:
Is it possible to get access to NMEA messages on /dev/ttyAMA0 from a Python program?
If I run cat /dev/ttyAMA0, I get cat: /dev/ttyAMA0: Device or resource busy
If I run sudo cat /dev/ttyAMA0, I get nothing. It just bumps back to the prompt.

buster-lite 2019-09-26 busts script?

I have tried several times with the requisite hardware and software. install-gps-pps.sh ran without errors.

The login shell is disabled over serial. I have tried with and without serial enabled. The only difference is with serial disabled one of the boot steps fails due to no serial, and enabled, after login I get {"class:"VERSION","release":"3.17","rev":"3.17","proto_major":3,"proto_minor":12}

I can login and see that NTP is not the stock version. timedatectl shows NTP inactive.

Issue Finding the Correct Offset for GPS0

Recently I set up this project on a RPi5B 4GB with a NEO-M8T GNSS HAT and today I tried to refine the setup by finding a better value for the GPS0 offset.

I ran the long chain of commands under "note2:" and got this:

pi@raspberrypi:~ $ sudo systemctl stop --now gpsd.{service,socket} && sudo systemctl stop --now chrony && sudo rm -r /var/log/chrony/*.log && sudo systemctl start --now chrony && sudo systemctl start --now gpsd && sleep 10 && gnuplot ~/RPi-GPS-PPS-StratumOne/gnuplot/99-calibrate-offset-gps0.gnuplot
rm: cannot remove '/var/log/chrony/*.log': No such file or directory
pi@raspberrypi:~ $

What can I do about it?

Optimized GPS & PPS config for u-blox NEO-M8N

Thanks for providing this great script for setting up the RPi Stratum One time server!

In addition to your script, I thought you might want to add some documentation for how to optimally set up the common u-blox NEO-M8N as a time source.

The following are the notes I used to configure my own M8N. I was hoping to share this and potentially get some feedback / questions. Once the config is agreed we could make an automated configuration script to set up the GPS devices themselves.

The following instructions are for u-center v21.09 and the NEO-M8N:

The following assumes that for configuration purposes you are connecting your PC to the M8N using a USB cable, and that your Raspberry Pi's ttyAMA0 UART is connected directly to UART1 on your M8N.

FIRST RESET TO FACTORY DEFAULTS
Tools > Firmware Update Utility
Check "Program FIS only"
FIS file: C:\Program Files (x86)\u-blox\u-center_v21.09\flash.xml
Check "Use chip erase"
GO

-or-

UBX > CFG > CFG
Reset to defaults
Send

CONFIGURATION
View > Configuration View

UBX > CFG > PRT
Target: 1 - UART1
Protocol out: 1 - NMEA
Change Baudrate to 115200
Send

UBX > CFG > CFG
Save current configuration
Send

NOTE: U-center won't show a baud change since we are connected with USB and not UART1

UBX > CFG > GNSS
Enable GPS only (32 channels)
Send

UBX > CFG > SBAS
Subsystem: Disabled
Send

UBX > CFG > NAV5
Dynamic Model: 2 - Stationary
Send

UBX > CFG > TP5
Check Active
Pulse Period: 1000000
Check Align to TOW=0
Set: 0-UTC Time
Check Rising Edge on TOS
Send

UBX > CFG > PMS
Setup ID: 0-Full Power
Check: Save configuration
Send

UBX > CFG > RATE
Time Source: 0 - UTC Time
Send

UBX > CFG > MSG
Uncheck all boxes for:
F0-01 NMEA GxGGL
F0-02 NMEA GxGSA
F0-03 NMEA GxGSV
F0-04 NMEA GxRMC
F0-05 NMEA GxVTG

Check all boxes for:
F0-00 NMEA GxGGA
F0-08 NMEA GxZDA

(Summary: Keep only the GPGGA and GPZDA messages)

UBX > CFG > CFG
Save current configuration
Send

gpsd-clients package unmet dependencies in Raspbian 11 Bullseye

The gpsd installation fails on Raspbian 11 because gpsd-clients package is not available. (Renamed perhaps?)

Built on Raspberry Pi 2 Model B Rev 1.1 using:
Raspberry Pi OS Lite 32-bit, Kernel version: 5.15, Debian version: 11 (bullseye)

Works perfectly with one small change to line 52.

Line 52 reads:
sudo apt-get -y install gpsd gpsd-clients;

It works if line 52 is modified to read:
sudo apt-get -y install gpsd;

make x requirements optional

Would it maybe be possible to drop all the X dependancies or make it an option? gpsd-clients is especially bad. I use gps-tools instead but I would love to have gpspipe though :(

3x your project with DCF77 added

Add a license

Thank you for sharing this project. Would you consider adding a license? I ask because I would like to adapt your work to support experiments I will run as part of my masters thesis.

suggestion: fs mgmt

I sort of consider this myself an appliance, you might as well create dd images and distribute those almost. So I'm not entirely sure if this falls under the scope of this project but this is what I did on raspbian buster to tame my SD cards/disk writes.

root@acerola:~# grep -v ^# /etc/systemd/journald.conf

[Journal]
Storage=volatile
SystemMaxUse=64M

removing rsyslog/legacy facilities and disabling chrony statistical output will get your disk-write to nearly 0, 0.1w/s depending on your drive size/fs. I still need to setup statistics monitoring so I'm not certain how important that latest part is but we could put it in a RAM drive of some sort to make it more persistent/less write heavy

A few remarks for gnuplot in SSH

I wanted to thank you for this excellent recipe. It is very well packaged and it performs very well. I have tried a good dozen of such tutorials and this is the best one I have found.

Just a few remarks concerning gnuplot. As this Chrony server is mostly intended to run on a headless machine, you may find yourself struggling a bit to run gnuplot. At least this is what I had to do to run it on my Rpi 4.

apt install gnuplot-nox --> This will install required fonts for terminal rendering of the graph. You may add it to your list of packages in the installation script.

Then when running the gnuplot command you must tell it what terminal to use in the absence of any Desktop environment. I have managed to do the following :

gnuplot -e "set terminal dumb" /path/to/script/99-calibrate-offset-gps0.gnuplot

Note that there may be other options available in terminal mode, I haven't been digging the subject enough....

Then it all works with beautiful retrogaming graphs !!


########################################

* FILE: 
  Records:           547
  Out of range:        0
  Invalid:             0
  Header records:      0
  Blank:               0
  Data Blocks:         1

* COLUMN: 
  Mean:              -0.1919
  Std Dev:            0.0207
  Sample StdDev:      0.0207
  Skewness:          -0.4297
  Kurtosis:           2.0516
  Avg Dev:            0.0178
  Sum:             -104.9594
  Sum Sq.:           20.3741

  Mean Err.:          0.0009
  Std Dev Err.:       0.0006
  Skewness Err.:      0.1047
  Kurtosis Err.:      0.2095

  Minimum:           -0.2440 [419]
  Maximum:           -0.1542 [126]
  Quartile:          -0.2089 
  Median:            -0.1877 
  Quartile:          -0.1743 

########################################
GPS0:
mean:        1.918818e-01 => offset 1.918818e-01
lo_quartile: 2.088884e-01
median:      1.877149e-01 => offset 1.877149e-01
up_quartile: 1.743451e-01
########################################

                                                                               
                                                                               
                              Calibration Offset GPS0                          
     7 +--GPS0:------------------------------------------------------------+   
       |  mean: 1.918818e-01 (191.9 ms)  +          +    *      +          |   
     6 |-+median: 1.877149e-01 (187.7 ms)                **              +-|   
       |                                                 **                |   
       |                                                 **                |   
     5 |-+                                              ******           +-|   
       |                                                ******             |   
     4 |-+                                              *******   ****   +-|   
       |                                                *******   ****     |   
       |                                                *******   ****     |   
     3 |-+                                              ******* ******   +-|   
       |                                                ******* ******     |   
     2 |-+                                           * *******|********* +-|   
       |                                             * ****|**|****|****   |   
       |                                             * ****|**|****|****   |   
     1 |-+                                           ******|**|****|*******|   
       |          +           +          +          +******|**v^***|*******|   
     0 +-------------------------------------------------------------------+   
    -0.050      0.000       0.050      0.100      0.150       0.200      0.250 
                          Offset (for configuration file)             





RPi5 GPS offset issues

Hi,

I realize that this has been somewhat mentioned in the previous two issues (#19 & #20) but it's inconclusive (to me at least) if anything can be done here, or is it totally a RPi 5 hardware / firmware issue.

GPS0 offset values are making the RPi5 totally unusable for the task - offset is all over the place with values going up to +/- 2 Sec(!). Which is a shame, as I was planning to use the PTP features of the new board..

Screenshot_2024-02-19 21 10 59_4u2Dlb

I tested this on two different RPi5s boards (with 4 GB of RAM) and the results are the same.

Previously, the same NEO-M8T GNSS module setup on RPi4 consistently gets +/- 5ms offset values on average.

Screenshot_2024-02-19 20 28 00_M73L30

Both RPi4 and RPi5 are dedicated for the NTP service and are not doing anything else (99.9% of the time). I also keep the CPU clock frequency fixed (1.5Ghz on RPi5; 1.2Ghz on RPi4) to minimize power fluctuations and possible interference. Once booted and warmed-up, the temperature of the units stays within 1*C.

Many thanks in advance for your inputs!
Vuk

Some added context for installs

Good afternoon,
Not everyone may be as familiar with setting up a Rasberry pi, so I wonder if you would consider adding some guidance to your introduction.

Specifically, after setup, running
sudo apt update followed by sudo apt update
then sudo apt install git to install git, which will make downloading your repository simple.
Lastly, git clone https://github.com/beta-tester/RPi-GPS-PPS-StratumOne.git

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.