Issue with GPIO on Jetson Orin Nano with Jetpack 6

I’m having trouble getting the physical pin #11 to output a HIGH signal (works fine as input) on my Jetson Orin Nano developer kit (8GB) after installing Jetpack 6. When connecting a multimeter between pin 11 and pin 39 (GND), the output signal isn’t going HIGH.

Commands Used:

  1. Configuring as input:
    sudo gpiomon --num-events=10 --rising-edge --falling-edge gpiochip0 112
    Output:
    event: FALLING EDGE offset: 112 timestamp: [ 139034.836228574]
    event: RISING EDGE offset: 112 timestamp: [ 139043.106526297]

gpioinfo | grep “PR.04”
Output:
line 112: “PR.04” “gpiomon” input active-high [used]

  1. Configuring as Output HIGH:
    sudo gpioset --mode=time --sec=10 gpiochip0 112=1

gpioinfo | grep “PR.04”
Output:
line 112: “PR.04” “gpioset” output active-high [used]

With Jetpack 5.1, everything works fine. Any ideas on what could be causing this issue?

Did you remember to configure the pinmux before using this pin?

Hi Wayne! I tried to but I could not proceed with the steps. I created the pinmux.dtsi, gpio.dtsi, padvoltage.dtsi
but then I stuck in finding de <l4t_top> path.

" Copy the padvoltage.dtsi and pinmux.dtsi files to the <l4t_top>/bootloader/generic/BCT/ directory and copy the gpio.dtsi file to the <l4t_top>/bootloader/ directory."

