Ограничение заряда батареи у ноутбуков. Linux статьи
Написать статью
Войдите, чтобы писать статьи

Ограничение заряда батареи у ноутбуков

25

Ограничение заряда батареи у ноутбуков

Материал написан пользователем сайта.

Данная статья является вольным пересказом всего того объёма информации, что мне удалось перечитать на данную, интересующую меня, тему. Статья может быть полезна владельцам ноутбуков Asus, Lenovo/Thinkpad, Huawei, LG, Samsung, Sony, Toshiba.

Asus Battery Health Charging

Используя в своей повседневной работе ноутбук Asus, мне хотелось продлить срок жизни его батареи на как можно более долгий срок. В Windows для этого есть фирменная утилита Asus Battery Health Charging, которая позволяет ограничивать уровень заряда батареи до 60% и 80%. Когда ноутбук постоянно подключен к сети электропитания, лучше всего ограничивать заряд до 60%.

В данном руководстве я покажу один из способов, как эту задачу можно решить в GNU/Linux дистрибутивах с системой инициализации systemd.

Первое, с чего нужно начать, это узнать тип вашей батареи с помощью команды в терминале:

ls /sys/class/power_supply
Узнаём тип батарей

В ответ должно прийти одно из обозначений:

BAT0, BATT, BAT1, BATС. (В моём случае это BAT0)

Поддержка функции ограничения заряда батареи стала доступна начиная с ядра Linux 5.4 - но только для батарей типа BAT0. Поэтому, на всякий случай, проверьте соответствие типа вашей батареи и ядра:

BAT0 - ядро не ниже 5.4

BATT - ядро не ниже 5.7

BAT1 - ядро не ниже 5.8

BATС - ядро не ниже 5.9

Теперь, зная тип батареи, можем проверить, поддерживает ли ваш ноутбук ограничение заряда батареи. Для этого в терминале вводим команду:

ls /sys/class/power_supply/BAT*/charge_control_end_threshold

Где вместо BAT* подставьте тип вашей батареи.

Проверяем, поддерживает ли ноутбук ограничение зарядки

Если эта команда возвращает путь /sys/class/power_supply/BAT*/charge_control_end_threshold , то ваш ноутбук поддерживает ограничение заряда батареи - можно переходить ко второму пункту.

