Hello NVIDIA Community,
I am trying to configure a PPS (Pulse Per Second) output on the Jetson AGX Orin Developer Kit, and after extensive troubleshooting, I have not been able to get it working. I am posting here in hopes of getting guidance or confirmation about the current state of PPS GPIO support on AGX Orin.
My Goal
- Generate a PPS output signal on a GPIO pin (preferably on the 40-pin header) for time synchronization purposes.
What I Have Tried
Kernel and Module Setup
- Verified kernel config:
CONFIG_PPS=y
CONFIG_PPS_CLIENT_GPIO=m
(also tried=y
)
- Built and installed the
pps-gpio
module for my running kernel. - Confirmed kernel and module versions match.
Device Tree Overlay
- Created and compiled overlays for several candidate pins (Pin 13, 22, 31, etc.), e.g.:
text
/dts-v1/;
/plugin/;
/ {
overlay-name = "My PPS GPIO Overlay";
jetson-header-name = "Jetson 40pin Header";
compatible = "nvidia,p3737-0000+p3701-0005";
fragment@0 {
target-path = "/";
__overlay__ {
pps {
compatible = "pps-gpio";
gpios = <&tegra_main_gpio 316 0>; /* Pin 31, GPIO3_PAA.00, active high */
status = "okay";
};
};
};
fragment@1 {
target = <&pinmux>;
__overlay__ {
pps_pinmux {
nvidia,pins = "soc_gpio00_paa0";
nvidia,function = "gpio";
nvidia,tristate = <0>; // Output for PPS out
nvidia,enable-input = <0>; // Output
};
};
};
};
- Added overlay to
/boot/extlinux/extlinux.conf
viaFDTOVERLAYS
. - Rebooted after each change.
Module Loading
- Installed the module to
/lib/modules/$(uname -r)/kernel/drivers/pps/clients/
. - Ran
sudo depmod -a
. - Loaded with
sudo modprobe pps_gpio
.
Verification Steps
- Checked for
/dev/pps0
(not present except forktimer
). - Checked
lsmod
,/proc/modules
, anddmesg | grep pps
—no sign ofpps_gpio
being loaded or binding. - Checked
/proc/device-tree/pps
—node not present. - Verified pin is not in use by another driver (
/sys/kernel/debug/gpio
). - Confirmed overlay includes
overlay-name
,jetson-header-name
, and correctcompatible
string.
Other Steps
- Tried multiple pins (13, 15, 22, 31, etc.).
- Attempted both input and output pinmux settings.
- Used Jetson-IO (overlay not listed).
- Did not do a full device reflash (would prefer not to erase system).
Observed Behavior
- No
/dev/pps0
for GPIO appears, only forktimer
. - No relevant dmesg output from
pps_gpio
. - Overlay node does not appear in
/proc/device-tree/
. - No errors, but also no sign that the driver is binding to the overlay.
Questions
- Is hardware PPS output (or even input) on a GPIO supported on AGX Orin with JetPack 5.x/6.x?
- Are there any known workarounds or required steps to get PPS-GPIO working on AGX Orin?
- Is a full device reflash required for overlays/pinmux changes to take effect on Orin?
- Is there any official documentation or example overlay for PPS output on Orin?
- If not supported, is there a recommended approach for generating a hardware-accurate PPS output from Orin?
System Details
- Jetson AGX Orin Developer Kit
- JetPack: [your version, e.g., 6.0 or 5.1.2]
- Kernel:
uname -r
= [your kernel version, e.g., 5.10.120-tegra] - Compatible string:
nvidia,p3737-0000+p3701-0005
Any advice, official clarification, or working examples would be greatly appreciated!
Thank you,
Sharon Salmon