ORIN NX unable to use HDMI display

I have designed an Orin NX motherboard, but I am unable to use HDMI display. After turning on the device, there was no response when the monitor was connected, and the screen remained black. I tried flashing the device tree Quick Start and added codes according to the tutorial below, but it didn’t work. I can only connect to Orin NX remotely through SSH. What can I do?


Jetpack: 5.1.2
L4T: 35.2.1

Above screenshot is not sufficient to enable HDMI.

Please refer to this Orin AGX version patches.

Or you could directly use p3509 board config in your Linux_for_Tegra. That one is by default for Orin NX HDMI setup.

Thank you for your reply. For the first solution, are you referring to modifying the source files in Driver Package (BSP) Sources and then recompiling the kernel? For the second, I finished flashing the board in Linux_for_Tegra and my flash command 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. Does this config refer to the p3509 board config you mentioned?
The flash log
flash_1-3_0_20250321-122000.log (86.1 KB)

  1. Mostly for modifying device tree.

  2. Yes, p3509-a02+p3767-0000 is the one that enables HDMI configuraiton.

  1. Sorry, I don’t know where the device tree file is. I have downloaded the source file from https://developer.nvidia.com/embedded/jetson-linux-r3521. Is the device tree in /home/avava/Downloads/orin_src/public_sources/Linux_for_Tegra/source/public/kernel_src/hardware/nvidia/platform/t23x/concord/kernel-dts ? If so, what should I do after I modify the file?
  2. I use the config file but it doesn’t work. The flash log has been uploaded.
  1. Check /boot/dtb on your Orin NX board. It will tell you which dtb is in use. Then go back to your source code folder and check that dts.

  2. What does that mean “not work”? Not able to boot or HDMI has problem? or you cannot tell?

I have applied the patch, rebuilt the kernel and flashed the board. Then I replaced the dtb file in /boot/dtb. But ORIN NX still couldn’t use HDMI to display. It was working but the screen didn’t show anything. I could only connect to Orin NX remotely through SSH.


Flash command: 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
Additionally, if I changed the board to Jetson Xavier NX, the monitor could display normally.

Hi,

Actually you don’t need to apply any patch if you are using " p3509-a02+p3767-0000". This one already include every patch for HDMI display.

OK. But after flashing the board, it still couldn’t display.
And the result of “xrandr” is “Can’t open display”. Are the display drivers gone?
dmesg:
dmesg.txt (67.1 KB)
lsmod:
lsmod.txt (2.6 KB)
xorg:
xorg.log (15.1 KB)

  1. You have to “export DISPLAY=:0” before running xrandr.
  2. From xorg log, I saw the HDMI status is always disconnected.

[ 17.714] (–) NVIDIA(GPU-0): DFP-0: disconnected
[ 17.714] (–) NVIDIA(GPU-0): DFP-0: Internal TMDS
[ 17.714] (–) NVIDIA(GPU-0): DFP-0: 165.0 MHz maximum pixel clock

Is this based on your attempt to change device tree or it is default " p3509-a02+p3767-0000"?

This is based on the default “p3509-a02+p3767-0000”.
Additionally, I measured the voltage of the HDP pin(96) of ORIN NX, which was 0V when HDMI was plugged in and 1.8V when unplugged. It seems that the hardware design is fine

Is this based on rel-35 or rel-36?

rel-35

Will you see anything printed in your dmesg when you hotplug the HDMI cable?

NVRM rpcRmApiControl_dce: NVRM_RPC_DCE: Failed RM ctrl call cmd:0x731341 result 0xffff:

Could we review the hardware design first? Could you attach the schematic of HDMI part?

Sorry, the schematic is a bit messy, but I wrote the connection relationship next to it
HDMI.pdf (113.5 KB)
This is the NX part

Hi,

I checked.

  1. Schematic looks correct.

  2. Your dmesg gives this information which indicates you still changed something in the device tree but not using the default one. What did you change there?

[ 0.002496] DTS File Name: /home/avava/Downloads/orin_src/public_sources/Linux_for_Tegra/source/public/kernel_src/kernel/kernel-5.10/arch/arm64/boot/dts/../../../../../../hardware/nvidia/platform/t23x/p3768/kernel-dts/tegra234-p3767-0000-p3509-a02.dts
[ 0.002501] DTB Build time: Mar 22 2025 12:46:59

I replaced the dts file with my own file that generated by the source code. But it didn’t work.
Now I’m trying to re-flash the board, using default " p3509-a02+p3767-0000". But It says “Error flashing non-qspi storage”.
The flash log:
flash_1-3_0_20250326-154248.log (28.8 KB)

Anything from the uart log side?