GPIO
Introduction
The GPIO header on reComputer carrier boards is a versatile hardware interface designed to connect the AI compute module directly with external sensors and actuators. Featuring a pinout highly compatible with the Raspberry Pi ecosystem, it allows developers to easily integrate off-the-shelf electronics for rapid prototyping. Beyond basic digital input and output, these multiplexed pins can be configured to support standard communication protocols like I2C, SPI, UART, and PWM, enabling seamless hardware control for robotics and IoT projects using simple libraries such as Jetson.GPIO.
reComputer J401
reComputer J401
Jetson.GPIO is NVIDIA's Python library for controlling the 40-pin GPIO header on Jetson devices. Its API is intentionally similar to RPi.GPIO, which makes it approachable for users coming from Raspberry Pi development.
Install with pip
If the library is not preinstalled, the simplest method is:
sudo pip3 install Jetson.GPIO
Manual Installation
If you need to install the library from source:
mkdir -p /opt/seeed/development_guide/05_gpio
cd /opt/seeed/development_guide/05_gpio
git clone https://github.com/NVIDIA/jetson-gpio
cd jetson-gpio
sudo python3 setup.py install
User Permissions
Allow the current user to access GPIO:
sudo groupadd -f -r gpio
sudo usermod -a -G gpio seeedReplace seeed with your actual username if needed.
Udev Rule
Copy the rule file and reload udev:
cd /opt/seeed/development_guide/05_gpio/jetson-gpio
sudo cp lib/python/Jetson/GPIO/99-gpio.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm trigger
JetPack 6.2 Compatibility Note
On some JetPack 6.2 setups, you may need to export the model name before using the library:
export JETSON_MODEL_NAME=JETSON_ORIN_NANO40 pin
GPIO stands for General Purpose Input/Output. These pins let software read external digital signals or drive simple peripherals such as LEDs, buttons, buzzers, and control lines.
Numbering Modes
The Jetson.GPIO library supports two common numbering schemes:
| Mode | Description | Typical Use |
|---|---|---|
BOARD | Numbers pins by their physical location on the 40-pin header | Best when you are wiring directly from the header silkscreen or a pinout diagram |
BCM | Numbers pins by the GPIO mapping used by the library | Best when you are following Python GPIO examples that refer to logical GPIO IDs |
GPIO.BOARD Layout

GPIO.BCM Layout

Example Pin Reference
The image below shows an additional pin-reference example that is useful before testing input or output functions.

GPIO Input
This section shows how to read a GPIO input on Jetson by connecting a test pin to GND and 3.3V and observing the input state in software.
Hardware Connection
Use jumper wires to connect the header pins as shown below. A simple test method is to connect GPIO.BOARD 12 to GND first.

[!CAUTION] Double-check the pin mapping before wiring. Incorrect connections can short the board.
Read the Signal
Run the sample script from the jetson-gpio examples:
cd /opt/seeed/development_guide/05_gpio/jetson-gpio/samples
sudo python3 simple_input.py
If the result matches the expected low level, reconnect the test pin from GND to 3.3V and run the script again:
cd /opt/seeed/development_guide/05_gpio/jetson-gpio/samples
export JETSON_MODEL_NAME=JETSON_ORIN_NANO
python3 simple_input.py
The terminal output should now report a high-level signal.
GPIO Output
Introduction
On JetPack 6.2, many pins that previously supported both input and output may behave as input-only until the pinmux is adjusted. This page introduces two practical ways to restore output behavior on supported pins:
- A temporary
busybox devmemmethod - A more persistent device-tree overlay method
Method 1: Temporary Output with busybox
Step 1: Query the Pinmux Register
Use jetson-gpio-pinmux-lookup to find the register address for a header pin:
jetson-gpio-pinmux-lookup 31
The example below shows the returned register value for pin 31.

Step 2: Configure Output Mode
Install busybox if needed:
sudo apt install busyboxThen write the pinmux register value:
sudo busybox devmem 0x02430070 w 0x004
Step 3: Run the Output Test
Update the sample script to use the correct BCM pin for your test case, then run it:


