GPIO-controller Defect

Hello all,

It seems that I have an issue with my Jetson Orin Nano Developer Kit (8GB), which I have diagnosed through a series of systematic tests. The issue appears to be a defect affecting multiple GPIO pins, rendering them unusable.

Problem Description

I am unable to use any of the general-purpose input/output (GPIO) pins on my Jetson board. When configured as an input with an internal pull-up resistor, the pins consistently report a LOW (or “Grounded”) state. This is incorrect, as they should be HIGH when no connection to ground is present.

Test Results and Findings

To isolate the cause, I performed the following tests. All tests were conducted with the board removed from its case and all cables disconnected from the GPIO headers to rule out any external factors. The results of these tests were consistent across all GPIO pins I examined (including pins 7, 11, 13, 15, and 29).

  1. Initial State Test: After a clean boot with no GPIO cables connected, a Python script using the Jetson.GPIO library continuously reports a LOW state. This indicates that the pins are stuck in a grounded state from the moment the board powers on.

  2. Multimeter Resistance Test (Power Off): I used a multimeter to measure the resistance between a GPIO pin (e.g., pin 7) and a GND pin (e.g., pin 6). The measurement was infinite (∞Ω), as expected, confirming there were no external short circuits between the pins when the board was powered down. This ruled out issues with my cables or breadboard.

  3. Multimeter Resistance Test (Power On): With the Jetson powered on and the script running, I measured the resistance between the same two pins. The multimeter reported a very low resistance of approximately 17.3 Ω. This measurement is a clear indication of an internal short circuit to ground on the board itself.

  4. Multimeter Intervention Test: I noticed that after the multimeter was connected and measured the resistance, the GPIO pin’s status would immediately switch to HIGH and remain there, even after the probes were removed. This temporary “fix” suggests that the small current from the multimeter was enough to break the unstable, grounded state of the pins. However, reconnecting a wire between the GPIO pin and a GND pin would revert the status back to LOW, where it would become stuck again.

this is the script i have used to see the status:

import Jetson.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
PIN = 7
GPIO.setup(PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP)
try:
while True:
state = GPIO.input(PIN)
print(“INGEDRUKT” if state == GPIO.LOW else “LOSGELATEN”)
time.sleep(0.2)
except KeyboardInterrupt:
# Voer GPIO.cleanup() uit bij het afsluiten om de pinnen te resetten
GPIO.cleanup()

is there anything i should try or do before contacting nvidia ?

Hi b.dejong1,

What’s the Jetpack version in use?

Could they work as expected before?

Could you try configuring them as Output/Drive 1 in pinmux spreadsheet and check their default state?

Please also try running the following command to check its state.

$ sudo su
# gpioinfo|grep "PAC.06"
# gpioget `gpiofind "PAC.06"`

What’s the Jetpack version in use?

  • Version: 6.2+b77

Could they work as expected before?

  • Never worked, brand new boxed unit.

Please also try running the following command to check its state.

  • gpioinfo|grep “PAC.06” : line 144: “PAC.06” unused input active-high
  • gpioget gpiofind "PAC.06" : 0

Could you try configuring them as Output/Drive 1 in pinmux spreadsheet and check their default state?

when i try this:
import Jetson.GPIO as GPIO
import time
pin = 7
GPIO.setmode(GPIO.BOARD)
GPIO.setup(pin, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Force Pull Up
time.sleep(2)
state = GPIO.input(pin)
print(f"Pin {pin} input status: {‘HIGH’ if state else ‘LOW’}")
GPIO.cleanup()

i get : Pin 7 input status: LOW

Ran:
import Jetson.GPIO as GPIOimport time
pin = 7
GPIO.setmode(GPIO.BOARD)
GPIO.setup(pin, GPIO.OUT)
GPIO.output(pin, GPIO.HIGH)
time.sleep(5)
state = GPIO.input(pin)print(f"Pin {pin} status: {‘HIGH’ if state else ‘LOW’}")
GPIO.cleanup()

- Pin 7 status: HIGH

It seems PAC.06 is configured as Input in your case.

Please use pinmux spreadsheet to configure them.
The pin state for an Input pin is decided by the external signal.
What’s your use case for this pin?

set all pins to default:

Line GPIO Status Direction Active Used/Notes
0 PA.00 regulator-vdd-3v3-sd output high used
1 PA.01 unused input high
2 PA.02 unused input high
3 PA.03 unused input high
4 PA.04 unused input high
5 PA.05 unused input high
6 PA.06 unused input high
7 PA.07 unused input high
8 PB.00 unused input high
9 PC.00 unused input high
10 PC.01 unused input high
11 PC.02 unused input high
12 PC.03 unused input high
13 PC.04 unused input high
14 PC.05 unused input high
15 PC.06 unused input high
16 PC.07 unused input high
17 PD.00 unused input high
18 PD.01 unused input high
19 PD.02 unused input high
20 PD.03 unused input high
21 PE.00 unused input high
22 PE.01 unused input high
23 PE.02 unused input high
24 PE.03 unused input high
25 PE.04 unused input high
26 PE.05 unused input high
27 PE.06 unused input high
28 PE.07 unused input high
29 PF.00 unused input high
30 PF.01 unused input high
31 PF.02 unused input high
32 PF.03 unused input high
33 PF.04 unused input high
34 PF.05 unused input high
35 PG.00 Force Recovery input low used
36 PG.01 unused input high
37 PG.02 unused input high
38 PG.03 unused input high
39 PG.04 unused input high
40 PG.05 unused input high
41 PG.06 unused input high
42 PG.07 cd input low used
43 PH.00 unused input high
44 PH.01 unused input high
45 PH.02 unused input high
46 PH.03 unused input high
47 PH.04 unused input high
48 PH.05 unused input high
49 PH.06 unused output high
50 PH.07 unused input high
144 PAC.06 unused input high
145 PAC.07 unused input high

i am trying to connect a make-break contact between 2 pins (example a switch or non-power-provider relay). as long as there is contact i need a script to run (ffmpeg or tensorflow).
heavy machinery needs to give a signal to the jetson as long as it is powerd on so i can run a script. the heavy machinery can activate a make-break-contact using a relay, but cannot provide 3.3v

Is the current issue happening on specific devkit board?
Or your issue happens on each boards?

Have you also tried using external pull-up resistor?

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