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

  1. 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.
  2. Driver and Pinmux Configuration: Users may not be aware of how to modify pinmux settings or device tree files to enable CAN functionality.
  3. 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

  1. 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.
  2. 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
      
  3. 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.
  4. 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.
  5. 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.
  6. 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.

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.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *