Changing PINMUX Configuration in Jetson Orin Nano Device Tree
Issue Overview
Users are experiencing difficulties when attempting to modify the PINMUX configuration for the 40-pin header on the Jetson Orin Nano while also adding other peripherals like MIPI cameras. The built-in tool /opt/nvidia/jetson-io/jetson-io.py
allows for PINMUX changes, but it generates the device tree binary (dtb) automatically, preventing users from adding additional functionality simultaneously. This limitation creates challenges for users who need to enable multiple features, such as I2S2, AUD_MCLK, and MIPI camera support, in a single configuration.
Possible Causes
-
Limited flexibility of the built-in PINMUX configuration tool
The/opt/nvidia/jetson-io/jetson-io.py
script, while functional, does not allow for manual editing of the device tree source (dts) files. -
Incorrect approach to manual device tree editing
Users may be attempting to edit the wrong files or using incorrect methods to modify the device tree. -
Lack of documentation on manual PINMUX configuration
There may be insufficient guidance on how to properly edit the device tree files for custom PINMUX configurations. -
Complexity of merging multiple hardware configurations
Combining PINMUX changes with other peripheral additions in the device tree can be challenging without proper knowledge of the system’s architecture.
Troubleshooting Steps, Solutions & Fixes
-
Use the official PINMUX spreadsheet:
- Download the Jetson Orin NX Series and Jetson Orin Nano Series Pinmux spreadsheet from the NVIDIA Developer website.
- Use this spreadsheet to plan your PINMUX configuration changes.
-
Convert current dtb to dts:
- Generate a reference dts file by converting your current dtb to dts format.
-
Locate the correct device tree source file:
- For Orin Nano 8GB:
hardware/nvidia/platform/t23x/concord/kernel-dts/tegra234-p3701-0000-as-p3767-0003-p3737-0000.dts
- For Orin Nano 4GB:
hardware/nvidia/platform/t23x/concord/kernel-dts/tegra234-p3701-0000-as-p3767-0004-p3737-0000.dts
- For Orin Nano 8GB:
-
Edit the device tree source file:
- Open the appropriate dts file for your Orin Nano model.
- Add your required changes, including PINMUX configurations and peripheral additions (e.g., MIPI camera support).
- Use the
/delete-node/
directive to remove any unneeded entries that you find in the generated reference dts file.
-
Compile the modified device tree:
- Use the device tree compiler (dtc) to create a new dtb file from your modified dts file.
-
Update the boot configuration:
- Ensure that your system is configured to use the newly generated dtb file during boot.
-
Test and verify:
- Reboot your Jetson Orin Nano and verify that both the PINMUX changes and additional peripherals are working as expected.
-
Iterative refinement:
- If issues persist, review your changes and consult the Jetson documentation for any specific requirements or limitations for your hardware configuration.
By following these steps, you should be able to customize your PINMUX configuration while also adding support for additional peripherals like MIPI cameras. Remember to back up your original configuration files before making any changes, and always test thoroughly after modifications.