Вы НЕ сошли с ума (о режиме сна в Windows)

Заголовок не для кликбейта, а для тех людей, кто как и я уже устали разбираться в проблемах режима сна на их новеньких ноутбуках: ВЫ НЕ СОШЛИ С УМА!!! Проблема действительно существует и она остаётся без решения со стороны Microsoft и производителей ноутбуков уже 3 (ТРИ!) года!

Суть коротко

В одном абзаце: из-за плохой реализации режима modern standby (он же S0 State), который пришёл на смену обычному режиму сна (он же S3 State), ноутбук может рандомно и без предупреждения включиться у вас в сумке. Следовательно он сожрёт весь заряд в тщетных попытках установить обновления windows (ну куда ж без них), или проверить почту, и оставит вас с пустой батареей в самый неподходящий момент, по дороге раскалив докрасна и ноутбук и всё, что лежало рядом. Чёткого и однозначного решения проблемы нет! Только различные обходные пути, с разной степенью успеха применимые от модели к модели и от вендора к вендору. Вдобавок с этими способами решения проблемы борется Microsoft, постоянно отключая способы отката на S3.

Вдохновения для написания этой статья мне придало видео от Линуса Себастьяна с канала Linus Tech Tips.
Видео без больших эмоций с описанием проблемы вы можете посмотреть вот тут. (11 минут. На английском языке). Для тех, кому лучше заходит текст, ниже будет выжимка из видео, присыпанная горьким опытом и эмоциями автора.

Теория (немножко)

Когда-то давно, во времена Windows 8, умные головы из Microsoft решили, что было бы неплохо мобильным устройствам на Windows быть более похожими на смартфоны. Чтобы они могли быть подключенными к сети постоянно и делать свои дела даже тогда, когда устройства не находятся во включенном (полностью включенном) состоянии. Так режимы сна на мобильных компьютерах стали отличаться их аналогов на стационарных.

Картинка от Microsoft с просторов интернета

ff5a022dad37f2ca606a3198904b426c.png

И пока вся эта новомодная мишура спокойно отключалась в настройках, или просто не особо лезла в повседневную жизнь со своими «улучшениями», никому оно и не мешало.

Но затем глянул ОН: Modern Standby

Если в режиме S3, питание подаётся только на оперативную память, то в режиме S0, система никогда не бывает «off». (Кавычки не мои. Microsoft и правда издевается на эту тему в своём мануале, как бы намекая, что вариантов сохранить заряд батареи у пользователей нет). Питание будет подаваться и на процессор, и на wifi модуль, чтобы

  • быстро включаться (но с этим и при выходе из обычного сна не было проблем)

  • давать приложениям Microsoft Store проявлять активность (нет, вы серьёзно?)

  • держать подключение к сети активным (зачем?)

  • получать уведомления (зачем мне в сумке уведомления на НОУТБУК?)

  • играть музыку по bluetooth (must have функция для ноутбука в сумке)

  • слушать микрофон (комментарии закончились)

Могло показаться, что я прикалываюсь, но НЕТ! Это выдержки из официального мануала!

Идеальный ноутбук в режиме сна по версии Microsoft и Intel

-Майор Пейн, я заряда батареи не чувствую! -А у тебя его нет! А-ХА-ХА-Майор Пейн, я заряда батареи не чувствую! -А у тебя его нет! А-ХА-ХА

Мой случай

Прошлый ноутбук HP у меня был на шестом поколении Intel Core (Core i7 6700HQ). Всё крайне просто: поработал, закрыл крышку и пошёл по делам. Потом открыл крышку и продолжил работу с того же места, где и был. За ночь батарея могла подсесть на 10% (или около того), если отключиться от розетки.

Однако в 2022 сменил ноутбук на более большой и новый ASUS TUF F17 (FX706HCB, Core i5 11400H). Тут то и начались проблемы.

Первый раз обнаружив горячущий ноутбук с половиной заряда в cумке, я подумал, что пропустил какую-то настройку, и что не происходит перехода в сон при закрытии крышки. Потом я начал что-то подозревать, когда подключенный к розетке ноутбук в режиме сна, начал ночью издавать такой шум вентиляторами, что мне его было слышно из соседней комнаты!

