Ever since I switched back to a 2K monitor at home, every time I wake the computer from sleep, all open windows end up in the upper-left corner and their size is reduced to half of what it was. Strangely, these windows still appear to be in maximized state. The culprit behind this issue is the DP's Hot Plug Detection feature.
This post was translated from my Chinese blog post with the aid of ChatGpt.
Forewarning, editing the registry carries risks. Please proceed with caution.
regedit, and press Enter to open the Registry Editor. Navigate to the following location:
Although I forgot to take a screenshot here, I’m using an image from another computer to illustrate. In essence, you will find many records within the following three paths, which store settings related to previously connected monitors, as shown below:
Usually, at this point, the issue should be resolved. Restart your monitor or perform a sleep-wake cycle to re-detect. If the problem persists on your computer, try turning off the monitor’s power switch and then turning it back on. Afterward, refresh the Registry Editor. You’ll notice a new entry under
NOEDIDxxxxxxx. Next, modify the values of
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration\NOEDIDxxxxxxx\00 to match the current resolution of your display. Please note that there is another
00 within this
00, and you should modify the values inside it as well.
If you want to understand the reason, please continue reading.
A convenient feature of most modern displays is the ability to “hot plug” into the source device while both are powered, and immediately begin functioning with correct display settings.
This behavior is facilitated by three functionalities: hot plug detection, Display Data Channel (DDC), and Extended Display Identification Data (EDID).
Hot plugging a display into a signal source means making the connection while both devices are powered. This is different from older technologies, which often required a “cold plug” with one or both devices powered down. Hot plug detection, or HPD, is a feature in HDMI, DisplayPort, and DVI specifications. It typically relies on a pin in the connector making contact to initiate the process.
The Display Data Channel (DDC) describes the protocol and physical path used for communication between the signal source and the display. It’s usually assigned to one or more pins on the interface and carries the EDID.
DisplayPort uses a versatile “AUX channel” instead of a dedicated DDC, serving as a medium for both user data (often USB) and a means of transmitting EDID and other topology information.
Extended Display Identification Data (EDID) is information provided by the display to describe its capabilities and requirements to the source device. It includes details such as manufacturer, serial number, maximum resolution, refresh rate, and color space.
When a display is turned off or enters sleep mode, it sends a signal over DDC indicating that it’s powering down. In some cases, this is interpreted by the system’s video driver or operating system as the display being unplugged. This results in the operating system rearranging desktop space and windows in a less-than-ideal manner.
Taking my monitor as an example, its original resolution is 2560x1440. However, when the monitor is turned off, the system assumes it has been unplugged. If the monitor isn’t detected, the system resorts to the default resolution stored in the registry, which is the aforementioned
NOEDIDxxxxxxx. In my case, this default resolution is 1024x768. When the monitor is turned on again, you might hear hardware plug-and-play sounds, indicating that the monitor is treated as a newly connected device. After the monitor is turned on, the resolution of all windows doesn’t change; it remains at 1024x768. This results in the perception that the windows occupy only half of the screen. Since the Windows window’s screen coordinate origin is in the upper-left corner, all windows end up crammed into the upper-left corner.
NOEDID stands for “No EDID.” If the system cannot retrieve the Extended Display Identification Data (EDID) from the monitor, it will use this configuration. This file is generated automatically when the monitor is turned off or disconnected.
It’s hard to believe that this method is actually suggested in a Dell official article. This absurd solution involves monitors like UP3214Q, P2715Q, P2415Q, etc. The suggestion is to lower the monitor’s refresh rate from 60Hz to 30Hz. This article was published in 2021, and who would want to work with a 30Hz refresh rate in 2021? It’s even difficult to scroll smoothly with such a low refresh rate.
After all, this issue is unique to DP (DisplayPort). Switching to an HDMI connection naturally resolves the problem. 🐶
Navigate to the monitor’s OSD menu and set
DP Hot-Plug Detection to
Always Active. However, this solution doesn’t apply to all monitors; only some monitors have this feature.
Introducing a hardware dongle between the monitor and the host to deceive the host can be a solution, but it comes with an additional cost.
Interestingly, a similar issue surfaced back in 2010. Someone discussed it on NVIDIA’s Reddit community. However, over a decade has passed, and whether it’s Microsoft, NVIDIA, AMD, or Intel, no one has stepped up to address this problem. Some individuals even reached out to VESA (Video Electronics Standards Association) via email, but VESA responded that while they are aware of the issue, it should be resolved by monitor manufacturers, not them – effectively passing the buck.
I drew an emoticon for them.🐶