Nvidia Jetson GPIO pin won't stay high

So I am trying to figure out if I have a bad board, or if I’m missing something with some internal hardware that I’m not understanding how it works on the Nvidia Jetson NX

So what does work…

I have a functioning NVidia Jetson TX2

echo 466 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio466/direction
echo 1 > /sys/class/gpio/gpio466/value

466 corresponds to physical pin 11 on the 40 pin header on the TX2.

If I hook my multi-meter to pin 6 (ground) and pin 11, I see the voltage go from 0V to 3.3V as soon as I execute the final command from above.

If I do the SAME exact thing on the Nvidia Jetson Xavier NX, changing the sysfs values.

echo 428 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio428/direction
echo 1 > /sys/class/gpio/gpio428/value

If I hook my multi-meter to pin 6 (ground) and pin 11, I see the voltage go from 0V to 3.3V as soon as I execute the final command from above, HOWEVER after about 5-8 seconds the the voltage will drop to roughly 1.5V and then from that point you can’t change the value (e.g. sending echo 0 > /sys/class/gpio/gpio428/value will do nothing it will stay 1.5V). If you send echo 0 ... echo 1 ... BEFORE it locks it changes voltage correctly.

Is there some other type of hardware in the newer NVidia Jetson Xavier NX units that cause this behavior? If so how would I fix it?

Hi,

What L4T/JetPack version do you use on Xavier NX?
Please show me the result of:

sudo su
cat /sys/kernel/debug/gpio

Can you please elaborate more about this?

I was trying to short hand it…

Run

echo 1 > /sys/class/gpio/gpio428/value

I see the pin go high to 3.3v

Wait 1 second.

Run

echo 0 > /sys/class/gpio/gpio428/value

I see the pin go low to 0v.

Wait 1 second

echo 1 > /sys/class/gpio/gpio428/value

I see the pin go high to 3.3v

Wait 1 second

echo 0 > /sys/class/gpio/gpio428/value

I see the pin go low to 0v

Wait 1 second

echo 1 > /sys/class/gpio/gpio428/value

I see the pin go high to 3.3v

If I wait 5-8 seconds the gpio pin goes to 1.5v and you can’t change it. Any subsequent echo 1 > /sys/class/gpio/gpio428/value or echo 0 > /sys/class/gpio/gpio428/value and the pin stays at 1.5v.

I’ll get the Jetpack information as soon as I’m back in front of it tomorrow.

cat /etc/nv_tegra_release

R32 (release), REVISION: 5.1, GCID: 26202423, BOARD: t186ref, EABI: aarch64, DATE: Fri Feb 19 16:50:29 UTC 2021

The relevant PIN which is physical pin7 on the 40 pin GPIO header is 436.
cat /sys/kernel/debug/gpio

gpio-436 (GPIO09 |sysfs ) out lo

echo 436> /sys/class/gpio/export
echo out > /sys/class/gpio/gpio436/direction
echo 1 > /sys/class/gpio/gpio436/value

running the above, on the Xavier NX results in it going to 3.3V and then down to 1.5V after a short period of time. Only way to make it change values at that point is to disconnect the GPIO pin and then reconnect it and then it will drop down to 0V and then you can do it again.

32.5.1 is quite old.
Please update to a newer version to see if it gets solved.

So your response indicates to me that this is not working as expected then, and what I am doing should not be producing these results?

I mean you have to first clarify whether it’s a bug in old BSP, or you are doing something wrong with your commands, or it’s a hardware failure.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.