GPIO12 Logic Level Inconsistency During Shutdown on Jetson Orin NX and Orin Nano
Issue Overview
Users have reported an inconsistency in the behavior of GPIO12 during system shutdown on the NVIDIA Jetson Orin NX and Orin Nano developer boards. Specifically:
- On the Orin Nano, GPIO12 turns high during shutdown
- On the Orin NX, GPIO12 turns low during shutdown
This behavior occurs despite using the same system image and custom carrier board for both modules. The issue is isolated to the shutdown process, as GPIO12 behaves consistently between the two modules during normal operation and boot-up.
Possible Causes
-
Custom carrier board design: The interaction between the custom carrier board and the different SoM (System on Module) designs may lead to unexpected behavior during power-down sequences.
-
Level shifter influence: The presence of a TXS0108 level shifter in the circuit design could potentially affect the GPIO state during shutdown.
-
MCU interaction: The N79E8132 MCU used to detect the GPIO12 state might influence the pin’s behavior during power-down.
-
Firmware differences: Although unlikely, there could be subtle firmware differences between the Orin NX and Nano that affect GPIO behavior during shutdown.
-
Power sequencing variations: The shutdown process might trigger different power sequencing between the two modules, affecting GPIO states.
Troubleshooting Steps, Solutions & Fixes
-
Verify pinmux configuration:
Compare the pinmux settings for GPIO12 on both modules:cat /sys/kernel/debug/pinctrl/2430000.pinmux/pinconf-groups
Ensure that the settings are identical for both modules.
-
Check GPIO driver usage:
Run the following command to see if any driver is using the GPIO pin:sudo cat /sys/kernel/debug/gpio | grep PN.01
If a driver is using the pin, investigate its behavior during shutdown.
-
Isolate the level shifter:
Temporarily remove the TXS0108 level shifter from the circuit and measure the GPIO12 pin status directly. This will help determine if the level shifter is causing the inconsistency. -
Analyze flash logs:
Compare the flash logs for both Orin NX and Orin Nano to identify any differences in the flashing process or configuration. -
Use internal storage for flashing:
Try flashing the system using internal storage instead of NVMe:sudo ./tools/kernel_flash/l4t_initrd_flash.sh \ --external-device nvme0n1p1 \ -c tools/kernel_flash/flash_l4t_external.xml \ -p "-c bootloader/t186ref/cfg/flash_t234_qspi.xml" \ --showlogs \ --network usb0 \ p3509-a02+p3767-0000 internal
This may help rule out any storage-related issues.
-
Test with official developer kit:
If possible, test the behavior on the official Jetson Orin developer kit to determine if the issue is specific to the custom carrier board. -
Review custom carrier board design:
Carefully examine the circuit design, particularly the connections between GPIO12, the level shifter, and the MCU. Look for any potential issues that could cause different behavior between the two modules. -
Implement a pull-down resistor:
Consider adding a weak pull-down resistor to GPIO12 on the carrier board. This may help maintain a consistent low state during shutdown. -
Modify shutdown sequence:
If possible, modify the system’s shutdown sequence to explicitly set GPIO12 to the desired state before powering down. This can be done by creating a custom systemd service or modifying existing shutdown scripts. -
Contact NVIDIA support:
If the issue persists after trying these steps, consider reaching out to NVIDIA’s official support channels or posting on their developer forums for further assistance.
Remember to document all changes and test results thoroughly during the troubleshooting process. If you make any hardware modifications, ensure they are reversible and do not void any warranties.