cd /opt/seeed/development_guide/05_gpio/jetson-gpio/samples
export JETSON_MODEL_NAME=JETSON_ORIN_NANO
python3 simple_out.py
You can verify the output level change with a multimeter or oscilloscope.
Method 2: Device-Tree Overlay
This method is better if you want the pin configuration to persist.
Clone the helper project and edit the DTS file:
cd /opt/seeed/development_guide/05_gpio/jetson-gpio
git clone https://github.com/jetsonhacks/jetson-orin-gpio-patch.git
cd jetson-orin-gpio-patch
vim pin7_as_gpio.dts
Adjust the pin definition for the GPIO you want to change, then build the overlay:
dtc -O dtb -o pin7_as_gpio.dtbo pin7_as_gpio.dts
sudo cp pin7_as_gpio.dtbo /boot
sudo /opt/nvidia/jetson-io/jetson-io.py

After the overlay is enabled, use the known BCM pin number in the test script.

Run the output test again:
cd /opt/seeed/development_guide/05_gpio/jetson-gpio/samples
python3 simple_out.pyReferences
reComputer Super J401
reComputer Super J401
Introduction
GPIO stands for General Purpose Input/Output. These pins let software read external digital signals or drive simple peripherals such as LEDs, buttons, buzzers, and control lines. The reComputer Super features a 40-pin extension header that provides access to GPIO pins, allowing for easy integration with external devices.

Hardware Connection
The reComputer Super features a 40-pin extension header that provides access to GPIO pins. To use the GPIO pins, you need to connect external devices to the appropriate pins on this header.
40-Pin Header Pinout
The detail of 40-pin header is shown below:
| Header Pin | Signal | BGA Pin | Default Function |
|---|---|---|---|
| 1 | 3.3V | - | Main 3.3V Supply |
| 2 | 5V | - | Main 5V Supply |
| 3 | I2C1_SDA | PDD.02 | I2C #1 Data |
| 4 | 5V | - | Main 5V Supply |
| 5 | I2C1_SCL | PDD.01 | I2C #1 Clock |
| 6 | GND | - | Ground |
| 7 | GPIO09 | PAC.06 | General Purpose I/O |
| 8 | UART1_TXD | PR.02 | UART #1 Transmit |
| 9 | GND | - | Ground |
| 10 | UART1_RXD | PR.03 | UART #1 Receive |
| 11 | UART1_RTS | PR.04 | UART #1 Request to Send |
| 12 | I2S0_SCLK | PH.07 | Audio I2S #0 Clock |
| 13 | SPI1_SCK | PY.00 | SPI #1 Clock |
| 14 | GND | - | Ground |
| 15 | GPIO12 | PN.01 | General Purpose I/O |
| 16 | SPI1_CS1 | PY.04 | SPI #1 Chip Select #1 |
| 17 | 3.3V | - | Main 3.3V Supply |
| 18 | SPI1_CS0 | PY.03 | SPI #1 Chip Select #0 |
| 19 | SPI0_MOSI | PZ.05 | SPI #0 Master Out / Slave In |
| 20 | GND | - | Ground |
| 21 | SPI0_MISO | PZ.04 | SPI #0 Master In / Slave Out |
| 22 | SPI1_MISO | PY.01 | SPI #1 Master In / Slave Out |
| 23 | SPI0_SCK | PZ.03 | SPI #0 Clock |
| 24 | SPI0_CS0 | PZ.06 | SPI #0 Chip Select #0 |
| 25 | GND | - | Ground |
| 26 | SPI0_CS1 | PZ.07 | SPI #0 Chip Select #1 |
| 27 | ID_I2C_SDA (I2C0_SDA) | PDD.00 | I2C #0 Data |
| 28 | ID_I2C_SCL (I2C0_SCL) | PCC.07 | I2C #0 Clock |
| 29 | GPIO01 | PQ.05 | General Purpose I/O |
| 30 | GND | - | Ground |
| 31 | GPIO11 | PQ.06 | General Purpose I/O |
| 32 | GPIO07 | PG.06 | General Purpose I/O |
| 33 | GPIO13 | PG.00 | System Reserved |
| 34 | GND | - | Ground |
| 35 | I2S0_LRCK (I2S0_FS) | PI.02 | Audio I2S #0 Frame Sync |
| 36 | UART1_CTS | PR.05 | UART #1 Clear to Send |
| 37 | SPI1_MOSI | PY.02 | SPI #1 Master Out / Slave In |
| 38 | I2S0_SDIN (I2S0_DIN) | PI.01 | Audio I2S #0 Data In |
| 39 | GND | - | Ground |
| 40 | I2S0_SDOUT (I2S0_DOUT) | PI.00 | Audio I2S #0 Data Out |
GPIO Library Installation
Numbering Modes
The Jetson.GPIO library supports two common numbering schemes:
| Mode | Description | Typical Use |
|---|---|---|
BOARD | Numbers pins by their physical location on the 40-pin header | Best when you are wiring directly from the header silkscreen or a pinout diagram |
BCM | Numbers pins by the GPIO mapping used by the library | Best when you are following Python GPIO examples that refer to logical GPIO IDs |
GPIO Usage Examples
Basic GPIO Output
import Jetson.GPIO as GPIO
import time
# Set GPIO mode
GPIO.setmode(GPIO.BOARD)
# Define pin
output_pin = 12
# Set up the pin
GPIO.setup(output_pin, GPIO.OUT)
try:
while True:
# Turn on the pin
GPIO.output(output_pin, GPIO.HIGH)
time.sleep(1)
# Turn off the pin
GPIO.output(output_pin, GPIO.LOW)
time.sleep(1)
except KeyboardInterrupt:
# Clean up
GPIO.cleanup()Basic GPIO Input
import Jetson.GPIO as GPIO
import time
# Set GPIO mode
GPIO.setmode(GPIO.BOARD)
# Define pin
input_pin = 11
# Set up the pin
GPIO.setup(input_pin, GPIO.IN)
try:
while True:
# Read the pin value
value = GPIO.input(input_pin)
print(f"Pin value: {value}")
time.sleep(0.5)
except KeyboardInterrupt:
# Clean up
GPIO.cleanup()Super-Specific GPIO Features
The reComputer Super's 40-pin header provides access to a range of GPIO pins, allowing for flexible integration with external devices. This makes it ideal for a variety of applications, including:
- Controlling LEDs and other indicators
- Reading button presses and sensor inputs
- Controlling motors and actuators
- Interfacing with other microcontrollers and devices
Safety Precautions
- Always double-check pin connections before applying power
- Use appropriate resistors when connecting LEDs and other components
- Avoid short-circuiting GPIO pins
- Be mindful of the maximum current rating for GPIO pins
Further Reading
Seeed Jetson AGX Orin Kit
Seeed Jetson AGX Orin Kit
Introduction
The Seeed Jetson AGX Orin Kit includes a 40-pin (2 x 20, 2.54 mm pitch) expansion header (J30).
40-Pin Header Pinout
The 40-pin expansion connector includes various audio and control interfaces including:
- Audio: I2S, Digital Mic, Clock and Control
- I2C (2x), SPI, UART, CAN, and PWM (2x)
- GPIOs (dedicated as well as shared with other interface pins)
All the signal pins are 3.3V level.
[!NOTE] Many of the signals at the 40-pin Expansion Header come from TI TXB0108 level translators. Due to the design of these devices, the output drivers are very weak so they can be overdriven by another connected device output for bidirectional support. The signals associated with these buffers have a "3" in the note column of following table. See the Jetson Nano Developer Kit 40-pin Expansion Header GPIO Usage Considerations Application Note for more information.


