Xavier NX : No output on HDMI

Hello All,

I connected a DISPLAY to my Xavier NX. No output. I captured the dmesg output as I unplugged
and replugged in the DISPLAY … Any help will be much apprecaited.

Thank you
Sandeep

[ 539.544072] extcon-disp-state external-connection:disp-state: cable 53 state 0
[ 539.544085] Extcon HDMI: HPD disabled
[ 539.544095] tegradc 15200000.display: hdmi: unplugged
[ 539.546570] tegradc 15200000.display: blank - powerdown
[ 539.546604] tegradc 15210000.display: blank - powerdown
[ 543.291753] tegradc 15200000.display: hdmi: edid read failed
[ 543.292084] tegradc 15200000.display: hdmi: using fallback edid
[ 543.292123] tegradc 15200000.display: blank - powerdown
[ 543.292150] tegradc 15200000.display: unblank
[ 543.293437] tegra_nvdisp_handle_pd_enable: Unpowergated Head0 pd
[ 543.293644] tegra_nvdisp_handle_pd_enable: Unpowergated Head1 pd
[ 543.306295] tegradc 15200000.display: hdmi: tmds rate:74250K prod-setting:prod_c_hdmi_54m_111m
[ 543.309021] tegradc 15200000.display: hdmi: get YCC quant from EDID.
[ 543.313796] extcon-disp-state external-connection:disp-state: cable 47 state 1
[ 543.313802] Extcon AUX1(HDMI) enable
[ 543.313895] extcon-disp-state external-connection:disp-state: cable 53 state 1
[ 543.313901] Extcon HDMI: HPD enabled
[ 543.313911] tegradc 15200000.display: hdmi: plugged
[ 543.318606] tegradc 15200000.display: blank - powerdown
[ 543.342559] extcon-disp-state external-connection:disp-state: cable 47 state 0
[ 543.342567] Extcon AUX1(HDMI) disable
[ 543.370997] tegra_nvdisp_handle_pd_disable: Powergated Head1 pd
[ 543.373228] tegra_nvdisp_handle_pd_disable: Powergated Head0 pd
[ 543.373355] tegradc 15210000.display: blank - powerdown
[ 543.391561] tegradc 15200000.display: blank - powerdown
[ 543.391615] tegradc 15200000.display: unblank
[ 543.393036] tegra_nvdisp_handle_pd_enable: Unpowergated Head0 pd
[ 543.393259] tegra_nvdisp_handle_pd_enable: Unpowergated Head1 pd
[ 543.404577] tegradc 15200000.display: hdmi: tmds rate:74250K prod-setting:prod_c_hdmi_54m_111m
[ 543.406241] tegradc 15200000.display: hdmi: get YCC quant from EDID.
[ 543.410785] extcon-disp-state external-connection:disp-state: cable 47 state 1
[ 543.410790] Extcon AUX1(HDMI) enable
[ 543.410868] tegradc 15200000.display: unblank
[ 543.410902] tegradc 15210000.display: blank - powerdown

Is that display a native HDMI monitor or using a adapter?

It looks like jetson side fails to read EDID from the monitor.

It is a native display connected via a HDMI-> mini HDMI cable.

Sandeep

If you monitor “dmesg --follow” on another host PC running Linux, and watch for new log lines as it plugs in, what do you see? Preferably with the same cable, but regular HDMI would also be useful. I’m curious if another computer also fails EDID. If it fails on another computer, and if not using the full-to-mini HDMI cable, it would imply an issue of the monitor. If it then fails with that full-to-mini cable, I suspect the cable.

The other reason it might fail is if you are using a custom carrier board and the device tree is incorrect. The correct power rail has to be enabled, and the HDMI hot plug detect also has to be correct. The device tree is what makes that happen, and differs between different carrier board.

Thank you all for the debugging help. As it turns out there was a problem with the 5V supply on the robot.
Once I got the 5V (USB-C) connected to the display it works.
Now I have a new problem. The Xavier NX does not power up the USB ports till a little bit after boot.
I am using this power the Display so it doesn’t recognize see it. If I use an external supply then no
“touch screen” .

Not sure how to solve this.

Sandeep

Both USB and HDMI are “hot plug”, meaning that timing of plug-in shouldn’t matter (although in reality timing does often matter). One thing Jetsons tend to do to save power is to go into a power save mode if a device is not immediately detected. Sadly, not every device will respond correctly to a device trying to run after the bus is “temporarily” suspended. I will suggest that you try disabling autosuspend on USB before other solutions.

You could add this to the kernel command line via the “APPEND” key/value pair in “/boot/extlinux/extlinux.conf”:
usbcore.autosuspend=-1
(APPEND is a space-delimited value)

Or you could add it to “/etc/sysctl.conf” (just put this at the end of the file):
options usbcore autosuspend=-1

If that does not work, then you’ll probably need to go to an externally powered USB HUB. The HUB will remain powered even when the Jetson is off (not ideal on battery power unless the power off includes the HUB, and enables the HUB before the Jetson boots).

Thank you very much for the suggestions, I will try the powered hub.
The display uses USB-C for power & touch screen , since the Xavier powers on the USB
later in the sequence the HDMI is not detected at boot. The HOT plugin for HDMI
does not seem to work (perhaps it has something to do with the Display itself).

Will update when the Powered hub comes in.

Thank you
Sandeep

Technically the monitor itself should still be detected if designed correctly. The touch screen is a separate issue.

The “normal” case of proper HDMI or DisplayPort design includes a DDC wire for query of plug-n-play information. That information is in the form of an i2c protocol, and the data itself is EDID2. The part which is interesting is that this i2c circuitry is not supposed to be powered by the monitor itself. There is an extra wire in HDMI and DisplayPort which powers the i2c circuit whenever a hot plug is detected, and it is this which seems to be incorrectly powered by the USB-C instead of via the HDMI or DisplayPort wiring. It is the GPU which should supply that monitor power (for the query only). This is why computers don’t lose their configuration for a given monitor even when the monitor is powered off.

If hot plug does not work, then the plug-n-play component won’t load. There is, however, still a question: Is it the hot plug detect which fails, or is the detect working, and the power to supply i2c failing? It is a chain of those two events which is needed. Sometimes monitors break this by powering their own i2c, which is really a broken monitor. Powering USB first is a workaround.

One thing you might consider on a regular Linux desktop PC, while monitoring “dmesg --follow”:

  • Connect the monitor, but keep the USB-C disconnected. Is there a log message regarding HDMI? If so, then I think hot plug has the possibility of working. If not, then go to the next step…
  • Plug in the USB-C to the monitor. We don’t care about log messages regarding the touchscreen, but if you now see a new HDMI device show up, then you can conclude that the monitor was not designed correctly. The video cable itself should supply the power for detect, not the USB-C.

Powered HUBs though are a nice thing to have around. They make USB somewhat more reliable in many cases, plus they allow the end device to have more power available without the host itself being loaded down.

Your assessment is correct, the display is indeed wired incorrectly.
Linux Desktop PC only recognizes the HDMI when the USB-C is plugged in.
The powered hub solved the problem, I now have the touch screen functionality
as well.

Thank you very much.
Sandeep

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.