-
Notifications
You must be signed in to change notification settings - Fork 1
PSS_Chrony_setup
aniket_thor edited this page Jul 16, 2025
·
1 revision
This guide walks you through setting up a PPS-enabled GPS for time synchronization using chrony, gpsd, and Jetson GPIOs.
Connections:
| GPS Pin | Jetson Pin | Description |
|---|---|---|
| TP2 | PIN 7 | PPS |
| GND | PIN 6 | Ground |
| TX2 | PIN 10 | UART RXD |
git-repo-example-
device-tree-information– includes an excellent explainer video gpio-header-pinout-
NVIDIA Pinmux Tool– search for "pinmux"
- Jetson Orin NX PIN 7 =
GPIO09= GPIO number144=gpio492 -
PAC.06→ Soc:TEGRA234_MAIN_GPIO_PORT_AC = 20 - PPS GPIO calculation:
20 * 8 + 6 = 166
sudo apt-get install gpiod
sudo gpiomon gpiochip0 144Should output rising edge timestamps when PPS signal is received.
sudo apt install nano
sudo nano pps-pin7.dtsPaste:
/dts-v1/;
/plugin/;
/ {
compatible = "nvidia,p3768-0000+p3767-0003";
overlay-name = "PPS Overlay";
jetson-header-name = "Jetson 40pin Header";
fragment@0 {
target-path = "/";
__overlay__ {
pps: pps-gpio {
status = "okay";
compatible = "pps-gpio";
gpios = <&gpio 166 0>;
assert-rising-edge;
};
};
};
};
dtc -O dtb -o pps-pin7.dtbo pps-pin7.dts
sudo cp pps-pin7.dtbo /boot
sudo /opt/nvidia/jetson-io/jetson-io.py- Select:
Configure Jetson 40pin Header→Compatible hardware→PPS Overlay - Save and reboot
sudo gpiomon gpiochip0 144 # Should say 'busy'
sudo apt-get install pps-tools
sudo dmesg | grep pps
ls /dev/pps* # Should show /dev/pps1 and /dev/pps0
sudo ppstest /dev/pps1 # Should output pulse data (Should update at 1 Hz)sudo apt install minicom gpsd gpsd-clients chrony
sudo apt install pps-toolssudo stty -F /dev/ttyTHS1 115200
sudo cat /dev/ttyTHS1Quick test with:
sudo minicom -b 115200 -D /dev/ttyTHS1echo 'KERNEL=="pps1", GROUP="_chrony", MODE="0660"' | sudo tee /etc/udev/rules.d/99-pps.rules
sudo udevadm control --reload-rules
sudo udevadm trigger
sudo rebootEdit:
sudo nano /etc/default/gpsdPaste:
GPSD_OPTIONS="-n"
DEVICES="/dev/ttyTHS1 /dev/pps1"
USBAUTO="false"ps aux | grep gpsd
sudo systemctl stop gpsd.socket gpsd
sudo killall gpsd
sudo rm -f /var/run/gpsd.socksudo gpsd -n -b -D 4 /dev/ttyTHS1 /dev/pps1 -F /var/run/gpsd.sockTest:
sudo stty -F /dev/ttyTHS1 115200
cgps # Should show live GPS data
sudo ppstest /dev/pps1 # Should tick every secondsudo nano /etc/chrony/chrony.confPaste at the top:
refclock SHM 0 delay 0.5 refid NMEA
refclock PPS /dev/pps1 refid PPS lock NMEAComment out all default pool lines, or add noselect to refclock lines for testing:
# pool 2.debian.pool.ntp.org iburstThen:
sudo systemctl restart chrony
chronyc sources -v
sudo killall gpsd
sudo systemctl stop gpsd.socket gpsd
sudo rm /var/run/gpsd.sockStart with debug info:
sudo gpsd -n -N -D 4 /dev/ttyTHS1 /dev/pps1 -F /var/run/gpsd.socksudo date -s "2025-06-19 17:35:00"