Can't enable PPS in TX2 NX


Jetson TX2
JetPack 4.6
L4T 32.6.1

I’m trying to install pps driver in our tx2.
I’ve been following these posts (feel free to refer me back to any of them in case i missed something!):

But at the end of the day I’m still unable to even see it in /dev/pps*.

Every step that i took:

  1. Added this to device tree in sources/hardware/nvidia/platform/t18x/common/kernel-dts/t18x-common-platforms/tegra186-quill-common.dtsi
pps {
        gpios = <&tegra_main_gpio TEGRA_MAIN_GPIO(I, 4) GPIO_ACTIVE_LOW>;

        compatible = "pps-gpio";
        status = "okay";
  1. In .config of kernel_output, all PPS related variables are set like this:
# PPS support

# PPS clients support

# PPS generators support
  1. Compiled the kernel:
    (CROSS_COMPILE is set in .bashrc)
    make ARCH=arm64 LOCALVERSION=-tegra O=…/kernel_out -j8

  2. Copied Image and dtbs from kernel_out to JetPack_4.6_Linux_JETSON_TX2_TARGETS/Linux_for_tegra/kernel
    (I’ve also decompiled tegra186-quill-p3310-1000-c03-00-base.dtb and I can assert that the device is there.)

  3. Flashed Tx2 with sudo ./flash -r jetson-xavier-nx-devkit-tx2-nx mmcblk0p1

When I boot my tx2 I’ve tried to:
ls /dev/pps*, which yield no result
dmesg | grep pps; which shows:

pps_core: LinuxPPS API ver. 1 registered
pps_core: Software ver. 5.3.6  Copyright 2005-2007 Rodolfo Giometti <>

Also sudo cat /sys/kernel/debug/gpio does not show any pps gpio.

I am very likely to be doing something wrong, since this appears to be a very straight forward procedure.
Please anyone knows anything that might help?


Additional info. It is a TX2 NX, forgot to mension.

Also, we’ve tried adding the device in (the same way as i mentioned in the post) /sources/kernel/kernel-4.9/…/…/hardware/nvidia/soc/t18x/kernel-dts/tegra186-soc/tegra186-soc-base.dtsi
but when we try to compile the changes we get an error saying it is unable to parse input tree. Syntax is correct, as far as we can tell, so the parsing error must be something we are not aware of.


hello FranciscoZacarias,

note, TX2 NX is using different device tree than TX2 DevKit.
you should examine tegra186-p3636-0001-p3509-0000-a01.dtb to confirm you’ve all changes included.

Hello JerryChang.
Thank you for your answer.

I have examined the file you mentioned and I am not seeing any changes, so I am doing something wrong here.

Would you mind giving me the name of the file that I need to add the device to? I previously added the device to sources/hardware/nvidia/platform/t18x/common/kernel-dts/t18x-common-platforms/tegra186-quill-common.dtsi, then fully compiled the kernel and I’m not able to see any changes in the file you mentioned.

Do I need to edit a different file? Do i need to then compile the dtsi into a dtb and copy it manually to somewhere else before compiling the kernel? Or (if that’s reasonable to ask) would you mind giving me the steps of how I should edit the device trees and compile them in order to make that change?

Thank you very much.


I think I know where to add the device.

I’m trying to add

pps {
	    compatible = "pps-gpio";
	    status = "okay";

to /sources/hardware/nvidia/soc/t18x/kernel-dts/tegra186-soc/tegra186-soc-base.dtsi
But when I try to compile i get a “FATAL ERROR: Unable to parse input tree”.

What may I be doing wrong?

hello FranciscoZacarias,

it looks you’re having incorrect definition here.
please have GPIO pin definition as following, i.e. gpios = <&tegra_main_gpio TEGRA194_MAIN_GPIO(J, 4) GPIO_ACTIVE_HIGH>;


I had to refer to this post GPIO doesn't work? to find where the defines were. Now I know which ones I am able to use. I can only assume that the errors parsing the tree were due to invalid values and not due to some syntax error, per say.

Thank you for your answer. Problem is solved afaik.

hello FranciscoZacarias,

thanks for the feedback, we’re now able to close this discussion thread.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.