Modifying Device Tree for Custom Jetson Orin Nano Board
Issue Overview
Users are experiencing difficulties modifying the device tree of the Jetson Orin Nano 8GB Developer Kit for custom board configurations in JetPack 6.0. Specifically, there are challenges in porting USB 2.0 from the M.2 Key E Connector to a USB 3.0 HUB. Users are unsure about which files to modify and what changes to make in the device tree structure. Additionally, there is confusion about identifying the purpose of specific nodes in the device tree and mapping them to hardware components.
Possible Causes
- Lack of familiarity with Jetson device tree structure
- Insufficient documentation on custom board adaptations
- Complexity of the Jetson Orin Nano hardware architecture
- Misunderstanding of device tree node purposes and properties
- Inadequate knowledge of hardware-to-software mapping in the Jetson ecosystem
Troubleshooting Steps, Solutions & Fixes
-
Review Official Documentation:
- Consult the Jetson Module Adaptation and Bring-Up guide for the Jetson AGX Orin Series:
https://docs.nvidia.com/jetson/archives/r36.3/DeveloperGuide/HR/JetsonModuleAdaptationAndBringUp/JetsonAgxOrinSeries.html
- Consult the Jetson Module Adaptation and Bring-Up guide for the Jetson AGX Orin Series:
-
Understand USB Node Purposes:
usb@3550000
is for USB device modeusb@3610000
is for USB host mode- A USB hub typically only has functions for USB host mode
-
Identify Hardware Mappings:
- Review the schematic of the Jetson Orin Nano Developer Kit
- The default DTB file already includes configurations for USB hub, M.2 connector, and Type-C
- Download necessary documents from the Jetson Download Center:
https://developer.nvidia.com/embedded/downloads
-
Modify Device Tree for USB Changes:
- Overlay changes in
tegra234-p3768-0000+p3767-0000-nv.dts
- For USB host mode modifications, focus on the
usb@3610000
node - Example of enabling a node:
usb@3610000 { status = "okay"; }
- Overlay changes in
-
UART Modifications:
- Refer to the UART mapping guide:
https://elinux.org/Jetson/L4T/peripheral/#Mapping_3 - UART mappings may differ between L4T releases 35 and 36
- To disable General UART (assuming it’s
uarta:serial@3100000
):uarta:serial@3100000 { status = "disabled"; }
- Refer to the UART mapping guide:
-
Device Tree Compilation:
- After making changes, compile the modified device tree:
dtc -I dts -O dtb -o tegra234-p3768-0000+p3767-0000-nv.dtb tegra234-p3768-0000+p3767-0000-nv.dts
- After making changes, compile the modified device tree:
-
Testing and Verification:
- Flash the modified device tree to the Jetson Orin Nano
- Boot the system and verify that the changes have been applied correctly
- Use
dmesg | grep usb
to check USB configurations - For UART changes, check
/dev/ttyTHS*
devices
-
Debugging Tips:
- Use
dtc -I dtb -O dts
to convert DTB files back to DTS for inspection - Utilize
tegra-pinmux-dump
tool to verify pin configurations - Check kernel logs for any device tree related errors during boot
- Use
-
Seek Additional Support:
- For complex modifications, consider posting specific questions on the NVIDIA Developer Forums
- Provide detailed information about your custom board and desired modifications
Remember to always backup your original device tree files before making any modifications. If you encounter persistent issues, consider reverting to the original configuration and approaching the modifications incrementally.