Cannot get GPIO pins working - JetPack 7.2 - Orin Nano Super Development Kit

Hello,

I have a Jetson Orin Nano running JetPack 7.2. I’m trying to connect an external board via jumper cables to the 40 pin header that comes with the super development kit. I’ve been working on this for two days now. No dice.

Previously, I connected the external board to an Arduino via 5V, GND, and D0 and was able to get interrupts (via D0) on a FALLING state. When I connect 5V and GND to the Jetson (dev kit) 40 pin header, they appear to work - the external board lights up, everything looks great.

However, I cannot figure out how/where to connect the cable that was previously going to the Arduino D0 pin. The external board simply raises the voltage when it detects an environmental event and sends that via a “VIN” output to the “D0” input of the Arduino.

I’ve tried every GPIO pin on the Jetson. Furthermore, jetson-io.py doesn’t even run (it just disappears) but with JetPack 7.2, I don’t even think I’m supposed to be using that. When I boot, it says “Using DTB from configuration table” so I don’t think any of the file-based DTB methods would work (unless I want to override defaults). But, when I ask AI, it says the newest JetPack doesn’t even need jetson-io, and everything is configured by default according to the pimux spreadsheet.

Furthermore, isn’t the super development kit by default already configured for GPIO input? I have the pimux spreadsheet, but there is no explanation whether this is already the setup and I only use that for making changes? Plus, that creates a file, which isn’t the “configuration table”.

I am using libgpiod to try to monitor the lines. I understand how to map the pins to the lines, so I’m quite sure I have the lines correct. But gpiomon never shows anything, regardless of bias, falling, rising, etc.

I’m at my wits end and will have to go back to the ugly Arduino solution and connecting to Jetson via serial USB, but was really hoping the Jetson could handle such a use case.

Any help would be greatly appreciated. Please do not forward the standard links - I checked all of them out already. They’re all outdated relative to JetPack 7.2. apparently.

Thanks in advance!

Just a quick note, when I managed to get some error output from jetson-io.py, by running python3 with the -i flag, I saw this RunTime Error

“No DTB found for NVIDIA Jetson Orin Nano Developer Kit!”

— 🤖 This is an automated AI response. I’m here to help, but please verify important details! —

To address your issue with getting GPIO pins working on the Jetson Orin Nano with JetPack 7.2, let’s break down the key points and provide a step-by-step guide based on the information available in the context.

  1. Understanding the Setup: You have a Jetson Orin Nano Super Development Kit running JetPack 7.2. You’re trying to connect an external board via jumper cables to the 40-pin header. The external board previously worked with an Arduino, where it sent interrupts via a falling state on D0.

  2. Jetson Orin Nano GPIO Configuration: The Jetson Orin Nano’s GPIO configuration can be complex, especially with the introduction of JetPack 7.2, which might not require the use of jetson-io.py as in previous versions. The jetson-io.py tool was used for configuring pins, but with JetPack 7.2, the configuration is supposed to be more straightforward, potentially using the pinmux spreadsheet for custom configurations.

  3. Using the Pinmux Spreadsheet: The pinmux spreadsheet is a tool for customizing the pin configurations. However, the provided context does not offer a detailed guide on how to use it specifically for your setup. Normally, you would use this spreadsheet to generate a .dtsi file that defines your custom pin configurations.

  4. Libgpiod and GPIO Monitoring: You’re using libgpiod to monitor the lines, which is correct. However, the issue seems to be that gpiomon never shows any activity, regardless of the bias settings. This could indicate an issue with the pin configuration or the monitoring setup.

  5. Potential Solutions:

    • Check Pin Configurations: Ensure that the pins you’re trying to use are indeed configured as GPIO inputs. The default configuration might not have them set as inputs, which could explain why you’re not seeing any activity.
    • Review Pinmux Spreadsheet Usage: Without specific guidance in the context on how to use the pinmux spreadsheet for your exact setup, it’s challenging to provide precise steps. Generally, you would select the appropriate pins, configure them as inputs or outputs as needed, and then generate a .dtsi file to apply these configurations.
    • Consider Updating or Checking DTB: The message “Using DTB from configuration table” suggests that the system is using a default or predefined DTB. If your setup requires a custom DTB (which might be the case if the default doesn’t support your specific GPIO configuration), you might need to explore generating or applying a custom DTB, though this seems less likely given the context about JetPack 7.2 simplifications.

