I'm becoming more and more convinced by my original hypothesis from Feb. 20:
"Since the behavior can be changed, this leads me to believe that the underlying issue is most likely related to firmware/drivers rather than the hardware itself (though I admit that this doesn't fully explain why my wife's Surface Pro 7 works and mine doesn't)."
I had pretty much given up on the matter until last night, when my wife's Surface Pro 7 started exhibiting the same random crashes when idle on battery. Keep in mind that this is after having had the device for 1 or 2 months without
this behavior (even when specifically testing for it). So, for her sake, I dug into the problem again...
Here are all the various workaround that I've found and successfully tested:
Option 1: Remove "Modern Standby" features and create a new (non-balanced) power plan:
- Open the Registry Editor and navigate to "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power".
- Change the "CsEnabled" value from '1' to '0'. Click OK and restart the Surface Pro.
- Create a new power plan using one of the newly available plan options. (I chose "High performance" and didn't bother changing any of its settings.)
Option 2: Change the display drivers to the Microsoft Basic Display Adapter:
- Open the Device Manager.
- Expand "Display Adapters".
- Right-click on "Intel(R) Iris(R) Plus Graphics" and select "Update driver".
- Choose "Browse my computer for driver software".
- Choose "Let me pick from a list of available drivers on my computer".
- Select "Microsoft Basic Display Adapter" and click Next to install the drivers.
Option 3: Update the display drivers to the latest version (from Intel, not Microsoft):
- Download the latest display drivers from Intel as a ZIP file: https://downloadcenter.intel.com/download/29426/Intel-Graphics-Windows-10-DCH-Drivers
- Extract the files from the ZIP file to a local folder.
- Open the Device Manager.
- Expand "Display Adapters".
- Right-click on "Intel(R) Iris(R) Plus Graphics" and select "Update driver".
- Choose "Browse my computer for driver software".
- Choose "Let me pick from a list of available drivers on my computer".
- Select the "Have Disk" button and browse to the folder containing the extracted files.
- In the "Graphics" subfolder, select the file "iigd_dch.inf" and click OK.
- Click Next to install the latest Iris Plus drivers. (This also installs the Intel Graphics Command Center application by default.)
Before posting anything, I wanted to wait until I had time to test each of these "solutions" on multiple Surface Pro 7 devices. They all seemed to work, but obviously each comes with their own pros and cons:
- Pros: Stops the crashing...
Cons: Requires registry changes and reboots. Removes quality of life features: quick wake from sleep and battery power settings.
2. Pros: Easiest to implement and fastest way to stop the crashing.
Cons: Initially changes display settings (display scaling primarily). Removes color profile switching and possible GPU benefits.
3. Pros: Official drivers don't remove any features. Includes several months of potential bug fixes versus Microsoft's current version.
Cons: Goes against official Microsoft recommendations. Unsure how Windows Update will handle driver updates in the future.
Then, while I was still testing, user 'rfh2001' posted another possible solution:
Option 4: Disable the "Panel Self Refresh" option in the Intel Graphics Command Center:
- "I've fixed it on my SP7 i5/8G/256G by installing the Intel Graphics Command Center from the Microsoft Store, opening it, going to System>Power>Panel Self Refresh and turning it off for both "On Battery" and "Plugged In"."
I decided it would be worthwhile to try that too -- on one Surface with the latest Microsoft drivers and on another with the latest Intel drivers. I can happily report that it worked on both devices and is another good option.
So... Having tested and confirmed four software-based workarounds (drivers, registry, etc.) on multiple Surface Pro 7s (one that failed out of the box and the other that was only affected months later), I'm now further convinced that this is not a hardware
issue and exchanging the device is probably not the solution. And for the record, I did that too.
I'm guessing that Microsoft has just been slow to address an issue that exists with the current set of drivers, but will get around to it eventually. After all, this sort of thing has apparently happened before:
https://news.softpedia.com/news/microsoft-confirms-surface-pro-unexpected-shutdown-issue-promises-fix-516962.shtml