Dear Nvidia engineers.
I am using an Orin NX in a custom carrier board has an HDMI out port with L4T 36.4.4 installed.
The HDMI works normally on my monitor that has the following settings, except when the monitor is set to 4k 60hz.
My 4k monitor has compatibility mode = off, power saving mode = on.
When I have the monitor set to 4k 60hz and I plug in the HDMI cable to the Orin NX, X11 shows the monitor as connected then selects the 4k 60Hz mode then disconnects the monitor. Below is a chart of when it works an does not work.
|
Compatibility mode ON |
Compatibility Mode OFF |
| 4k 60hz |
Displays |
Does not Display |
| 4k 30hz |
Displays |
Displays |
| 1080 60hz |
Displays |
Displays |
Oscilloscope analysis
I investigated further by attaching an oscilloscope to the HPD, DDC-Data and TMDS-clk lines that lead to the Orin NX module. I only have 2 probes so the images attached are only HPD and DDC-Data lines.
I found out that the Orin NX seems to interpret the HPD 100ms low pulse as a disconnecting the HDMI cable.
4k 60Hz, Does not display to monitor (HPD is yellow, DDC is Blue)
4k 30Hz, Does display to monitor (HPD is yellow, DDC is Blue)
When reading the HDMI 2.0 specification it mentions that a low pulse of at least 100ms can mean a change in EDID. So the source is supposed to re-read the EDID. I do not know if that is what the monitor is doing with the low pulse. However, when I change the monitor to compatibility mode the monitor does not do the 100ms low pulse.
X11 debug logs
This is a shortened down X11 debug log.
X11_debug_log_4k_60hz_no_display.txt (18.6 KB)
Other debug methods tried
I tried looking for the code that processes the hpd change, but I could not find the code.
Request
It seems like Nvidia’s code is not handling the 100ms hpd low pulse correctly.
Can you help me figure out why this is occurring and if there is a fix for this?
Thank You
Hi,
Want to clarify. Is this issue happened only in one kind of 4k monitor or lots of?
Hi Wayne,
I currently only have tested with one model monitor because of the oscilloscope results. I will try and find other monitors to test. However, in the meanwhile any way to add logs to code to get a better idea of what the software is doing would be appreciated.
Thanks
No, there is nothing to add. The display driver is partially closed source.
I managed to test this on other monitors.
I tested on a dell 4k monitor and a samsung 4k monitor.
Dell 4K monitor
No custom settings.
Test environment
Orin NX <—HDMI cable—> Monitor
When I plugin a power source to the Orin NX, after boot the Orin NX does not display to the monitor.
xrandr taken after boot
DISPLAY=:0 xrandr
Screen 0: minimum 320 x 200, current 2560 x 1440, maximum 16384 x 16384
HDMI-A-0 disconnected (normal left inverted right x axis y axis)
DisplayPort-0 disconnected (normal left inverted right x axis y axis)
DisplayPort-1 connected primary 2560x1440+0+0 (normal left inverted right x axis y axis) 597mm x 336mm
2560x1440 59.95*+
1920x1200 59.95
1920x1080 60.00
1600x1200 60.00
1680x1050 59.95
1280x1024 60.02
1440x900 59.95
1280x960 60.00
1280x800 59.95
1280x720 59.95
1024x768 60.00
800x600 60.32
640x480 59.94
720x400 70.08
X11 debug logs
Dell_4k_monitor_X11_debug_log_4k_60hz_boot_no_display.txt (20.0 KB)
Oscilloscope Data
Looking at the oscilloscope data, the same thing seems to occur with the Dell monitor sending a 600ms low pulse after the Orin starts DDC communication. Then after the low pulse then X11 sets the monitor as disconnected.
Yellow is HPD, Blue is DDC
Samsung 4K monitor
Test environment
Orin NX <—HDMI cable—> Monitor
When I plugin a power source to the Orin NX, after boot the Orin NX does not display to the monitor.
xrandr/X11 logs
I did not take xrandr and X11 logs
Oscilloscope Data
Looking at the oscilloscope data, the same thing seems to occur with the Samsung monitor sending a 700ms low pulse after the Orin starts DDC communication. The DDC voltage drops at this moment which is weird, however no image is displayed. Then the monitor seems to try and get the source device to start the Read EDID data process again by sending a low pulse, this seems to lead to the Orin NX sending a disconnect related message over DDC.
If you have any other questions or requests please let me know.
Thank you
I also tested the Dell monitor when it is in power save mode.
Oscilloscope Data
The oscilloscope data from testing the Dell monitor when it is in power save mode.
I plugged in the HDMI cable to the Orin NX when the Dell monitor is in power save mode and got the same results of no image displaying on the monitor.
X11 logs
Dell_4k_monitor_X11_debug_log_4k_60hz_power_save_no_display.txt (23.3 KB)
Yes, I have one question here.
Do you know that you have to do software configuration to enable HDMI mode?
Default setting from NV devkit is DP mode.
I am using GPIO pin M 0
pinmux.dtsi
dp_aux_ch0_hpd_pm0 {
nvidia,pins = "dp_aux_ch0_hpd_pm0";
nvidia,function = "rsvd1";
nvidia,pull = <TEGRA_PIN_PULL_NONE>;
nvidia,tristate = <TEGRA_PIN_ENABLE>;
nvidia,enable-input = <TEGRA_PIN_ENABLE>;
nvidia,io-high-voltage = <TEGRA_PIN_DISABLE>;
nvidia,lpdr = <TEGRA_PIN_DISABLE>;
Config file
source "${LDK_DIR}/p3768-0000-p3767-0000-a0-nvme.conf";
.
.
.
OVERLAY_DTB_FILE="L4TConfiguration.dtbo,tegra234-carveouts.dtbo,tegra-optee.dtbo,tegra234-dcb-p3767-0000-hdmi.dtbo";
DCE_OVERLAY_DTB_FILE="tegra234-dcb-p3767-0000-hdmi.dtbo";
tegra234-p3768-0000+p3767-0001-nv.dts is the base file I overlay my custom dts file on.
Like i said originally it displays fine on full hd monitors and the original monitor at 4k 30hz. It also works fine on the dell and samsung monitors if I replug the HDMI cable when the issue occurs.
DisplayPort-1 connected primary 2560x1440+0+0 (normal left inverted right x axis y axis) 597mm x 336mm
If xrandr gives you “DisplayPort” instead of HDMI-x, then I don’t think your configuraiton takes effect.
We have seen the same behavior with the following monitors:
but it is fine with:
Samsung LU28E570DS/ZA
This is independent of what Orin NX module we use.
@benjamin.pepe thanks for brining this up and I’m so glad you did the detailed analysis!
Wayne,
In regards to the Dell monitors X11 logs showing Display port that is a first for me, I dont know why that is happening. However, when I replug the monitor after the image is not displayed on the monitor or if the monitor is not in power save mode I get the following Xlogs/xrandr and the image displays properly on the monitor.
HDMI-0 connected primary 3840x2160+0+0 (normal left inverted right x axis y axis) 597mm x 336mm
3840x2160 60.00*+ 59.94 50.00 47.95 29.97 25.00 23.98
4096x2160 59.94 50.00 47.95 29.97 25.00 23.98
2560x1440 59.95
2048x1280 60.00
2048x1080 48.00 24.00
1920x1080 60.00 59.94 50.00 23.98
1600x1200 60.00
1600x900 60.00
1280x1024 75.02 60.02
1280x720 59.94 50.00
1152x864 75.00
1024x768 75.03 60.00
800x600 75.00 60.32
720x576 50.00
720x480 59.94
640x480 75.00 59.94 59.93
Xorg_Dell_4k_normal_operation.log (19.8 KB)
If you have anything you want me to confirm or get logs of please feel free to ask.
Thank you
Thanks for adding results from various monitors on your end.
The more data the better.
Wayne,
I tried reproducing the weird xrandr data where the Display port 1 showed the 4k resolution then replug the HDMI cable to show the device is configured to HDMI. However, I was not able to reproduce the Display port 1 xrandr data.
Reproduction method
Power on the Orin NX device when the monitor was in power savings mode and the HDMI cable connected to the monitor before powering on the Orin NX. Then I unplugged the HDMI cable and replug it to show that the device is configured for HDMI.
X11 logs
Xorg_Dell_4k_display_port_reproduction_try1_with_replug.log (21.0 KB)
Does your “reproduction method” mean you saw monitor blanked?
What is the exact function of that “compatibility mode” here? Is all the situation of your “reproduce” from this compatible mode “on” case?
Blockquote
Does your “reproduction method” mean you saw monitor blanked?
The reproduction method mean that the monitor shows as disconnected in xrandr and there is no image outputted on the monitor.
The monitors also starts the countdown to enter power saving mode, indicating that the monitors do not recognize as source is present.
I think that the monitors send the HPD low pulse expecting the source to start the connection process over again, but that process does not happen so the monitors assume the source is not present.
Blockquote
What is the exact function of that “compatibility mode” here? Is all the situation of your “reproduce” from this compatible mode “on” case?
On the initial monitor that I tested, compatibility mode = on seems to mean that the HPD low pulse is not sent based on the oscilloscope data.
I have not been able to reproduce the issue when compatibility mode is “on” using the initial monitor.
All of my reproduction method on the initial monitor have been with compatibility mode “off”(ie, monitor sends a HPD low pulse).
The dell and samsung monitors do not seem to have a similar setting to compatibility mode.
Do you have Xaiver NX devkit to use as carrier board to test this issue?
This is the only method to cross check with NV devkit for Orin.
I am procuring a xavier dev kit board.
I will test and post the results when I get the board.