Given the constraints of the provided context and the specifics of your question, the most direct path forward seems to involve ensuring your pins are correctly configured as inputs and then troubleshooting the libgpiod setup to monitor these pins correctly. If the issue persists, exploring custom DTB configurations or seeking more detailed documentation specific to JetPack 7.2 and the Orin Nano Super Development Kit might be necessary.

State of What is Not Covered: The provided context does not offer detailed, step-by-step instructions on using the pinmux spreadsheet for custom GPIO configurations on the Jetson Orin Nano with JetPack 7.2. Additionally, troubleshooting guides specific to libgpiod issues on this setup are not covered. The context also lacks information on whether the Super Development Kit has GPIO inputs pre-configured by default and how to verify or modify this configuration directly without relying on jetson-io.py, which is indicated as not necessary for JetPack 7.2.

— We support team will also look into your issue to have further suggestions soon. please stay tuned. —

Hi Rob_R,

Please share the results of the following commands on your board.

$ cat /etc/nv_tegra_release
$ cat /etc/nv_boot_control.conf

What’s the exact pin from 40-pins header you want to use as the Input?
Have you referred to the following guide to update pinmux before use?
Jetson Orin NX and Nano Series — Generating the Pinmux dtsi Files

Results from commands:

$ cat /etc/nv_tegra_release
# R39 (release), REVISION: 2.0, GCID: 45755727, BOARD: generic, EABI: aarch64, DATE: Mon Jun  1 09:28:48 PM UTC 2026
# KERNEL_VARIANT: oot
TARGET_USERSPACE_LIB_DIR=nvidia
TARGET_USERSPACE_LIB_DIR_PATH=usr/lib/aarch64-linux-gnu/nvidia

$ cat /etc/nv_boot_control.conf
TNSPEC 3767-300-0005-T.1-1-1-jetson-orin-nano-devkit-
COMPATIBLE_SPEC 3767--0005--1--jetson-orin-nano-devkit-
TEGRA_BOOT_STORAGE mmcblk0
TEGRA_CHIPID 0x23
TEGRA_OTA_BOOT_DEVICE /dev/mtdblock0
TEGRA_OTA_GPT_DEVICE /dev/mtdblock0

Pins:

I am trying to use pins 32 and 33 for input.

Pinmux:

Yes, I’ve seen the pinmux spreadsheet, and there’s also jetson-io.py. Which one am I supposed to use? I’m not building a custom board, I’m using the developer kit board.

I managed to get jetson-io to run by creating a boot/dtb directory and copying the dbo files that matched my “cat /proc/device-tree/compatible” and tried to enable GPIO on those pins, but that boot configuration just shuts the machine down.

Thanks NVIDIA for the total lack of support. Guess we’ll have to find a new solution for productizing our device. After three days of research, I think this topic has the answer. My device is maintaining a HIGH signal and when it detects an event, it drops to LOW quickly. Therefore, I need to catch FALLING events. Apparently, NVIDIA’s Jetson Orin Nano b.s. GPIO header can’t even do this simple task.

This is beyond undocumented, this is almost like nobody at NVIDIA even knows how the H these things work. Why create products that you don’t even know how to use?

Jetson Nano GPIO goes high, but not low - Jetson Systems / Jetson Nano - NVIDIA Developer Forums

So the prior post (where I provided a link to “GPIO goes high, but not low”) was the solution, or at least put me on the path to a solution. For some reason, the GPIO pins on the orin nano were not picking up the LOW coming from the external device because perhaps it was too quick? Or the voltage didn’t drop low enough? Or perhaps the details are in the aforementioned post.

How I got it working:

Added Arduinos back to the mix. Since the Arduino GPIO does pick up the FALLING of the signal, I created a tiny sketch that resends that signal via GPIO (i.e., using Arduino’s digitalWrite()) into the nano and voila, everything is now working. I suppose I could also use a resistor of some sort (that was mentioned in the above reference post as well) instead of the Arduino, but either way there’s something between the device and the nano.

The primary goal of not using serial communications between the device and the nano has been achieved, albeit it sure would’ve been nice if nano’s GPIO could have detected the FALLING signal off the bat.