[!NOTE] Notes:
- This is current capability per power pin.
- These pins connect to the SoC through a FXMA2102L8X level shifter. They are open-drain (either pulled up, or driven low by the SoC when configured as outputs). The max drive that meets the data sheet VOL is 1mA.
- See related note above table.
- These pins connect to a SN74LVC4T245 buffer.
- These pins are directly connected to the SoC. The max drive that meets full data sheet VOL/VOH is 1mA.
- For power-on default, "pd" = SoC Internal Pull-down, "pu" = SoC Internal pull-up, and "z" = Tristate
- In the Type/Dir column, Output is to expansion header. Input is from expansion header. Bidir is for bidirectional signals.
- The direction indicated matches that indicated in the reference design schematics. These signals support GPIO functionality and can be bidirectional.
Automation Header
The Seeed Jetson AGX Orin Kit includes a 12-pin, 2.54 mm pitch header (J42) that makes accessible several critical system control signals.
- pin #1, #12: GND
- pin #2, #3, #4: Input, same function as three buttons: Recovery, Reset, Power.
- pin #5-#6: Open: Auto Power-On disable; Short: Auto Power-On enable.
- pin #7: CVB_STBY: output, indicating module is in sleep or not.
- pin #8: SYSTEM_OC: input, to trigger Tegra throttling.
- pin #9-#10: Open: Wake(Boot) on LAN from Off state is disabled; Short: Wake(Boot) on LAN from Off state is enable.
- pin #11: JTAG_TRST, JTAG Test Reset.
