Enabling PPS on Nvidia Jetson Orin Nano Dev Board
Issue Overview
Users of the Nvidia Jetson Orin Nano Developer Kit are experiencing difficulties in enabling and configuring the Pulse Per Second (PPS) signal from a u-blox Z9P based module. The main challenges include:
- Identifying the correct GPIO pin on the Jetson Orin Nano Devkit for PPS signal connection
- Configuring the kernel and device tree to properly recognize and utilize the PPS signal
- Lack of clear documentation or instructions specific to the Orin Nano model for PPS setup
This issue affects users who require precise timing synchronization for applications such as GPS-based systems, network time synchronization, or other time-sensitive operations.
Possible Causes
-
Hardware Compatibility: The Jetson Orin Nano may have a different GPIO pin layout compared to other Jetson models, leading to confusion about the correct pin for PPS connection.
-
Software Configuration: Incorrect or missing kernel modules or device tree overlays specific to PPS functionality on the Orin Nano.
-
Documentation Gap: Lack of official documentation or guidelines from NVIDIA specifically addressing PPS setup on the Orin Nano model.
-
User Unfamiliarity: Users may be unfamiliar with the process of enabling and configuring PPS on embedded systems, leading to difficulties in implementation.
Troubleshooting Steps, Solutions & Fixes
-
Identify the Correct GPIO Pin:
- While the exact pin for the Orin Nano is not specified in the discussion, users can refer to similar setups on other Jetson models.
- For the Jetson AGX Orin, Pin 31 has been used successfully for PPS. Verify if this pin is also available and suitable for the Orin Nano.
-
Configure the Device Tree:
-
Create a custom device tree overlay to enable PPS functionality.
-
Example device tree snippet (adjust as needed for Orin Nano):
/dts-v1/; /plugin/; / { compatible = "nvidia,p3509-0000+p3767-0000"; fragment@0 { target-path = "/"; __overlay__ { pps { compatible = "pps-gpio"; pinctrl-names = "default"; pinctrl-0 = <&pps_pins>; gpios = <&tegra_main_gpio TEGRA234_MAIN_GPIO(Z, 0) GPIO_ACTIVE_HIGH>; assert-falling-edge; }; }; }; };
-
-
Enable Required Kernel Modules:
- Ensure the following kernel modules are enabled:
CONFIG_PPS=y CONFIG_PPS_CLIENT_LDISC=y CONFIG_PPS_CLIENT_GPIO=y
- Ensure the following kernel modules are enabled:
-
Compile and Apply Device Tree Overlay:
- Compile the device tree overlay:
dtc -O dtb -o pps-gpio-orin.dtbo -@ pps-gpio-orin.dts
- Apply the overlay:
sudo cp pps-gpio-orin.dtbo /boot/dtb/kernel_tegra234-p3767-0000-p3509-0000-a0.dtb.d/
- Compile the device tree overlay:
-
Verify PPS Functionality:
- After rebooting, check if the PPS device is recognized:
ls /dev/pps*
- Use the
ppstest
utility to verify PPS signal reception:sudo apt-get install pps-tools sudo ppstest /dev/pps0
- After rebooting, check if the PPS device is recognized:
-
Consult Additional Resources:
- Review the forum threads mentioned in the discussion for more detailed information and potential solutions.
- Check NVIDIA’s official documentation for any updates specific to the Orin Nano model.
-
Community Support:
- If issues persist, consider posting a detailed question on the NVIDIA Developer Forums, providing specific information about your setup, steps tried, and observed results.
-
Hardware Verification:
- Ensure proper physical connection between the u-blox Z9P module and the chosen GPIO pin on the Jetson Orin Nano.
- Use a multimeter or oscilloscope to verify the PPS signal is being correctly output from the u-blox module.
By following these steps and consulting the provided resources, users should be able to enable and configure PPS on their Nvidia Jetson Orin Nano Dev Board. If problems persist, further investigation and possibly contacting NVIDIA support may be necessary.