My Hardware Device: orin nano 4G/orin nx 8G
software version:JetPack 5.1.4
After setting the PPS pin on Orin NX, PPS signals can be captured, but adding the same settings on Orin Nano did not successfully set PPS.
orin nx log info:
root@nvidia-desktop:/home/nvidia# dmesg |grep pps
[ 1.334175] pps_core: LinuxPPS API ver. 1 registered
[ 1.339136] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[ 3.903219] pps pps0: new PPS source ktimer
[ 3.907519] pps pps0: ktimer PPS source registered
[ 3.912450] pps_ldisc: PPS line discipline registered
[ 3.917632] pps_parport: parallel port PPS client
[ 8.910673] pps pps1: new PPS source ptp0
[ 173.305492] pps pps2: new PPS source pps_gpio.-1
[ 173.305535] pps pps2: Registered IRQ 314 as PPS source
root@nvidia-desktop:/home/nvidia#
root@nvidia-desktop:/home/nvidia#
root@nvidia-desktop:/home/nvidia#
root@nvidia-desktop:/home/nvidia#
root@nvidia-desktop:/home/nvidia# ls /dev/pps*
/dev/pps0 /dev/pps1 /dev/pps2
root@nvidia-desktop:/home/nvidia# ppstest /dev/pps2
trying PPS source "/dev/pps2"
found PPS source "/dev/pps2"
ok, found 1 source(s), now start fetching data...
source 0 - assert 210.939862592, sequence: 22 - clear 0.000000000, sequence: 0
source 0 - assert 211.939840832, sequence: 23 - clear 0.000000000, sequence: 0
source 0 - assert 212.939825024, sequence: 24 - clear 0.000000000, sequence: 0
source 0 - assert 213.939796640, sequence: 25 - clear 0.000000000, sequence: 0
source 0 - assert 214.939773696, sequence: 26 - clear 0.000000000, sequence: 0
orin nano info:
root@nvidia-desktop:/home/nvidia# insmod /lib/modules/5.10.216-tegra/kernel/drivers/pps/clients/pps-gpio.ko
root@nvidia-desktop:/home/nvidia# dmesg |grep pps
[ 1.344607] pps_core: LinuxPPS API ver. 1 registered
[ 1.349569] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[ 3.979259] pps pps0: new PPS source ktimer
[ 3.983558] pps pps0: ktimer PPS source registered
[ 3.988481] pps_ldisc: PPS line discipline registered
[ 3.993658] pps_parport: parallel port PPS client
[ 8.460891] pps pps1: new PPS source ptp0
[ 153.831949] pps-gpio pps_gpio: failed to request PPS GPIO
[ 153.837547] pps-gpio: probe of pps_gpio failed with error -22
root@nvidia-desktop:/home/nvidia# ls /dev/pps*
/dev/pps0 /dev/pps1
Check the PPS configuration in the device tree:
pps_gpio {
compatible = "pps-gpio";
gpios = <0x50 0x93 0x00>;
status = "okay";
interrupts = <0x93 0x01>;
assert-rising-edge;
interrupt-parent = <0x50>;
phandle = <0x47d>;
};
I choose PY.03 set to pps pin:
root@nvidia-desktop:/boot/dtb# cat /sys/kernel/debug/gpio | grep PY.03
gpio-473 (PY.03 |(null) ) in lo
When I load the pps-gpio.ko driver, PY.03 will become an interrupt pin on Orin Nx;but in Orin nano,the interrupt not work.
I used the same SDK to configure Orin NX and Orin Nano. Is there any difference in configuring PPS between these two devices?
Hi jack.yan,
Are you using the devkit or custom board for both Orin NX and Nano?
As my understanding, they should have similar pin definition and result.
Please run the following command to capture the device tree in both cases. (Orin NX and Orin Nano)
$ sudo dtc -I fs -O dts -o extracted_proc.dts /proc/device-tree
And share the dts files for further check.
Hi, KevinFFF:
Thanks for your reply.
Orin NX and Orin Nano both use hardware that I designed myself. The two devices use the same SDK and hardware configuration. In my design, I only need to replace the core board to use them.
Here is dts file:
orin_nano_extracter_proc.dts.txt (405.8 KB)
orin_nx_extracted_proc.dts.txt (405.7 KB)
pps config:
pps: pps_gpio
{
compatible = "pps-gpio";
gpios = <&tegra_main_gpio TEGRA234_MAIN_GPIO(Y, 3) GPIO_ACTIVE_HIGH>;
status = "okay";
interrupts = <TEGRA234_MAIN_GPIO(Y, 3) IRQ_TYPE_EDGE_RISING>;
assert-rising-edge;
interrupt-parent = <&tegra_main_gpio>;
};
Do you get the similar above result for both Orin NX and Nano?
Do you use SKU MODEL/ID to distinguish them during flash as what default jetson-orin-nano-devkit.conf did?
Could you try removing interrupts and interrupt-parent attributes in pps_gpio node to check if pps-gpio driver can probe on Orin Nano successfully?
Please also share the result of the following commands in both case(Orin NX and Nano).
$ sudo cat /sys/kernel/debug/gpio|grep PY.03
$ sudo busybox devmem 0x0243d010
Hi, KevinFFF:
After install pps driver in Orin Nx:
root@nvidia-desktop:/usr/lib/modules/5.10.216-tegra/kernel/drivers/pps/clients# cat /sys/kernel/debug/gpio | grep PY.03
gpio-473 (PY.03 |pps_gpio ) in hi IRQ
The burning commands for orin nx and orin nano are the same:
sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device nvme0n1p1 -c tools/kernel_flash/flash_l4t_external.xml -p "-c bootloader/t186ref/cfg/flash_t234_qspi.xml" --showlogs --network usb0 jetson-orin-nano-devkit internal
In Orin Nano,When I remove interrupt,It`s still failed ;
pps_gpio {
compatible = "pps-gpio";
gpios = <0x50 0x93 0x00>;
status = "okay";
assert-rising-edge;
phandle = <0x47d>;
};
pps error:
root@nvidia-desktop:/boot/dtb# dmesg |grep pps
[ 1.342647] pps_core: LinuxPPS API ver. 1 registered
[ 1.347610] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[ 3.984515] pps pps0: new PPS source ktimer
[ 3.988808] pps pps0: ktimer PPS source registered
[ 3.993723] pps_ldisc: PPS line discipline registered
[ 3.998902] pps_parport: parallel port PPS client
[ 8.385712] pps pps1: new PPS source ptp0
[ 62.466359] pps-gpio pps_gpio: failed to request PPS GPIO
[ 62.471948] pps-gpio: probe of pps_gpio failed with error -22
Orin Nano config:
root@nvidia-desktop:/boot/dtb# cat /sys/kernel/debug/gpio|grep PY.03
gpio-473 (PY.03 |(null) ) in hi
root@nvidia-desktop:/boot/dtb# busybox devmem 0x0243d010
0x00000055
Orin Nx config:
root@nvidia-desktop:/usr/lib/modules/5.10.216-tegra/kernel/drivers/pps/clients# cat /sys/kernel/debug/gpio | grep PY.03
gpio-473 (PY.03 |pps_gpio ) in hi IRQ
root@nvidia-desktop:/usr/lib/modules/5.10.216-tegra/kernel/drivers/pps/clients# busybox devmem 0x0243d010
0x00000055
jack.yan:
Orin Nano config:
root@nvidia-desktop:/boot/dtb# cat /sys/kernel/debug/gpio|grep PY.03
gpio-473 (PY.03 |(null) ) in hi
root@nvidia-desktop:/boot/dtb# busybox devmem 0x0243d010
0x00000055
Orin Nx config:
root@nvidia-desktop:/usr/lib/modules/5.10.216-tegra/kernel/drivers/pps/clients# cat /sys/kernel/debug/gpio | grep PY.03
gpio-473 (PY.03 |pps_gpio ) in hi IRQ
root@nvidia-desktop:/usr/lib/modules/5.10.216-tegra/kernel/drivers/pps/clients# busybox devmem 0x0243d010
0x00000055
From the results you shared, PY.03 is used by a (null) driver so that it can not be requested by pps_gpio driver.
I’ve checked the device tree you shared. They are similar so that it is weird that they have different result.
Could you do a test to use other pin as PPS GPIO on Orin Nano to check if it could work?
And share the result of cat /sys/kernel/debug/gpio|grep PY.03 again.
Hi, KevinFFF:
I changed PY.03 to PQ.05, but it still produces the same error message.
pps_gpio {
compatible = "pps-gpio";
gpios = <0x50 0x7d 0x00>;
status = "okay";
interrupts = <0x7d 0x01>;
assert-rising-edge;
interrupt-parent = <0x50>;
phandle = <0x47d>;
};
What configuration is required to set a gpio as a rising edge triggered interrupt in Orin Nano? Let me double check all my configurations.
Please also share the result of cat /sys/kernel/debug/gpio|grep PY.03 at this moment.
Do you have other Orin Nano module?
Maybe the issue is specific to the current module!?
You have to configure them in pinmux spreadsheet before use.
e.g. for PQ.05, you can refer to the following configuration.
Hi,KevinFFF:
I will purchase more Orin Nano for verification purposes;
I have a question, why do three PPS nodes appear in /dev after loading pps-gpio.ko in orin nx?
I’m also curious about it in your case.
I get only 1 PPS (/dev/pps0) on the Orin Nano devkit by default.
I thought you should get 2 PPS since you’ve enabled pps_gpio node in device tree and configured the gpios.
Hi,KevinFFF:
I checked the device tree and found only one pps-gpio configuration that I added. Normally, there should be two PPS nodes appearing.
Please run the following command on your board and share extracted_proc.dts and dmesg.log for further check.
$ sudo dtc -I fs -O dts -o extracted_proc.dts /proc/device-tree
$ sudo dmesg > dmesg.log
Hi,KevinFFF:
dmesg:
dmesg.log (69.2 KB)
dts:
extracted_proc.dts.txt (405.7 KB)
[ 3.975568] pps pps0: ktimer PPS source registered
..
[ 3.762105] igb: Intel(R) Gigabit Ethernet Network Driver
[ 8.446704] pps pps1: new PPS source ptp0
..
[ 67.891947] pps pps2: new PPS source pps_gpio.-1
PPS0 is from PPS-Core(ktimer)
PPS1 is from igb driver, its source is ptp0
PPS2 is from pps-gpio
Hi,KevinFFF:
Should I delete PPS0 and PSP1? I just need the pps-gpioto sync GPS timestamp.
You can just keep them as it is.
Please just use /dev/pps2 to work with pps-gpio to sync with GPS timestamp.
1 Like
system
Closed
August 11, 2025, 7:41am
19
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.