MacBook разряжается в спящем режиме
Очень краткий пост, без воды, предисловий и т.п.
Проблема
MacBook, несмотря на все хвалебные отзывы на тему его автономной работы, в наглую высаживает батарею в спящем режиме. Примерно так процентов на 40 за несколько часов нахождения в рюкзаке… Никакие настройки, доступные в разделе “Экономия энергии”, возникшую проблему не решают.
Причина проблемы и ее решение
Оказывается, что тот набор настроек, который доступен в графическом интерфейсе, не то что немного не полный, а в принципе не отражает большинство возможных параметров, которые так или иначе влияют на живучесть мака при питании от батареи.
Для решения проблемы нам понадобится терминал и одна команда (утилита) pmset. Сначала про команду и ее параметры.
pmset управляет настройками управления электропитания, она позволяет как посмотреть текущие настройки для каждого из источников питания, так и изменить их. Наиболее важные параметры pmset:
- -g – отображает текущие значения настроек электропитания;
- -g custom – отображает настройки для каждого источника питания
- -a – позволяет изменить необходимые параметры для всех источников питания;
- -b – позволяет изменить необходимые параметры при питании от батареи;
- -c – позволяет изменить необходимые параметры при питании от сетевого адаптера.
Итак, открываем терминал и вводим команду pmset -g custom и смотрим на значения параметров, которые будут выведены. Скорее всего значения будут очень похожи на те, которые представлены на картинке ниже:
Сначала проверяем пару базовых параметров:
- hibernatemode – позволяет изменить режим гибернации. Параметр важный и менять его нужно с осторожностью. Для ноутбуков его значение равно 3. Если вы не разбираетесь в тонкостях значений режимов гибернации, то ни в коем случае не меняйте этот параметр!
- standby – обеспечивает переход в режим гибернации. Для всех источников питания он должен быть равен 1, иначе остальные параметры перевода в режим гибернации будут нерабочими.
Понятно, что в реальности нас интересуют параметры при питании от аккумулятора, а параметры для сетевого адаптера мы можем в принципе и не трогать. Мы будем менять 4 значения, которые реально влияют на переход ноутбука в режим сна:
- standbydelaylow – задает время в секундах для перехода из режима сна в режим гибернации при низком заряде батареи. Рекомендую выставить значение 1800;
- standbydelayhigh – задает время в секундах для перехода из режима сна в режим гибернации при высоком заряде батареи. Рекомендую выставить значение 3600;
- tcpkeepalive – запрещает различную сетевую активность, при изменении предупреждает о возможной некорректной работе функции “Find My Mac”. Выставляем 0 для отключения;
- ttyskeepawake – предотвращает засыпание системы, если любой tty активен (например, удаленная сессия). Выставляем 0 для отключения.
Для того, чтобы изменить указанные выше настройки вводим 4 команды в терминал (обязательно от имени суперпользователя):
sudo pmset -b standbydelaylow 1800 sudo pmset -b standbydelayhigh 3600 sudo pmset -b tcpkeepalive 0 sudo pmset -b ttyskeepawake 0
Отменяем внесенные изменения
Если вы переживаете, что ввели ошибочные параметры, то не бойтесь – все изменения вы можете отменить и вернуться к значениям по умолчанию. Для того, чтобы это сделать, просто откройте окно “Экономия энергии” из меню настроек (пример окна в самом начале поста) и нажмите кнопку “Настройки по умолчанию”. Данное действие сбросит все настройки электропитания на начальные.
Здравствуйте при вводе команды , следующей строчкой выбивает запрос пароля , а сам параметр не меняется , подскажите что делать?
Вы должны ввести пароль. Команда sudo позволяет пользователям без полномочий root запускать команды, которые обычно требуют привилегий суперпользователя.
Здравствуйте! Почему ввод пароля не кликабельный, тоесть не могу вввести?
При использовании команды с sudo у вас в терминале появится запрос пароля (строка Password). Просто вводите пароль админа и нажимаете Enter. Никаких символов при вводе вы не увидите (не будет ни звездочек, ни самого пароля).
Да я понял Максим. А это нужно каждую команду поотдельности вводить, я так понимаю? Запрос пароля идет после каждого ввода команды. Так ведь?
Пароль он у вас запросит один раз. Для sudo по умолчанию время сессии (или сеанса) равно 15 минут.
И можете показать скрин как должно выглядить после именения?
Да, конечно. Вот скрин: https://yadi.sk/i/0nTI8wfG5uCtyg
Добрый день! Параметры не меняются, думал sip защита – снял ее. Все равно не меняет, мак ос Каталина 10.15.2
Делаю все верно, ввожу пароль, после просто вылетает такая же строка ввода команды, как при первом входе в терминал. Подскажите, что может быть
Добрый день!
Ситуация какая-то странная. Пример, который показан сделал тоже на Каталине (правда какая точно версия была я уже не помню).
Добрый день. Сделала всё, как вы написали – сработало, спасибо! Но меня все же интересует вопрос – может ли как-это нанести урон на диск быстрый уход в гибернацию, ведь при уходе в режим гибернации у нас оперативная память (точнее данные в ней) записываются на диск. Надеюсь, вы поняли мой вопрос)))) Заранее спасибо за ответ!)
Ничего страшного не произойдет, не переживайте! Диск – вещь достаточно надежная, с огромным ресурсом на запись (если у вас стоит родной яблочный SSD). Тем более лучше пусть ваш ноутбук будет часто засыпать и просыпаться, чем непрерывно работать в закрытом рюкзаке без возможности нормально охлаждаться.
Ну и с наступающим Новым Годом вас!
Здравствуйте! У меня макбук про М1. К сожалению вообще не выходит строга гибернации. Только это:
Battery Power:
Sleep On Power Button 1
standby 1
powernap 1
ttyskeepawake 1
displaysleep 30
sleep 1
tcpkeepalive 1
lessbright 1
disksleep 10
AC Power:
Sleep On Power Button 1
standby 1
powernap 1
ttyskeepawake 1
womp 1
displaysleep 30
networkoversleep 0
sleep 1
tcpkeepalive 1
disksleep 10
Здравствуйте! У меня идентично – макбук air М1. И строга гибернации отсутствует.
Добрый день! Спасибо за алгоритм! Вопрос, после введения пароля всплывает
This option disables TCP Keep Alive mechanism when sytem is sleeping. This will result in some critical features like ‘Find My Mac’ not to function properly.
Что необходимо сделать, чтобы подтвердить действие, согласившись с предупреждением?
Да, просто соглашаетесь и всё.
Спасибо! Глупое уточнение: а как можно согласиться с предупреждением? Какое сочетание клавиш или команда?
Посмотрел на это предупреждение на своем маке. Оно не требует никаких подтверждений. Можете после команды проверить значение tcpkeepalive с помощью команды sudo pmset -g custom (в самом начале будет Battery power, который вам и нужен).
Спасибо большое, всё сработало! Круто, что дали такую статью и ответили на комментарии! Удачи 🙂