I thought that it was not necessary base on the information of the gpioinfo (and because it was working well as INPUT):
sudo gpioinfo
gpiochip0 - 164 lines:
line 0: “PA.00” “regulator-vdd-3v3-sd” output active-high [used]
line 1: “PA.01” unused input active-high
line 2: “PA.02” unused input active-high
line 3: “PA.03” unused input active-high
line 4: “PA.04” unused input active-high
line 5: “PA.05” unused input active-high
line 6: “PA.06” unused input active-high
line 7: “PA.07” unused input active-high
line 8: “PB.00” unused input active-high
line 9: “PC.00” unused input active-high
line 10: “PC.01” unused input active-high
line 11: “PC.02” unused output active-high
line 12: “PC.03” unused input active-high
line 13: “PC.04” unused output active-high
line 14: “PC.05” unused input active-high
line 15: “PC.06” unused output active-high
line 16: “PC.07” unused input active-high
line 17: “PD.00” unused input active-high
line 18: “PD.01” unused input active-high
line 19: “PD.02” unused input active-high
line 20: “PD.03” unused input active-high
line 21: “PE.00” unused input active-high
line 22: “PE.01” unused input active-high
line 23: “PE.02” unused input active-high
line 24: “PE.03” unused input active-high
line 25: “PE.04” unused input active-high
line 26: “PE.05” unused input active-high
line 27: “PE.06” unused input active-high
line 28: “PE.07” unused input active-high
line 29: “PF.00” unused output active-high
line 30: “PF.01” unused input active-high
line 31: “PF.02” unused output active-high
line 32: “PF.03” unused output active-high
line 33: “PF.04” unused output active-high
line 34: “PF.05” unused input active-high
line 35: “PG.00” “Force Recovery” input active-low [used]
line 36: “PG.01” unused input active-high
line 37: “PG.02” “Suspend” input active-low [used]
line 38: “PG.03” unused input active-high
line 39: “PG.04” unused input active-high
line 40: “PG.05” unused input active-high
line 41: “PG.06” unused output active-high
line 42: “PG.07” “cd” input active-low [used]
line 43: “PH.00” unused output active-high
line 44: “PH.01” unused input active-high
line 45: “PH.02” unused input active-high
line 46: “PH.03” “camera-control-output-low” output active-high [used]
line 47: “PH.04” unused input active-high
line 48: “PH.05” unused input active-high
line 49: “PH.06” unused output active-high
line 50: “PH.07” unused output active-high
line 51: “PI.00” unused input active-high
line 52: “PI.01” unused input active-high
line 53: “PI.02” unused input active-high
line 54: “PI.03” unused input active-high
line 55: “PI.04” unused input active-high
line 56: “PI.05” kernel input active-high [used]
line 57: “PI.06” unused input active-high
line 58: “PJ.00” unused input active-high
line 59: “PJ.01” unused input active-high
line 60: “PJ.02” unused input active-high
line 61: “PJ.03” unused input active-high
line 62: “PJ.04” unused input active-high
line 63: “PJ.05” unused input active-high
line 64: “PK.00” unused input active-high
line 65: “PK.01” unused input active-high
line 66: “PK.02” unused input active-high
line 67: “PK.03” unused input active-high
line 68: “PK.04” unused output active-high
line 69: “PK.05” unused output active-high
line 70: “PK.06” unused input active-high
line 71: “PK.07” unused input active-high
line 72: “PL.00” unused input active-high
line 73: “PL.01” unused input active-high
line 74: “PL.02” unused input active-high
line 75: “PL.03” unused input active-high
line 76: “PM.00” kernel input active-high [used]
line 77: “PM.01” unused input active-high
line 78: “PM.02” unused input active-high
line 79: “PM.03” unused input active-high
line 80: “PM.04” unused input active-high
line 81: “PM.05” unused input active-high
line 82: “PM.06” unused input active-high
line 83: “PM.07” unused input active-high
line 84: “PN.00” unused input active-high
line 85: “PN.01” unused output active-high
line 86: “PN.02” unused input active-high
line 87: “PN.03” unused input active-high
line 88: “PN.04” unused input active-high
line 89: “PN.05” unused input active-high
line 90: “PN.06” unused input active-high
line 91: “PN.07” unused input active-high
line 92: “PP.00” unused input active-high
line 93: “PP.01” unused input active-high
line 94: “PP.02” unused input active-high
line 95: “PP.03” unused input active-high
line 96: “PP.04” unused input active-high
line 97: “PP.05” unused input active-high
line 98: “PP.06” unused input active-high
line 99: “PP.07” unused input active-high
line 100: “PQ.00” unused input active-high
line 101: “PQ.01” unused input active-high
line 102: “PQ.02” unused input active-high
line 103: “PQ.03” unused output active-high
line 104: “PQ.04” unused input active-high
line 105: “PQ.05” unused output active-high
line 106: “PQ.06” unused output active-high
line 107: “PQ.07” unused input active-high
line 108: “PR.00” unused input active-high
line 109: “PR.01” unused input active-high
line 110: “PR.02” unused input active-high
line 111: “PR.03” unused input active-high
line 112: “PR.04” “gpioset” output active-high [used]
line 113: “PR.05” unused input active-high
line 114: “PX.00” kernel input active-high [used]
line 115: “PX.01” kernel input active-high [used]
line 116: “PX.02” unused input active-high
line 117: “PX.03” unused input active-high
line 118: “PX.04” unused input active-high
line 119: “PX.05” unused input active-high
line 120: “PX.06” unused input active-high
line 121: “PX.07” unused input active-high
line 122: “PY.00” unused output active-high
line 123: “PY.01” unused input active-high
line 124: “PY.02” unused input active-high
line 125: “PY.03” unused input active-high
line 126: “PY.04” unused output active-high
line 127: “PY.05” unused input active-high
line 128: “PY.06” unused input active-high
line 129: “PY.07” unused input active-high
line 130: “PZ.00” unused input active-high
line 131: “PZ.01” “interrupt” input active-high [used]
line 132: “PZ.02” unused input active-high
line 133: “PZ.03” unused input active-high
line 134: “PZ.04” unused input active-high
line 135: “PZ.05” unused input active-high
line 136: “PZ.06” unused input active-high
line 137: “PZ.07” unused input active-high
line 138: “PAC.00” unused output active-high
line 139: “PAC.01” unused input active-high
line 140: “PAC.02” unused input active-high
line 141: “PAC.03” unused input active-high
line 142: “PAC.04” unused input active-high
line 143: “PAC.05” unused input active-high
line 144: “PAC.06” unused input active-high
line 145: “PAC.07” unused input active-high
line 146: “PAD.00” unused input active-high
line 147: “PAD.01” unused input active-high
line 148: “PAD.02” unused input active-high
line 149: “PAD.03” unused input active-high
line 150: “PAE.00” unused input active-high
line 151: “PAE.01” unused input active-high
line 152: “PAF.00” unused input active-high
line 153: “PAF.01” unused input active-high
line 154: “PAF.02” unused input active-high
line 155: “PAF.03” unused input active-high
line 156: “PAG.00” unused input active-high
line 157: “PAG.01” unused input active-high
line 158: “PAG.02” unused input active-high
line 159: “PAG.03” unused input active-high
line 160: “PAG.04” unused input active-high
line 161: “PAG.05” unused input active-high
line 162: “PAG.06” unused input active-high
line 163: “PAG.07” unused input active-high
gpiochip1 - 32 lines:
line 0: “PAA.00” unused input active-high
line 1: “PAA.01” unused input active-high
line 2: “PAA.02” unused input active-high
line 3: “PAA.03” unused input active-high
line 4: “PAA.04” unused output active-high
line 5: “PAA.05” “regulator-vdd-3v3-pcie” output active-high [used]
line 6: “PAA.06” unused input active-high
line 7: “PAA.07” unused input active-high
line 8: “PBB.00” unused input active-high
line 9: “PBB.01” unused input active-high
line 10: “PBB.02” unused input active-high
line 11: “PBB.03” unused output active-high
line 12: “PCC.00” unused output active-high
line 13: “PCC.01” unused output active-high
line 14: “PCC.02” unused output active-high
line 15: “PCC.03” “mux” output active-high [used]
line 16: “PCC.04” unused input active-high
line 17: “PCC.05” unused input active-high
line 18: “PCC.06” unused input active-high
line 19: “PCC.07” unused input active-high
line 20: “PDD.00” unused input active-high
line 21: “PDD.01” unused input active-high
line 22: “PDD.02” unused input active-high
line 23: “PEE.00” unused input active-high
line 24: “PEE.01” unused input active-high
line 25: “PEE.02” unused input active-high
line 26: “PEE.03” unused input active-high
line 27: “PEE.04” “Power” input active-low [used]
line 28: “PEE.05” unused input active-high
line 29: “PEE.06” unused input active-high
line 30: “PEE.07” unused input active-high
line 31: “PGG.00” unused input active-high