Тут вы скажете: «Стоп стоп стоп! Автор накатил сборку винды от Васяна, драйвера накачал с помойки и удивляется, что всё это не работает как задумано!» Но тут есть нюанс: я проводил тестирование на windows 10 pro, windows 11 pro, windows 11 home. Все версии лицензионные, установлены с чистого образа с сайта Microsoft, а поверх установлены последние драйвера и ПО с сайта ASUS для именно этой модели!
БОЛЕЕ ТОГО, у меня в распоряжении был ноутбук ASUS TUF F15 (FX506HCB, та же модель, только 15 дюймов), с windows 11 home, прямиком из коробки, обновлённый до последней версии windows с самыми свежими драйверами! Итог один: абсолютно случайным образом, ноутбук может:

  • НЕ уйти в сон при закрытии крышки

  • уйти в сон при закрытии крышки

  • уйти в сон при закрытии крышки, а потом включиться

  • сделать вид, что уходит в сон при закрытии крышки (случай не мой, пример будет ниже)

Перемножим комбинации на состояния «подключен»/«не подключен» к розетке и отдельно на «закрыта крышка»/«нажата кнопка сна». Да, поведение разное, даже если в разделе энергопотребление вы задали «сон» и для крышки и для кнопки! Плюс он может из сна включиться и на столе от розетки, и в сумке от аккумулятора. Думаю поведение этого ноутбука можно брать за основу идеального ГПСЧ (Генератор псевдослучайных чисел).

Сначала я искал решение на форумах ASUS и заметил, что проблема характерна не только для линейки TUF, но и для Zephyrus, ZenBook и прочих. Однако видео от Себастьяна стало большим облегчением: это не я дурак! Оно и правда не работает! То есть что бы я ни делал, хорошо не будет. Причём проблема есть и на ноутбуках других вендоров. Вывод?

Вместо вывода

Если бы Жебер попробовал настроить ноутбук с modern standbyЕсли бы Жебер попробовал настроить ноутбук с modern standby

Что делать?

Хоть статья и помечена как Tutorial, стопроцентного решения на данный момент нет.
Но попытаться стоит! Запускаем командную строку и пишем

powercfg /a

Вариант вывода командной строки №1

b2b799d770ea2749455d731659ef61c4.jpg

Режим S3 и так включен. Если в вашем ноутбуке проблемы с режимом сна, то можно проверить список ниже в разделе «Что ещё можно проверить»

Вариант вывода командной строки №2

92053a5a115ea03578e6504407033fc3.jpg

У вас есть шанс вернуть привычное поведение ноутбука. Однако не все модели, судя по отзывам, могут корректно выходить из режима сна S3, а иногда случаются другие проблемы.
Вот тут описан случай один в один с моим, когда после выхода из сна не работают FN комбинации, а вентиляторы крутятся на максимальной скорости.

Если S3 поддерживается, но выключен, нужно добавить параметр в реестр

"PlatformAoAcOverride"=dword:00000000

По пути

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power

Или вставить вот этот текст в блокнот и сохранить как файл .reg

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power]
«PlatformAoAcOverride»=dword:00000000

Примечательно, что судя по тому же мануалу, официально выхода всё же нет. Так как через BIOS режим поменять нельзя, а также нельзя менять режимы S0 и S3 без переустановки ОС (то есть замена настроек в реестре не должна помочь. Может именно потому у меня проблемы с комбинациями клавиш и вентиляторами). А как тогда менять? Вы когда-нибудь видели запрос на выбор режимов S0/S3 при установке? Подскажите, если у вас есть предположения, как читать и понимать вот эти строки из мануала:

Те самые строки

Switching between S3 and Modern Standby cannot be done by changing a setting in the BIOS. Switching the power model is not supported in Windows without a complete OS re-install.

Вариант вывода командной строки №3

Standby (S3)
The system firmware does not support this standby state

Вам могут помочь какие-то из вариантов ниже, но также без гарантий

Отключение connected при активном S0

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power]
"CsEnabled"=dword:00000000

Ещё рабочим вариантом остаётся переводить не в сон, а в гибернацию. Тогда содержимое оперативной памяти пишется на SSD/HDD. В моём случае это не подходит, потому что даже при nvme SSD выход из гибернации медленнее, чем включение с нуля, так как установлено 32Gb RAM.

Ну и когда ничего не помогло, а ноутбук нужен заряженным, можно его просто выключить. Да, мы откатываемся в мезозой эпоху до Windows 2000, когда компьютеры получили поддержку S3 на уровне ОС.

Кстати, помните про случай, когда ноутбук только делает вид, что спит? Вот тот случай. Индикатор мигает, будто компьютер спит, при этом на видео отчётливо слышен шум вентиляторов, причём на высокой скорости. Как тебе такое, Морфей?

