Critical Issue: Unable to set GPIO Output (Always 0V) on Jetson Nano - Tested multiple Pins & Methods

Hello Jetson community and NVIDIA support,

I am experiencing a critical issue where I am unable to programmatically control any standard GPIO output pin on my Jetson Nano. The output voltage consistently reads 0V with a multimeter when the pin is instructed to be set HIGH (3.3V).

I am building a project that requires triggering an external LED based on a deep learning model’s output (using TensorRT/Python).

1. System Details

  • Device: Jetson Nano (Developer Kit 8GB)

  • JetPack Version: [6.2.1+b38]

  • Kernel Version: [Linux jetson 5.15.148-tegra #1 SMP PREEMPT Thu Sep 18 15:08:33 PDT 2025 aarch64 aarch64 aarch64 GNU/Linux]

  • Power Supply: [Official 4A barrel jack]

  • Jetson.GPIO version : 2.1.11

2. Verified Working Hardware

I have confirmed that the basic components are functional:

  • LED: Works correctly (tested with multimeter diode setting, lights up at approx 1.9V.

  • Resistor: 220Ohm (Correct value for 3.3V operation).

  • GND Pin: Pin 39 is used as the reliable Ground reference.

  • Fixed Voltage Pins (Pin 1, Pin 17): Both correctly provide a constant $3.3V (as expected for VCC).

3. Debugging Steps Performed (All Failed)

I systematically tested all common GPIO pins using both Python (Jetson.GPIO) and direct Linux tools (gpioset), verifying the output with a multimeter directly on the pins set to DC Voltage.

Pin Type BOARD Pin BCM Pin Status (Measured Voltage) Command Used
Output Pin 11 BCM 17 0V (Fails) sudo python3 test_led.py
Output Pin 12 BCM 18 0V (Fails) sudo python3 test_led.py & gpioset gpiochip0 18=1
Output Pin 13 BCM 19 0V (Fails) gpioset gpiochip0 19=1
Output Pin 33 BCM 13 0V (Fails) sudo python3 test_led.py
Output Pin 18 BCM 24 0V (Fails) sudo python3 test_led.py

4. Software & Permission Verification

  • Jetson.GPIO: Installed via sudo pip3 install Jetson.GPIO.

  • Permissions: User was added to the gpio and dialout groups, and the system was rebooted.

    sudo usermod -a -G gpio,dialout $USER
    
    
  • gpiod: Tools are installed and functional, but fail to activate the pins:

    gpioset gpiochip0 18=1 # Pin 12 - Measured 0V
    
    

Could someone please advise on how to diagnose if the GPIO pins are correctly configured in the Device Tree or if there are any known multiplexer settings that might be incorrectly routing the GPIO signal on this JetPack version? Is this a known issue?

Thank you for your assistance.

Hello @b.dejong1,

GPIOs on NVIDIA Jetson could get tricky, mostly because as you can imagine on a complex system as the NVIDIA Jetson is, there are a bunch of different connectors on the SOM that later map to specific pins and ports on the carrier board. And navigating that could get difficult sometimes.

Assuming you are using an NVIDIA Jetson Orin Nano Development Kit, your 40 Pin Header pinout should be:

Now, let’s say we want to use PIN 32 from the header, which is GPIO07.
And the reason why I decided to go with GPIO07 is because on the pinmux it is described as Baseboard 40 Pin GPIO on Devkit Usage. Which means that is probably not being used by anything else, which makes it easier to configure.

If we further check the pinmux configuration, it says that by default this pin is configured as input with an initial state of Internal PullDown.

So we might need to change this, and there is a couple of ways of doing it:

  1. You can generate a custom pinmux for your board.
  2. You can dynamically configure your pinmux with devmem tool.

Since it is easier for testing, lets go with option 2.

Step1. Install busybox

sudo apt-get install busybox

Step 2. Read the register address associated with SOC_GPIO07

busybox devmem 0x024300b0

Step 3. Configure SOC_GPIO07 as GPIO with Output direction

busybox devmem 0x024300b0 w 0x004

Step 4. Verify that the register was properly set

busybox devmem 0x024300b0

Once the pin is configured as GPIO with direction Out, you can start interacting with it using gpioset.

In order to know which line number to use with gpioset. You can run the following command:

gpioinfo | grep PG.06

And the line number on the left is the one you should use to interact with the pin, which in this case I believe is 41:

sudo gpioset gpiochip0 41=1

Hope this helps.
Please keep me posted on test results.

best regards,
Andrew
Embedded Software Engineer at ProventusNova

3 Likes

Hi Andrew,

Thank you very much for the understandable way of explaining, it is very helpful!

However, when I follow your steps, I get the following output:

sudo busybox devmem 0x024300b0
0xFFFFFFFF
sudo busybox devmem 0x024300b0 w 0x004
sudo busybox devmem 0x024300b0
0xFFFFFFFF

I assume this is not the expected result.
For your information, I’m using the Jetson Orin Nano Super Developer Kit with NVMe storage.

Do you have any idea what might be causing this?

Best regards!

1 Like

Hello @ferdibk,

My bad, I think I used the wrong base address.

Can you try with this instead?

0x024340b0

best regards,
Andrew
Embedded Software Engineer at ProventusNova

Thanks @proventusnova i had the same issue as @ferdibk!
i have tested the new address:

sudo busybox devmem 0x024340b0 → 0x00000400
gpioinfo | grep PG.06 → line 41 “PG.06” unused input active-high
sudo busybox devmem 0x024340b0 w 0x004
sudo busybox devmem 0x024340b0 → 0x00000400
gpioinfo | grep PG.06 → line 41 “PG.06” unused input active-high
sudo gpioset gpiochip0 41=0
gpioinfo | grep PG.06 → line 41 “PG.06” unused output active-high
sudo gpioset --mode=exit --drive=push-pull gpiochip0 41=1
:Measure 0Volt
sudo gpioset --mode=exit --drive=push-pull gpiochip0 41=0
:Measure 0Volt

although i set the pin, i still won’t get the 3.3v switching.
the pin is not set to pwm7 in jetson-io.py

maybe @ferdibk can test this aswell ?

Hi @b.dejong1,

Have you applied the following patch for JP6.x if you want to control the GPIO as Output?
40hdr - SPI1 gpio padctl register bit[10] effect by gpiod tools in JP6 - #20 by KevinFFF

the thing is that i need the Kernal files for pinctrl-tegra.c & .h which i cannot seem to get from Jetson Linux | NVIDIA Developer .
i need those to rebuild the kernal with the included script.

Hi everyone,

Thank you all for taking the time to help me, I really appreciate the effort and suggestions!
In the end, I managed to get everything working by following a tutorial from JetsonHacks.
By modifying the pin7_as_gpio.dts file and adding a few extra pins, I now have five pins working as outputs, which is more than enough for my project.

Even though the previous approaches didn’t solve it directly, your input definitely helped me understand the process better. Thanks again for your support!

Hello all!

@ferdibk, is great to hear that you managed to get your pins working!

@b.dejong1, you might want to follow the same tutorial that @ferdibk recommended.
And if that doesn’t work, you can try the recommended path by @KevinFFF.
If you need help finding the sources to apply the patch, please let us know so we can guide you on how to do that.

best regards,
Andrew
Embedded Software Engineer at ProventusNova

1 Like

To get the kernel source and rebuild the kernel image, please refer to the steps in Kernel Customization — NVIDIA Jetson Linux Developer Guide