Could you provide to me further information of how to find the <l4t_top> path please?

Hi Wayne! I find in other post that I should change the files in the PC HOST, no in the Jeston… so finally I did it.

So now this is the result:
gpioinfo | grep “Jetson-gpio”
line 41: “PG.06” “Jetson-gpio” output active-high [used]
line 43: “PH.00” “Jetson-gpio” output active-high [used]
line 85: “PN.01” “Jetson-gpio” output active-high [used]
line 105: “PQ.05” “Jetson-gpio” output active-high [used]
line 106: “PQ.06” “Jetson-gpio” output active-high [used]
line 112: “PR.04” “Jetson-gpio” output active-high [used]
line 122: “PY.00” “Jetson-gpio” output active-high [used]
line 123: “PY.01” “Jetson-gpio” input active-high [used]
line 125: “PY.03” “Jetson-gpio” output active-high [used]
line 126: “PY.04” “Jetson-gpio” output active-high [used]
line 136: “PZ.06” “Jetson-gpio” input active-high [used]

… but I still do not have any voltage in the pins setted as “output”
Attached are the files…

Any further idea?

Orin-jetsonorinnano-pinmux .dtsi.zip (6.1 KB)

l4t_top means the Linux_for_Tegra directory you are using to flash the jetson on your x86 host PC…

Please make sure the pinmux setting for that pin is really set as this first.

To use a pin as GPIO, ensure that E_IO_HV field is disabled in corresponding pinmux register of the GPIO pin. You can disable the 3.3V Tolerance Enable field in the pinmux spreadsheet.
Also, make sure Pin Direction to Bidirectional so that userspace framework can operate GPIO in both input and output direction. After these configurations, reflash the board with the updated pinmux file.

