GPIO Control on JP6 Orin Nano and NX

Hi,
I want to control the GPIO09 (PAC.06), make it as an output and low.
Am using the Orin Nano and NX Jetson.
I tried the python library Jetson.GPIO but it doesn’t seems to be working…
I have also tried the C library libgpiod. The below is the image of commands i used to control the pin.

I need help with controlling the GPIO on my Orin nano and nx jetson, am using Jetpack 6.0.

Please first make sure the pin you want to use is configured as an output pin in the pinmux spreadsheet.
Then

gpioset --mode=wait 0 144=0

--mode=wait is important because the change on output voltage will end as soon as gpioset returns in the shell, and if this pin is by default high voltage, you only get to measure the low voltage for a very very short time, and --mode=wait will make the program wait there until ENTER is pressed.

This is the output of gpioinfo 0


As you can see the line 144 is set as output and is active high.

Also i tried running the command gpioset --mode=wait 0 144=0
We are trying to control the gpio09, i.e pin 7 on the devkit.
we want to control gpio09/PAC.06 and make it low as soon as it boots.
We want to use this on other custom boards too.

Have you measure it with a multimeter?
I don’t know what eaxctly is the issue now.

Yes, we measured the pin via multimeter.
Also, we have configured it as output low.


As you can see in the image, one side am using the gpioset with wait,
on another tab am just showing the output for gpioinfo 0.
Its showing up as used but high. How can i make it low?
Its okay even if i can do it during runtime and not at bootup.

active-high is not the same as high output voltage…
Or you don’t know what I’m talking about?

Can you please explain it?
i want that pin voltage to be low.
I want to control the gpio, how can we do that?

As it is an output pin, whether it’s active-low or active-high makes no difference at all:

Either your pinmux is not set correctly, or maybe you just use the wrong physical pin that is not PAC.06.


The pinmux is correct, We are using orin nano and nx.
And if thats the thing, i’ll check with other GPIO pin on the board.
Also can you explain how can i set a pin as an output directly via CLI?
Please give an example if possible.

It’s not possible on JetPack 6.
Unless you enable GPIO sysfs in kernel config.

So, in JP6 if i enable the kernel config, i should be able to control the gpio via sysfs?
I believe that sysfs control was removed in JP6.

YES, but we really don’t suggest using it anymore, as it has been removed from upstream Linux kernel a long time ago.
I’d suggest going back to JetPack 5 first, making sure everything like the pinmux and your hardware setting is correct, and you are able to achieve any high/low voltage you want, then switch to JetPack 6.

Dave,
Thanks for the response .
As a developer I am using other Jetson devices like Nano and NX. I never had to change the DTSI for these GPIO on J39 connectors. Only we are struggling with this JP 6.0 on ORIN Nano as well as NX. SO you mean we cant use jetpack 6.0 as is and development has to be done with JP5.

OK, so by default this pin is already set as an output GPIO pin, then no change is required in pinmux.
I’m sure this is working.

We tried to make the GPIO11 high,
By default the pin is set as output and low.
i used the same command you gave me, its not working. I am using the dev kit to check all this. Is this the only way to configure the pin??

Hi,

Please make sure you are making changes in the right pinmux config.
You can check your flashing log, and there’s a snippet like this:

copying pinmux_config(/mnt/1T-HDD/BSP/r36.2/Linux_for_Tegra/bootloader/generic/BCT/tegra234-mb1-bct-pinmux-p3767-dp-a03.dtsi)... done.
copying gpioint_config(/mnt/1T-HDD/BSP/r36.2/Linux_for_Tegra/bootloader/generic/BCT/tegra234-mb1-bct-gpioint-p3767-0000.dts)... done.
copying pmic_config(/mnt/1T-HDD/BSP/r36.2/Linux_for_Tegra/bootloader/generic/BCT/tegra234-mb1-bct-pmic-p3767-0000-a02.dts)... done.
copying pmc_config(/mnt/1T-HDD/BSP/r36.2/Linux_for_Tegra/bootloader/generic/BCT/tegra234-mb1-bct-padvoltage-p3767-dp-a03.dtsi)... done.

There are two variants of Orin Nano DevKit, A01 and A03, and if you are using the A03 variant, PAC.06 is by default configured as an input instead of output pin. You can change the tab in the Excel spreadsheet, and make sure you are making changes in the Jetson_Orin_NX_Series+DP A03 tab.

Hi,

I just tested again with the DP A03 pinmux setting, and I can freely control GPIO9(PAC.06) to output either high/low voltage.
Please give it a try.

How do i just make it high or low and do not wait for it.
like i can terminate the command and it should be set to the mode what i have set.
How can i do that?

The effect does not last permanently. Changes in voltage disappears as soon as the program ends.
It’s the design of libgpiod itself.

We also tried to control the pin PN.01, but when we make it low it stays high, only sometimes it works and pin becomes low. what might be the issue??
the pin is set as output.

2 Likes