Если же команда выдаёт ошибку, или сообщает, что «нет указанного файла или директории» («there's no such file or directory») - то ваш ноутбук не поддерживает данную опцию.

Второе - создаём файл сервиса systemd. Для этого вводим в терминале:

sudo nano /etc/systemd/system/battery-charge-threshold.service

В появившемся поле вставляем следующий текст:

[Unit]
Description=Set the battery charge thresholdAfter=multi-user.target
StartLimitBurst=0
[Service]
Type=oneshotRestart=on-failure
ExecStart=/bin/bash -c 'echo CHARGE_STOP_THRESHOLD > /sys/class/power_supply/BATTERY_NAME/charge_control_end_threshold'
[Install]
WantedBy=multi-user.target

Где вместо BATTERY_NAME - вставляем тип вашей батареи (BAT0, BATT, BAT1 или BATС)

А вместо CHARGE_STOP_THRESHOLD - необходимый уровень заряда 60 или 80.

То есть строчка должна иметь вид (в моём случае для уровня 60% и типа батареи BAT0):

ExecStart=/bin/bash -c 'echo 60 > /sys/class/power_supply/BAT0/charge_control_end_threshold'

Другие числа на Asus могут работать некорректно, или не работать вообще, т.к. в утилите для Windows нет других опций. Поэтому лучше придерживаться этих двух уровней.

После этого сохраняем документ, нажав Ctrl+O, Enter, затем выходим Ctrl+X.

Теперь включим и запустим созданный нами сервис:

sudo systemctl enable battery-charge-threshold.service
sudo systemctl start battery-charge-threshold.service

Чтобы убедиться, что наш сервис работает, выполним команду:

cat /sys/class/power_supply/BATTERY_NAME/status

Если уровень заряда батареи достиг указанной нами величины, ответ команды должен быть таким:

Not Charging

Батарея не заряжается

Данный способ был успешно опробован на ноутбуке Asus VivoBook 15 X542UF в дистрибутивах Linux Mint 21-21.2 Cinnamon, elementary OS 6.1, Manjaro 22-23 KDE и Gnome (версии DE соответствуют версиям дистрибутивов на момент их выпуска). Больше всего мне понравилось, как в KDE отображается подробная информация о том, что уровень заряда батареи лимитирован. Ни в каком другом рабочем окружении такой информации не было.

Отображение лимита заряда в KDE

В Gnome было указано просто, что батарея не заряжается.

Отображение лимита заряда в Gnome

в Cinnamon было указано оставшееся время работы от батареи, хотя зарядка так же остановилась.

Ещё в настройках KDE отображалась опция «останавливать зарядку на уровне», я пробовал её использовать без вышеуказанных действий, но она действовала только до перезагрузки. Относительно нашей задачи в плане удобства и информативности KDE даёт фору остальным своим собратьям.

Управление уровнем заряда в настройках KDE

Надеюсь, данная статья будет полезна! Всем хорошего времени суток!

Лайков: +15
войдите, чтобы ставить лайки
25
  • Опубликовано: 10.09.2023
  • HomeAlone

Комментарии

BassUtter
Активный пользователь
Активный
10.09.2023
10:30
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
+1
войдите, чтобы ставить лайки
Спасибо автору за полезную статью, + :)
UserReady
Активный пользователь
Активный
10.09.2023
11:06
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
0
войдите, чтобы ставить лайки
На телефонах и планшетах кто применяет такие команды по ограничению заряда батареи? Качество современной техники сильно снизилось (только бы отработала гарантийный срок), если сломалась, надо покупать новую. Мой ноутбук все время подключён сети, для себя я не вижу сильной потребности в этих командах, какой смысл сохранять, если поломка техники заранее запрограммирована на заводе при изготовлении?
LexD
Активный пользователь
Активный
10.09.2023
11:21
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийUserReadyРодительский комментарий
+4
войдите, чтобы ставить лайки
Для "старой" техники есть смысл. "Старая": все гарантийные сроки давно прошли, а она работает. Такое бывает с техникой возраста более 10 лет.
По личному опыту, да, в последнее время всё чаще новая техника (и не только техника, но и, например, обувь) выходит из строя сразу по окончании гарантии (в лучшем случае). Хотя иногда чудеса случаются.
pozitigor
11.09.2023
15:45
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийUserReadyРодительский комментарий
0
войдите, чтобы ставить лайки
я на Mi 9T PRO такое проворачиваю, правда для этого понадобилась кастомная прошивка смартфона, на самом деле довольно удобно, поскольку телефон теперь я заряжаю не чаще чем два раза за день
LexD
Активный пользователь
Активный
10.09.2023
11:12
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
+2
войдите, чтобы ставить лайки
Полезно, да.
В ASUS меняю АКБ раз в два-четыре года, зависит от АКБ, родная работала года четыре, другие — меньше, впрочем время службы соответствует заявленному. В таком случае вопрос: на много ли увеличивает (и увеличивает ли?) срок службы АКБ описанный метод?
ACER: нет такого файла\каталога.
HomeAlone
Активный пользователь
Активный
10.09.2023
12:08
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийLexDРодительский комментарий
+3
войдите, чтобы ставить лайки
Отвечая на вопрос, могу с уверенность сказать, что да, срок службы акб увеличивается. Но конкретное время, на сколько именно, сказать не могу, т.к. нет второго такого же ноутбука без данной опции, чтобы сравнение было корректным. А уверен я в полезности данных действий потому, что на протяжении уже чуть более 2х лет пользования описанным в статье ноутбуком, износ его батареи всё так же держится на уровне 20%. Хотя до этого он находился в пользовании у другого человека с 2019 года, без включения опции ограничения заряда. И за два года батарея потеряла 18% первоначальной мощности. Таким образом, если считать очень приблизительно и округлённо, на сегодняшний день износ батареи должен был быть около 36%. С 2019 г. по 2021 г. - 18%, получается 9% в год. Но это очень и очень приблизительно, т.к. я не уверен, что износ идёт линейно. Но в любом случае, износ в 20% это лучше, чем в 30% или 36%. Это конечно не волшебная таблетка, которая продлит жизнь батареи в два раза, но положительный эффект всё таки существенен, на мой взгляд.
LexD
Активный пользователь
Активный
10.09.2023
12:13
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийHomeAloneРодительский комментарий
+1
войдите, чтобы ставить лайки
Благодарю за подробный и исчерпывающий ответ.
evgnor86
Активный пользователь
Активный
12.09.2023
03:19
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийHomeAloneРодительский комментарий
+1
войдите, чтобы ставить лайки
ерунда и самовнушение
Minor748
Активный пользователь
Активный
10.09.2023
12:57
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийLexDРодительский комментарий
0
войдите, чтобы ставить лайки
Смарта нет, но такое же читал когда про их батарейки, это справедливо и в отношении обычных телефонов. Если аккум Li-Ion, то разряжай/заряжай до 0 и 100%. Если Li-Pol, то до 90% и не разряжай полностью.

