I have configured the device tree for our custom Jetson-TX2 based board to support dual HDMI monitors. I’m using JetPack 4.2.3. The two monitors work fine, including hot-plugging either monitor before or after boot.
However, the problem that is now happening is that if the screen is allowed to go inactive and turn off (so both monitors go blank), then moving the mouse or keyboard does not always wake up the monitors. Hence, I can be left in the strange situation where I can putty into the device from my PC and look at various logs but cannot see anything on the two monitors. Even if I unplug them and plug them back in, or turn them off and on, they remain blank and report that there is no signal.
If I change the Ubuntu settings to never let the screen go inactive, then everything is fine, but I have a battery-powered board so I would like to avoid this.
I have a attached copy of my device tree, dmesg log and xorg.0.log (I turned on X11 debugging) in a zip file. See the readme.txt in the zip file for details. The test that was performed was to change the screen activity settings in Ubuntu to be 1 minute. I then waited for the screen to go blank, waited a bit more, and then tried to wake up the device by moving the mouse and pressing Shift on the keyboard. The first two times I tried to let it go to sleep and then wake it up, everything worked. However, the third time, the monitors do not come back. They stay blank. Yet I can putty into the device from my PC and get a copy of the logs. If I leave it overnight, the system may become unresponsive. The only key difference between say the second (working) and third (not working) attempts seems to be that X11 is setting the display mode to NULL instead of 1920x1080 when things don’t work, but I don’t understand why. The two monitors are identical (BENQ GL2460).
If I just flash the board using JetPack and only change the pinmux table then I only get one HDMI monitor (as expected), but I also don’t seem to have any problems waking up the monitor so I think it is a problem in my device tree settings. There don’t seem to be any errors when trying to wake up the system in the dmesg log, or in the xorg log in this case.
Any help resolving this issue would be much appreciated.
device_tree_and_logs.zip (285 KB)
I think the device tree looks good. In general, such frame buffer behavior (blank/unblank/powerdown) should not be related to device tree. I suspect there are some possible causes
- The monitor itself.
I just tried 3 different kinds of monitors with my devkit. A monitor from Acer seems have abnormal behavior which is not able to go powerdown. It unblanks itself w/o any keyboard/mouse trigger.
However, the rest monitors work as expected.
- The framebuffer driver has something wrong.
To narrow down the cause, could you use your custom board with single head monitor first?
You could try to firstly use only one monitor and see if it can go into blanked mode w/o any problem.
I notice your log indicates many “plugged” “unplugged” log here. It should not happen if you didn’t hotplug the cable.
[b][ 218.519049] tegradc 15210000.nvdisplay: hdmi: unplugged
[/b][ 218.531631] tegradc 15210000.nvdisplay: blank - powerdown
[ 218.531640] tegradc 15210000.nvdisplay: unblank
[ 218.531653] tegradc 15210000.nvdisplay: unblank
[ 218.531663] tegradc 15220000.nvdisplay: blank - powerdown
[ 218.531669] tegradc 15220000.nvdisplay: unblank
[ 218.531676] tegradc 15220000.nvdisplay: unblank
[ 218.715114] tegradc 15220000.nvdisplay: blank - powerdown
[ 218.715125] tegradc 15220000.nvdisplay: unblank
[ 218.715690] tegra_nvdisp_handle_pd_enable: Unpowergated Head0 pd
[ 218.715777] tegra_nvdisp_handle_pd_enable: Unpowergated Head2 pd
[ 218.717093] Parent Clock set for DC plld3
[ 218.719982] tegradc 15220000.nvdisplay: hdmi: tmds rate:148500K prod-setting:prod_c_hdmi_111m_223m
[ 218.721196] tegradc 15220000.nvdisplay: hdmi: get RGB quant from EDID.
[ 218.721202] tegradc 15220000.nvdisplay: hdmi: get YCC quant from EDID.
[ 218.756246] extcon-disp-state external-connection:disp-state: cable 46 state 1
[ 218.756248] Extcon AUX0(HDMI) enable
[ 218.756314] extcon-disp-state external-connection:disp-state: cable 40 state 1
[ 218.756316] Extcon HDMI: HPD enabled
[b][ 218.756334] tegradc 15220000.nvdisplay: hdmi: plugged
[/b][ 218.767668] tegradc 15210000.nvdisplay: blank - powerdown
[ 218.767686] tegradc 15210000.nvdisplay: unblank
Also, try different monitors if possible.
Thank you so much for replying:
With regards to the monitor, I don’t think the issue is the monitor because when I do not change the device tree from JetPack then I am unable to replicate the issue. It is only after I change the device tree that I get the issue, as far as I can ascertain.
I have tried the tests again with only one monitor plugged in. I did not see the issue. I then swapped which port the monitor was plugged into. I did not see the issue. I then plugged in both monitors. Finally, I was able to replicate the issue but only on the fifth try. I will attach the dmesg log, with annotations (just search for #### for each note) to this post.
I am trying the test again with one monitor to ensure I get the same results i.e., only when two monitors are plugged in is there an issue. I will keep you posted.
As a general observation, the dmesg log indicates that it definitely seems to think the monitor was unplugged even when the monitor is plugged in but goes to sleep. I agree this is strange. The circuity for the HDMI hotplug (HDMIx_HPD) on our board is identical to the TX2 dev. kit circuitry for hotplug. Are there other HDMI signals that could cause this issue (e.g disable line?)
I will try to find another type of monitor and try the tests again as well.
dmesg-final-log.txt (145 KB)
I apologize for the multiple posts. My browser seems to be having issues refreshing properly. Is there a way to delete posts?
BTW, the issue is not getting the screen to go blank. The screen does go blank. Unfortunately, the screen can sometimes get stuck blank and then is unrecoverable after that i.e. I can putty into the device but I cannot wake up the screen any more, even if I move the mouse and keyboard attached to the USB port or unplug a monitor and plug it back in. From the tests in my previous post, it looks like it may only get stuck blank if there are two monitors connected. So far I have not been able to replicate the screen getting stuck blank when only one monitor is connected.
The issue only seems to appear when both monitors are connected. I tried for quite a while to get the screen to get stuck blank with one monitor connected (either HDMI port) to no avail. However, the problem occurred the first time when I plugged in two monitors.
BTW, I doubt it is relevant, but there are two cursors, one on each monitor. I think I just need a driver patch to get rid of that, but I haven’t done so yet.
There seems to be a forum bug at the moment. If you post and end up on a blank page, just hit the back button and then refresh. The post will have made it in, but it won’t redirect correctly to the updated thread.
Well, I managed to dredge up a different monitor (LG24M45) and connected it to the board with one of the original BENQ monitors. When the two different monitors are connected, I cannot replicate the issue. I also notice that the “hdmi: unplugged” message in the dmesg log used to appear for both nvdisplays when two BENQ monitors were used. But with one LG and one BENQ monitor, the “hdmi: unplugged” message only appears for the BENQ monitor.
Hence, you were right, it looks like it was a monitor issue all along. Sorry to waste your time. Thank you very much for your help.