Second monitor not detected, or wrong resolution and refresh rate
Windows reads the monitor's capabilities over the cable. When that read fails, the display either does not appear or appears with a default resolution.
What you see
A monitor that works on another machine shows nothing, or shows at 1024x768 with no higher option available. DisplayPort monitors frequently disappear after sleep.
What is actually wrong
A failed EDID read — bad cable, a DisplayPort link that has not renegotiated after sleep, an adapter that cannot carry the bandwidth, or a stale display configuration Windows has cached for that monitor.
Codes and articles
Fixes (2)
Force a DisplayPort renegotiation
DisplayPort or USB-C, especially after sleep or a monitor power cycle.
Unplug the DisplayPort cable at both ends, wait ten seconds, and reconnect the monitor end first.
DisplayPort signals hot-plug detection over a dedicated pin. When a monitor powers off before the PC, the PC removes the display and does not always re-add it — the manual replug is what triggers the detection event.
Force a detection pass.
Start-Process ms-settings:displayIn Display settings, use Multiple displays → Detect.
Clear the cached configuration for that monitor so Windows re-reads its capabilities.
Get-ChildItem 'HKLM:\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration' | Select-Object -First 10 NameRenaming or exporting then deleting the Configuration and Connectivity keys under GraphicsDrivers forces a clean re-detect at the next boot. Export them first.
Get-CimInstance -Namespace root\wmi -ClassName WmiMonitorBasicDisplayParams | Format-Table InstanceName,MaxHorizontalImageSize,MaxVerticalImageSizeProve the cable and the bandwidth
HDMI, DVI, or anything through an adapter or dock.
Read the monitor's reported name and serial. If nothing is returned, the EDID read is failing and it is a cable or port problem, not a driver one.
Get-CimInstance -Namespace root\wmi -ClassName WmiMonitorID | ForEach-Object { [PSCustomObject]@{ Name = -join [char[]]($_.UserFriendlyName | Where-Object { $_ -gt 0 }) Serial = -join [char[]]($_.SerialNumberID | Where-Object { $_ -gt 0 }) }}
This is the cleanest test available without opening anything. A monitor that is physically connected but returns no EDID has a broken cable, a dirty port, or a passive adapter that does not carry the data pins.
Swap the cable for a known-good one of the correct standard. A 4K 60Hz signal needs HDMI 2.0 or better and a cable rated for it — an older cable will give 4K at 30Hz or nothing.
Connect the monitor directly to the machine, bypassing docks and adapters entirely, to establish whether the dock is the fault.
Check the graphics driver is the vendor's rather than the Microsoft Basic Display Adapter, which supports one resolution and no multi-monitor.
Get-CimInstance Win32_VideoController | Format-Table Name,DriverVersion,CurrentHorizontalResolution,CurrentRefreshRate
Where this stops. This write-up was written and checked by hand. It says what each step changes, how to confirm it worked and how to reverse it, and anything destructive is flagged before you reach it. If it does not match what your machine is doing, search the Support Centre for the exact code or message — and when something needs a person, get in touch.