This is mentioned on document.
https://docs.nvidia.com/jetson/archives/r36.3/DeveloperGuide/HR/JetsonModuleAdaptationAndBringUp/JetsonAgxOrinSeries.html?highlight=gpio#identifying-the-gpio-number

If you didn’t do the pinmux, then it has chance GPIO would not be able to work.

Hi Wayne. Many thanks for the quick answer.
There is no luck… I change the pinmux setting in the template, this is the information of that PIN11 in the pinmux.dtsi:

uart1_rts_pr4 {
nvidia,pins = “uart1_rts_pr4”;
nvidia,function = “rsvd1”;
nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
nvidia,tristate = <TEGRA_PIN_DISABLE>;
nvidia,enable-input = <TEGRA_PIN_ENABLE>;
nvidia,lpdr = <TEGRA_PIN_DISABLE>;
};

Also based on the TRM info
PADCTL_G3_UART1_RTS_0 Offset: 0x98
Read/Write: R/W
Parity Protection: Y
Shadow: N
SCR Protection: PADCTL_G3_SCR_SCR_UART1_RTS_0
Reset: 0x00000454 (0bxxxx,xxxx,xxxx,xxxx,xxx0,x1x0,01x1,0100)
Bit Reset Description
12 DISABLE E_SCHMT:
0 = DISABLE
1 = ENABLE
10 SFIO GPIO_SF_SEL:
0 = GPIO
1 = SFIO
8 DISABLE E_LPDR:
0 = DISABLE
1 = ENABLE
7 DISABLE E_LPBK:
0 = DISABLE
1 = ENABLE
6 ENABLE E_INPUT:
0 = DISABLE
1 = ENABLE
4 TRISTATE TRISTATE:
0 = PASSTHROUGH
1 = TRISTATE
3:2 PULL_DOWN PUPD:
0 = NONE
1 = PULL_DOWN
2 = PULL_UP
3 = RSVD
1:0 UARTA PM:
0 = UARTA
1 = RSVD1
2 = RSVD2
3 = RSVD3"

I check using devmen base
optima@optima-desktop:~$ sudo devmem2 0x02430098
[sudo] password for optima:
/dev/mem opened.
Memory mapped at address 0xffff8a486000.
Value at address 0x2430098 (0xffff8a486098): 0x55
optima@optima-desktop:~$ sudo devmem2 0x02430098 w 0x00000054
/dev/mem opened.
Memory mapped at address 0xffffac9ac000.
Value at address 0x2430098 (0xffffac9ac098): 0x55
Written 0x54; readback 0x54
optima@optima-desktop:~$ sudo devmem2 0x02430098
/dev/mem opened.
Memory mapped at address 0xffffbe6a8000.
Value at address 0x2430098 (0xffffbe6a8098): 0x54

With tha setup I shoul have any voltage… but cero value is shawn in the multimeter.

Could you help me to understand if the “sudo devmem2 0x02430098 w 0x00000054” command is ok, pls

Thanks in advance.
Federico

Please directly dump these and attach. This is human readable info.

cat /sys/kernel/debug/pinctrl/2430000.pinmux/pinconf-groups

btw, have you tried other pins?

I’ve tried to control UART1_RTS - PR.04(PIN11 of 40-pin) as expected on Orin Nano devkit with JP6.

Please refer to the following steps.

  1. Update the configuration in pinmux spreadsheet as following
  2. Generate device tree files and name them as pinmux.dtsi and gpio.dtsi (remember to modify the #include in pinmux.dtsi for gpio.dtsi)
  3. Modify the following line in jetson-orin-nano-devkit.conf
- PINMUX_CONFIG="tegra234-mb1-bct-pinmux-p3767-dp-a03.dtsi";
+ PINMUX_CONFIG="pinmux.dtsi";
  1. Put pinmux.dtsi in <Linux_for_Tegra>/bootloader/generic/BCT/ and gpio.dtsi in <Linux_for_Tegra>/bootloader/
  2. Flash the board to apply the change
  3. Run the following commands to control the pin
$ sudo su
# gpioset --mode=wait `gpiofind "PR.04"`=1
2 Likes

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