Windows – DisplayPort Link Failure after monitor sleep

displayportmultiple-monitorssleepwindows 7

I just added a 3rd monitor to my Windows 7 64-bit computer. When the monitor goes to sleep, it won't wake up. The other two monitors wake up fine (connected via hdmi and DVI).

The new monitor I added (an Asus VS278Q-P) is connected via DisplayPort. My video card is an AMD Radeon HD 5830 card which has DVI, HDMI, and DisplayPort connections using Catalyst 15.7 driver version 15.20.1046

If I turn the monitor off and on then it will get a signal but when the monitor comes on, all windows on that monitor are moved to a different monitor and there is an error message displayed about a DisplayPort Link Failure:

enter image description here

Some forums suggest it's something to do with the DisplayPort handshake that goes on.

"By powering the monitor off/on, you are forcing the operating system
and/or video card to reinitiate the DP handshake" (source:
https://www.sapphireforum.com/showthread.php?32467-Displayport-monitor-does-not-wake-from-sleep)

I should note that my computer is set to never sleep while my monitors are set to sleep after X minutes. I've seen people say on forums that they believe when the computer is set to sleep then when the computer wakes it will send the DisplayPort handshake, but if the monitors sleep and the computer does not sleep then when the monitors wake up the video card will not send the DisplayPort handshake.

Any ideas on how to resolve this? The two workarounds I can think of are both less than ideal:

  1. Manually turn monitor on/off every time it goes to sleep and re-arrange windows
  2. Set monitors to never sleep.

UPDATE

I thought the answer was to simply disable DDC/CI as I answered below, but I was a little to quick to assume that was the answer. If the monitor goes to sleep then I can quickly wake it up and everything is fine but if it sleeps longer than say one minute then it won't wake up. Power cycling the monitor gives the DisplayPort Link Failure error mentioned above.

Best Answer

I actually think I found an answer to this. That was surprisingly fast considering the number of dead ends I saw on forums. User nixda on a different question, Turning DisplayPort monitor off disables monitor completely, says:

Disable the "DisplayData Channel Command Interface" (DDC/CI) in your monitor settings.

For my Asus LED monitor this meant going to the monitors settings menu (using the physical button on the monitor) -> System Settings -> OSD Setup -> DDC/CI and turning it off.

Seems to be working so far will update if that changes.

EDIT

I thought the above solved it because when the monitor went to sleep (power light changed from blue to orange) I could quickly wake it up without issue. However if the monitor stayed sleeping longer (say 1 minute+) then it would not wake up. I now don't think the above step is necessary.

I found a post on a dell forum which led me to the solution:

This is a video card, video card driver, or operating system power management issue. The monitor DP (DisplayPort) is passive. It simply waits for the signal from the video card to awake. By powering the monitor off/on, you are forcing the operating system and/or video card to reinitiate the DP handshake. The Radeon HD 7790 has eight power management states through its PowerTune technology. My guess is somewhere in that software is the ability to tell it to adjust what the card is doing as far as power management. (source: http://en.community.dell.com/support-forums/desktop/f/3515/t/19520244 )

Elsewhere in that thread is mention of the TriXX Tweak Utility (direct link) from Sapphire Technology (the maker of my video card). This has a setting Disable ULPS (ULPS = Ultra Low Power State). I installed that utility and checked the Disable ULPS setting and sure enough when my monitor went to sleep I could now wake it back up. Success! Well sort of, when I restarted my computer the problem returned and opening the TriXX Utility I could see that the Disable ULPS checkbox was unchecked. As far as I can tell the TriXX utility has no way to make that setting stick between reboots (I might be wrong about this).

Digging further I found several forums discussing disabling ULPS (mostly in the context of working out crossfire issues, e.g.: How to disable ULPS). In those forums the procedure they recommend is searching the entire registry for EnableUlps and changing the value of each occurrence from 1 to 0 (in fact you will see several minor variations on the exact procedure but this is the gist of it).

For me in particular I needed to change the following keys: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\amdkmdag -> EnableUlps HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\amdkmdag -> EnableUlps HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\services\amdkmdag -> EnableUlps

(The EnableUlps setting appeared elsewhere but was already set to 0. Also there's another setting EnableUlps_NA which I did not touch)

If you're like me you'll be reluctant to change the registry to fix a problem that seems like it should have a readily available solution. But as you dig around I think you'll find that ready solutions don't currently exist (and it beats modifying the DisplayPort cable with electrical tape which is an oft suggested solution)

I made the registry tweaks and now it seems to be working properly even after restarting.

Note: people say you will need to redo the registry tweaks every time you update your video drivers.