Feature Request: Add CAN Pin Configuration to jetson-io.py
Issue Overview
Users are requesting enhancements to the jetson-io.py
tool, which currently allows modification of pin configurations for the 40-pin header, CSI-2 connector, and M.2 Key E slot on the Jetson Orin Nano Developer Kit. However, it does not support configuring CAN bus pins or the CSI-1 camera connector. Users believe that the default installation should pre-configure CAN pins since they are unlikely to be used for other purposes. The discussion revolves around how to enable CAN pin configuration through jetson-io.py
or by modifying device tree settings.
Relevant Hardware and Software Specifications
- Device: Jetson Orin Nano Developer Kit
- JetPack Version: Not explicitly mentioned but related to the current JetPack version in use.
- Current Tool: jetson-io.py
Symptoms
- Inability to configure CAN pins using the existing
jetson-io.py
tool. - Users seek a method to customize these pins for their applications.
Possible Causes
- Limited Functionality of jetson-io.py: The current implementation of
jetson-io.py
may not include options for configuring CAN bus pins, limiting its usability for certain applications. - Driver and Pinmux Configuration: Users may not be aware of how to modify pinmux settings or device tree files to enable CAN functionality.
- Lack of Documentation: Insufficient guidance on how to customize the tool or modify device tree settings may lead to confusion among users.
Troubleshooting Steps, Solutions & Fixes
Step-by-Step Instructions
-
Check Default Pin Configuration:
- Review the default pin configuration for the Jetson Orin Nano to see if CAN pins are already assigned. This can typically be found in the pinmux spreadsheet provided by NVIDIA.
-
Update Pinmux Settings:
- If you want to enable CAN on the Orin Nano devkit, you can write the correct pinmux register values directly using:
sudo busybox devmem 0x0c303018 w 0xc458 sudo busybox devmem 0x0c303010 w 0xc400
- If you want to enable CAN on the Orin Nano devkit, you can write the correct pinmux register values directly using:
-
Modify Device Tree Source Files:
- To make permanent changes, you may need to modify the device tree source files (
*.dtsi
) before flashing your board. This involves:- Editing the appropriate
.dtsi
file in<Linux_for_Tegra>/bootloader/t186ref/BCT/
. - Recompiling and flashing the updated device tree blob (DTB) file.
- Editing the appropriate
- To make permanent changes, you may need to modify the device tree source files (
-
Recompile Device Tree Blob (DTB):
- If you modify a
.dtsi
file, you will need to recompile it into a DTB file and flash it onto your Jetson board. This typically requires following steps outlined in NVIDIA’s documentation for kernel customization.
- If you modify a
-
Use jetson-io.py for Other Configurations:
- For other pin configurations that
jetson-io.py
supports, run:sudo /opt/nvidia/jetson-io/jetson-io.py
- Follow prompts to configure available pins.
- For other pin configurations that
-
Consult Documentation and Community Resources:
- Refer to NVIDIA’s official documentation on adapting pin configurations and using
jetson-io.py
. - Engage with community forums for additional insights or shared experiences regarding CAN configuration.
- Refer to NVIDIA’s official documentation on adapting pin configurations and using
Recommended Fixes
- Users have successfully enabled CAN functionality by modifying the device tree source files and recompiling them into a DTB file before flashing.
- Directly writing pinmux register values is a quick workaround for temporary configurations but should be scripted for persistence across reboots.
Best Practices for Future Prevention
- Always check NVIDIA’s latest documentation for updates on tools like
jetson-io.py
and their capabilities. - Document any custom modifications made to device trees or driver configurations for future reference.
- Test configurations in a controlled environment before deploying them in production systems.
Unresolved Aspects and Further Investigation
- Users continue to seek clarity on whether future updates to
jetson-io.py
will include support for CAN configuration. - There may be additional examples or best practices regarding modifying device trees that are not fully covered in existing documentation.
By following these troubleshooting steps and solutions, users can effectively address issues related to configuring CAN pins on their Jetson Orin Nano platform while utilizing available tools and resources.