HDMI Hotplug Issue on Nvidia Jetson Orin Nano Dev Board
Issue Overview
Users of the Nvidia Jetson Orin Nano Dev board with a custom carrier board running L4T 35.5 are experiencing issues with HDMI hotplug functionality. The problem manifests in two scenarios:
- When the HDMI cable is plugged in before booting, the system works correctly, and the GNOME desktop environment is displayed.
- When the HDMI cable is plugged in after the boot process is complete, the monitor shows no signal, and the GNOME desktop environment is not displayed.
The issue affects the user experience by preventing the use of external displays when connecting them after the system has booted. This problem persists even when the HDMI cable is unplugged and re-plugged.
Possible Causes
-
Incomplete Device Tree Configuration: The device tree may not be properly configured to support HDMI and hotplug functionality fully.
-
Driver Mode Mismatch: The display driver may be running in DP (DisplayPort) mode instead of HDMI mode, causing compatibility issues with HDMI connections.
-
Firmware Settings: Incorrect firewall settings in the firmware may be preventing proper HDMI functionality.
-
GPIO Configuration: The GPIO settings for HDMI hotplug detection may not be correctly configured.
-
Display Configuration and Bringup (DCB) Image: An incorrect DCB image in the device tree could be forcing the system to use DP mode instead of HDMI mode.
Troubleshooting Steps, Solutions & Fixes
To resolve the HDMI hotplug issue, follow these steps:
-
Update Pinmux Configuration:
Use the Jetson_Orin_NX_and_Orin_Nano_series_Pinmux_Config_Template to generate a Support HDMI dts file. This step ensures that the HDMI HPD (Hot Plug Detect) pinmux is set to GPIO mode. -
Modify Firewall Settings:
Update thetegra234-mb2-bct-scr-p3767-0000.dts
file with the following patch:--- a/tegra234-mb2-bct-scr-p3767-0000.dts +++ b/tegra234-mb2-bct-scr-p3767-0000.dts @@ -5,6 +5,11 @@ / { tfc { + reg@322 { /* GPIO_M_SCR_00_0 */ + exclusion-info = <2>; + value = <0x38009696>; + };
-
Configure Hotplug GPIO:
Modify the device tree file (e.g.,tegra234-p3768-0000-a0.dtsi
) to set the hotplug GPIO:--- a/Linux_for_Tegra/source/public/hardware/nvidia/platform/t23x/p3768/kernel-dts/cvb/tegra234-p3768-0000-a0.dtsi +++ b/Linux_for_Tegra/source/public/hardware/nvidia/platform/t23x/p3768/kernel-dts/cvb/tegra234-p3768-0000-a0.dtsi @@ -274,6 +274,7 @@ display@13800000 { status = "okay"; + os_gpio_hotplug_a = <&tegra_main_gpio TEGRA234_MAIN_GPIO(M, 0) GPIO_ACTIVE_HIGH>; };
-
Update DCB Image:
Replace the existing DP mode DCB image with the HDMI mode DCB image in your device tree:- Locate the line that includes
tegra234-dcb-p3767-0000-dp.dtsi
- Replace it with
tegra234-dcb-p3767-0000-hdmi.dtsi
- Locate the line that includes
-
Reflash the System:
After making these changes, perform a complete system reflash to ensure all modifications are properly applied. -
Verify HDMI Mode:
After reflashing, connect an HDMI display and run the following command to verify that the system is running in HDMI mode:export DISPLAY=:0 xrandr
The output should show HDMI connections instead of DP connections.
-
Test Hotplug Functionality:
Disconnect and reconnect the HDMI cable while the system is running to ensure hotplug functionality is working correctly.
For more detailed information on display configuration and bringup, refer to the NVIDIA Jetson Linux Developer Guide, specifically the section on DCB (Display Configuration and Bringup).