Что ещё можно проверить

Вот неполный список того, на что стоит обратить внимание как в случае с S0, так и в случае с S3

  • активные 3D приложения в фоне (не только игры, это может быть wallpaper engine, или что-то похожее)

  • драйвера на материнскую плату и видеокарту (ы) (избитый совет, но проверить стоит)

  • настройки в панели управления, отвечающие за поведение кнопок и крышки ноутбука

  • настройки в ПО от производителя (всякие помогатели в играх, оверлеи, программы для разгона и т.д.)

  • мощные магниты рядом с герконом. (лично сталкивался с проблемой, что ноутбук случайным образом засыпает открытым на столе. Оказалось среди вещей на столе рядом с ноутбуком был магнит от жесткого диска)

Ещё пару мыслей

Есть подозрение, что по крайней мере в случае с ASUS TUF, проблема в некорректном переключении между видеокартами (если говорить не о включении в сумке, а о том, что перехода в сон вообще не происходит). В моём ноутбуке установлена Nvidia RTX 3050. И при работе от аккумулятора система отключает карту полностью (карта пропадает из диспетчера). При подключении к розетке карта появляется в системе, но не всегда. Более того и пропадает при отключении от розетки она не всегда! А когда карта активна, то при работе от аккумулятора, процессор не разгоняется выше 1.2Ghz, возможно срабатывает ограничение по суммарному энергопотреблению (но я ловил и комбинацию с работой процессора на полную мощность от аккумулятора одновременно с активной 3050).

Опять видим дикое количество комбинаций работает/не работает/работает медленно

Иногда помогает пройти по кругу 3 состояния переключателя «GPU Mode» в программе ArmoryCrate. Иногда помогает только перезагрузка.

ArmoryCrate

e6f87a17e156b223de8ef8279c1aaa81.jpg

Кстати! На ноутбке ASUS TUF FX506L с карточкой GTX1650 и процессором Core i5 10300H проблем со сном не было. Но там и не было полного отключения видеокарты при работе от аккумулятора.

Надежда?

Под видео Себастьяна отметился один из инженеров Microsoft

Его комментарий

Disclaimer: I’m a Software Engineer at Microsoft, but I do not work on the OS team. I’m only here as a viewer who is subscribed to the channel. I decided to test out your guys hypothesis and I was able to reproduce it! I setup a test where I had a laptop running Windows Powershell listening on a port while connected to power. Every time a client connected, I would print the time at which the connection was made. From another PC, I would send a packet to that laptop and see the message being printed out. I then put the laptop to sleep, and after five seconds I would send another packet to the laptop. I then waited a minute and resumed the laptop from sleep.

The following behavior would change depending on whether or not the laptop was connected to power while going to the Sleep S0 state:

— If the laptop was connected to power when I hit «Sleep», after resuming from Sleep I would see the powershell window with the messages printed out with the time at which the laptop was asleep

— If the laptop was NOT connected to power when I hit «Sleep», after resuming from Sleep I would see the powershell window with NO messages printed out

— The above behavior would not change independently of what I did with the power cable DURING sleep — that is, even if I removed the power cable during sleep, then sent new packets, after resuming from sleep (with the power cable still disconnected) I would see the messages printed out, meaning the laptop was S0 Network Connected even on battery. Bug reproduced. Btw, the opposite happens if I connect the laptop to power during S0 sleep (no messages are printed).

I will try to contact the OS team with your findings and my test setup:)
Thanks guys! This is great investigative journalism!

*

For reference, my laptop is a Dell Latitude 7420 running Windows 11 22621.819, default UEFI settings.

Powershell code for reference:

On the server (laptop):
```
> $Listener = [System.Net.Sockets.TcpListener]52134;
> $Listener.Start ();
> while ($true)
> {
> $client = $Listener.AcceptTcpClient ();
> Write-Host («Connected at » + $(Get-Date));
> $client.Close (); > }
```

On the client (another pc on the same network):

```
> $hostIp = »»
> $port=»52134»
> (new-object Net.Sockets.TcpClient).Connect ($hostIp, $port)
```

Коротко и по-русски: проблема есть, она воспроизводится (даёт скрипты для power shell для тестирования). Он не отвечает за разработку ОС, но передаст информацию в ту сторону.

Так что теоретически когда-нибудь проблема может быть решена. И те, кто не перейдут на MacBook и не разобьют в ярости свои устройства, смогут пользоваться ноутбуками как ноутбуками, без смартфоновских замашек.

© Habrahabr.ru