Подобный принцип мне показывал кто-то на скриншоте от смарта. Там в ГуглПлэй есть такое приложение, которое ограничивает уровень заряда максимального.
LexD
Активный пользователь
Активный
10.09.2023
13:01
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийMinor748Родительский комментарий
0
войдите, чтобы ставить лайки
Не имеет значения тип устройства, речь об аккумуляторной батарее.
Смарт = смартфон? Не пользуюсь, ибо без надобности.
xKDE
Активный пользователь
Активный
10.09.2023
14:39
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
+1
войдите, чтобы ставить лайки
Это всё эффект плацебо! Если контроллер ноута обучен, то всё будет работать на аппаратном уровне. Li-ion убивают микроциклы, но что возле 60 они будут, что возле 100 - без разницы.
HomeAlone
Активный пользователь
Активный
11.09.2023
11:12
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийxKDEРодительский комментарий
0
войдите, чтобы ставить лайки
Пусть будет плацебо, лишь бы работало да пользу приносило! Я не против :)
IAmKilka
Активный пользователь
Активный
10.09.2023
15:19
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
0
войдите, чтобы ставить лайки
Новые ThinkPad (с 2021 года точно) не нуждаются в этой настройке. Они на уровне Биоса заряд ограничивают, если ноутбук постоянно к сети подключен. Мой сейчас максимум до 90% заряжается, но если пару раз сильно разрядить - начнет опять до 100%
Stanlyzoolo
Активный пользователь
Активный
11.09.2023
09:41
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
+1
войдите, чтобы ставить лайки
Спасибо за статью!)
evgnor86
Активный пользователь
Активный
12.09.2023
03:17
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
0
войдите, чтобы ставить лайки
Абсолютно ненужная ерунда. Любая батарея теряет емкость со временем, цена вопроса 2-4т.р. и 15 мин. с отверткой (для несъемных снаружи) раз в 3-5 лет.
xKDE
Активный пользователь
Активный
13.09.2023
08:55
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийevgnor86Родительский комментарий
0
войдите, чтобы ставить лайки
С батареей это своего рода лотерея!
https://ibb.co/HgQnW2X
Ноутбук '18го года, батарея не менялась. А у второго точно такого же батарея под замену ушла через пару лет с потерей ёмкости до около 60-65%...
evgnor86
Активный пользователь
Активный
14.09.2023
10:46
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийxKDEРодительский комментарий
0
войдите, чтобы ставить лайки
у меня так:

https://ibb.co/KrfTJMp
evgnor86
Активный пользователь
Активный
12.09.2023
05:52
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
0
войдите, чтобы ставить лайки
Недавно на своем нитро5 18го года выпуска поменял батарею с остаточной емкостью 67%. Т.о. она проходила 5 лет! И еще бы 2-3 спокойно прожила, но я периодически в разъездах и не всегда есть розетка под рукой. 67% - это 2ч на встройке, сейчас 95% и 4-5ч на встройке. Так что еще раз говорю, все это ерунда, батарея дохнет независимо от того до 100 или до 50 % вы ее заряжаете. А вот недозаряд и потеря 30мин. работы в условиях отсутствия розетки, порой может ой как сильно огорчить.
morbieget
13.09.2023
13:41
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
+1
войдите, чтобы ставить лайки
Для владельцев ноутбуков Asus и Asus RoG есть утилиты, разрабатываемые сообществом, которые реализуют поддержку этой и некоторых других функций. Описание, инструкции и ссылки на Github есть на сайте проекта: https://asus-linux.org/
На моем Asus L2402 ограничение батареи заработало с помощью asusctl.
xKDE
Активный пользователь
Активный
13.09.2023
14:36
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийmorbiegetРодительский комментарий
+1
войдите, чтобы ставить лайки
Вы можете руками прописать нужное значение в
/sys/class/power_supply/BAT'ваш_символ'/charge_control_end_threshold
вот и вся утилита) если файл существует, то работает и на asus и на всех прочих.
Автоматизировать через юнит (как у автора) или через rc, если non-systemd.
morbieget
13.09.2023
16:45
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийxKDEРодительский комментарий
+1
войдите, чтобы ставить лайки
Помимо описанного мной функционала, они реализуют дополнительные функции ноутбуков Asus (в зависимости от модели):
AniMe Matrix display
RGB keyboard LEDs
fn+key combos and media controls
G-Sync enable on capable laptops
Re-enable the dGPU after setting "iGPU On" in Windows
and more All of the above is either enabled in asusctl already, or is enabled via patches to the kernel (and we provide pre-built kernels with the patches applied) which are steadily upstreamed.

Extra features we currently support are:
Control graphics modes via supergfxctl without reboots for switching between iGPU, dGPU, on-demand, and vfio (for VM pass-through)
Set battery charge limit
(custom) fan curve control

Поэтому, я посчитал важным оставить ссылку на этот проект. Не рекламы ради, а пользы для.

А касательно ограничения батареи, да, вы правы, это может быть реализовано без дополнительного ПО.
xKDE
Активный пользователь
Активный
13.09.2023
17:08
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийmorbiegetРодительский комментарий
+2
войдите, чтобы ставить лайки
Asus'у до Apple конечно далеко, но тоже любят вкорячить стандартные вещи нестандартными методами. Так что у ребят задача не простая! Если все "фирменные" штуки переносят на linux - это большой плюс для асусоводов!
HomeAlone
Активный пользователь
Активный
15.09.2023
17:18
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
0
войдите, чтобы ставить лайки
Прошу прощения, неправильно указал структуру в создаваемом файле сервиса. Правильная структура такая:

[Unit]
Description=Set the battery charge thresholdAfter=multi-user.target
StartLimitBurst=0
[Service]
Type=oneshotRestart=on-failure
ExecStart=/bin/bash -c 'echo CHARGE_STOP_THRESHOLD > /sys/class/power_supply/BATTERY_NAME/charge_control_end_threshold'
[Install]
WantedBy=multi-user.target

После [Unit], [Service] и [Install] команды должны начинаться с новой строчки. Отправил исправления на модерацию.
kvazimoda
22.10.2023
03:22
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
0
войдите, чтобы ставить лайки
Для записи одного числа в файл можно заюзать systemd-tmpfiles.
Вся настройка сведётся к созданию файла /etc/tmpfiles.d/charge-stop.conf со следующим содержимым:
w /sys/class/power_supply/BATTERY_NAME/charge_control_end_threshold - - - - CHARGE_STOP_THRESHOLD

Чтобы применить настройки без перезагрузки, выполнить
sudo systemd-tmpfiles --create
Александр
09.03.2024
09:46
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
0
войдите, чтобы ставить лайки
На ноутбуке Huawei не работает. Накатил ubuntu, изначально ограничение работало без дополнительных настроек, но почему-то сбилось. Причем сбилось вроде когда подключил зарядное устройство до включения ноута. В итоге сделал всё по этой инструкции, но ограничение не работает.

Написать комментарий

Ваше имя:
Текст комментария:
  • Уважать других.
  • Не ругаться.
  • Без оскорблений.
  • Без грубости.
  • Не переходить на личности.
  • Писать на русском языке.
  • Без политики.
  • Без флуда.
Правила