As I wrote yesterday, my Surface Book sleep problems appear to be fixed by the recent firmware update. But what happened? Why did some Surface Book and Surface Pro 4 devices succumb to power management issues that didn’t seem to impact many other new PCs?
I stumbled badly trying to explain this problem in yesterday’s episode of Windows Weekly, but I think the truth is out there. (You’re welcome, X-Files fans.) And can now be explained more clearly.
Here, I’m relying on three sources that are worth checking out independently, plus one that was a private conversation with a PC maker:
- Microsoft’s original forum-based declaration that the Surface power management issues were a “very hard computer science problem.”
- Some useful comments by a Surface MVP in a support forum.
- A Surface for IT Pros blog post and video that we referenced in yesterday’s Windows Weekly.
- HP did not rely on the same power management scheme that Microsoft used for Surface because they knew it was broken. But they knew that when Microsoft and Intel fixed the issues with Windows 10 and Skylake processors, they could then offer this advanced sleep state as a firmware upgrade, giving additional value to customers.
So here’s the synopsis, as I understand it. (Bear with me, this isn’t an area of expertise.)
Modern, Intel-based PCs support a variety of power management sleep states (S1 to S5, where S3 is “Suspend to RAM” and S4 is “Hibernate”). There’s also an S0 state, where the PC is simply powered on normally.
But the newest Intel chipsets, including Skylake, also offer a special set of S0i”x” sleep states, including the Powered On Low Power State, which allows the PC to work much like an ARM-based phone or tablet. What this means is that S0ix-enabled PCs can “drip” data to the device—new email, notifications, software updates—even while it is sleeping. And from a hardware perspective, it means that the S0ix states can in fact shut off parts of Intel “chipset,” as think of it—it’s really a System on a Chip or SoC design—when they are not in use. In other words, it can be very efficient.
Surface Book and Surface Pro 4 are S0ix-enabled. As the Surface MVP referenced above notes, there’s an additional complication when using this technology in Windows, because desktop (Win32) applications are not compatible. So these applications are “forced into a virtual S3 State.”
“Win32 applications can misbehave and refuse to go into the virtual S3 state preventing the device to go into S0iX which causes the power drain,” he notes, referencing what we’ve come to think of as “hot bagging.” “Also, with SkyLake, Intel struggled with getting their SoCs to enter into DRIPs which allows for the lowest power levels.”
What’s unique about Surface Book and Surface Pro 4, however, is that Microsoft decided to live on the leading edge. They only support S0ix sleep states in these devices, plus a hibernation fallback that is enabled after two hours by default. The resulting scheme—which other PC makers do not use, for the most part—is calledModern Standby.
“Surface uses Modern Standby rather than traditional S3 Sleep,” Microsoft explains. “This allows us to manage power consumption right down to the individual hardware components. The net effect is near instant resume times and more efficient power consumption.”
So Surface utilizes phone/tablet-style power management, unlike PCs from HP and most other PC makers, which found this to be unreliable. (There are exceptions, of course, and now that the issue is being fixed, we should see other Skylake-based PCs add this functionality over time.)
As Microsoft explains it, there are two modes to Modern Standby: “Connected Standby, also known as InstantGo, for always-on computing” (this is S0ix) and “Disconnected Standby for longer battery life” (which is S4, or Hibernate). You can see this on your own Surface Book or Pro 4 by running the command line powercfg /a. When you do, you will see the following:
Standby (S0 Low Power) Network Connected
The output also notes that “Standby (S3) is not available.” (Neither is S1 or S2.)
Now let’s look at another Skylake-based PC, Intel’s new (2016) Spectre x360-15. When I run the powercfg /a command line on that system, I see this:
So this device, just as “modern” as Surface Book/Pro 4, doesn’t offer S0ix (“S0 Low Power”) because HP tested it and determined it wasn’t reliable. But the PC functions much like Surface Book/Pro 4 should, coming to life quickly and otherwise working as expected.
My theory is that by supporting just S0ix/hibernate, Microsoft unfortunately hobbled Surface Book and Surface Pro 4 out of the gate—for some users, a situation that is still not fully understood—because the devices couldn’t fall back on another power state. So when S0ix fails on these devices, all the system can do is heat up (“hot bag”) because it cannot asleep. And then it enters hibernate 2 hours later, when it’s too late to really help. Now that the problem fixed, things should work normally, and all Surface Book/Pro 4 users will see the benefits Microsoft originally intended: Phone/tablet-like power management behavior.
So when that unnamed Surface support rep said that “power management is a very hard computer science problem to solve especially with new silicon,” he was right. And Microsoft should be lauded for really living on the bleeding edge, in some ways. It’s just that thing kind of exploded in their face. Which is too bad.
Anyway, it appears to be fixed. And while the “why” of this episode is interesting on some level, it just being fixed is probably enough for most customers.