Установите пороги батареи на Ubuntu (ASUS)
Я недавно переключился с Windows на Ubuntu, и я был немного расстроен, когда узнал, что в Linux нет способа установить пороги батареи. В Windows я могу ограничить заряд до 60% (ноутбук перестает заряжаться при 60% и возобновляет заряд при 58%, чтобы продлить срок службы батареи). Я попытался настроить ту же процедуру с tlp, но она работает только на Lenovo ThinkPads. Мой компьютер - ASUS VivoBook S14, у меня двойная загрузка Windows 10 - Ubuntu 16.04.
Я хотел знать, есть ли какое-нибудь программное обеспечение, которое может контролировать заряд батареи? Или, может быть, способ использовать tlp для установки порогов батареи?
5 ответов
Чтобы перестать заряжаться на 60%, использую
echo 60 | sudo tee /sys/class/power_supply/BAT0/charge_control_end_threshold
В настоящее время мой аккумулятор разряжен на 63%, поэтому он не заряжается (индикатор питания белый). Если я запустил указанную выше команду с 70 вместо 60, он снова начнет заряжаться (индикатор питания станет красным).
Этот параметр теряется при перезагрузке компьютера. Чтобы сделать его постоянным, я добавил
@reboot root echo 60 > /sys/class/power_supply/BAT0/charge_control_end_threshold
к моему
/etc/crontab
.
Мой ноутбук - это Asus Zenbook, работающий под Ubuntu 20.04 LTS, но, возможно, это может работать и для других брендов / дистрибутивов - изучите, что у вас есть под
/sys/class/power_supply/
.
Я написал приложение командной строки, которое делает это.
Самый простой способ начать — скачать приложение со страницы релизов и запустить
$ ./bat --help
из терминала в каталоге, где он находится, что должно показать справочную документацию.
Если есть ошибка, это может быть связано с разрешениями. Следующая команда может решить проблему.
chmod +x ./bat
В основном, бег
$ ./bat --threshold
распечатает текущий порог.
Чтобы установить новый порог, скажем, 60%, запустите
./bat --threshold 60
Чтобы сохранить текущий порог между перезапусками, запустите
sudo ./bat --persist
Примечание. Persisting использует systemd под капотом, но он входит в состав большинства дистрибутивов Linux, включая Ubuntu.
Совет: поместите приложение в каталог, например
/usr/local/bin/
это в
$PATH
позволит вам запускать его из любого места, а не только из каталога, в котором находится приложение. Затем приведенные выше команды становятся,
bat --help
bat --threshold 60
bat --persist
соответственно.
У меня был Asus X405UQ, который шел с этим приложением Battery Health Charging, которое контролирует порог зарядки. Но поскольку я использую только Windows 10 для игр, я настроил свою рабочую среду и установил двойную загрузку Ubuntu 18.04 в Windows 10. Я подключаю свой ноутбук всякий раз, когда есть доступное питание переменного тока, и оно остается подключенным, когда я работаю. Я использую батарею, только если я работаю в длительных поездках, поэтому я искал подобное приложение для Linux. Я узнал, что драйвер для этой работы зависит от поставщика, и что у Asus нет поддержки драйверов для Linux, как у Thinkpads с TLP. (в следующий раз я буду покупать Thinkpads вместо этого).
Но я обнаружил, что загрузка в Windows и установка порога зарядки до 60% перед перезагрузкой в Ubuntu 18.04 (без выключения или выключения) сохранят порог зарядки. Даже при том, что я отключил адаптер питания и позволил ему разрядить аккумулятор, подключив его снова, он заряжается до 59% или 79% в зависимости от предварительно установленного порога (он всегда на 1% меньше указанного порогового уровня). Он вернется в исходное состояние (заряжается до 100%), если я выключу свой ноутбук, отключу адаптер, включу его и загрузлю Ubuntu напрямую, не переходя сначала на Windows, или если я установлю его на 100% с помощью приложения батареи в винде.
Я был счастлив с этой настройкой, так как это лучше, чем вообще не иметь никакого контроля порога. Тем не менее, мой ноутбук вернулся в магазин для ремонта (прерывистое соединение Wi-Fi на полосе 5 ГГц), а когда я его получил (восстановил заводские настройки по умолчанию, Ubuntu удалил) и снова установил Ubuntu 18.04, функция которого больше не сохраняется.
Я пытался обновить ядра Ubuntu, но безрезультатно. Когда я попытался обновить BIOS, я обнаружил, что одна установленная версия 305 на момент написания этой статьи еще не существовала на странице поддержки Asus (некоторые форумы говорят, что за это отвечает обновление Microsoft), а самая последняя версия была выпущена 304 Я пытался загрузить WinFlash с сайта Asus, но понижение BIOS с помощью трюка /nodate не работает.
Решение, которое сработало для меня:
Скачайте Asus WinFlash 3.0.1 и установите его. Не используйте последнюю версию 3.2.5 или выше, так как она больше не поддерживает параметр /nodate. Я полагаю, что последнее обновление BIOS устраняет некоторые из уязвимостей, и они не хотят, чтобы вы понизили версию BIOS, но для меня гораздо важнее время автономной работы.
Понизьте версию BIOS до 302. Модель вашего ноутбука может отличаться, поэтому выбирайте в соответствии с моделью вашего ноутбука. Разархивируйте файл BIOS.
Введите "WinFlash" в меню "Пуск". Щелкните правой кнопкой мыши значок WinFlash и выберите "Открыть местоположение файла". Откроется проводник Windows с ярлыками меню "Пуск". Щелкните правой кнопкой мыши ярлык WinFlash и выберите свойства. В крайнем левом конце пути назначения, после двойных кавычек, добавьте пробел, затем введите "/nodate" без кавычек. Конечный результат будет выглядеть так: "C:\Program Files (x86)\ASUS\WinFlash\WinFlash.exe" /nodate
Запустите WinFlash, используя этот измененный ярлык, и выберите загруженный файл BIOS. Кнопка Обновить больше не должна быть серой. Нажмите "Обновить", после чего он попросит перезагрузить компьютер, чтобы он мог перепрограммировать BIOS. Убедитесь, что вы подключены к сети или у вас высокий уровень заряда батареи.
Ноутбук войдет в экран BIOS, и вы увидите индикатор прогресса. Мой ноутбук дважды перезагружался во время процесса. Сначала я разрешил ему загрузиться в Windows, затем перезапустил его и ввел настройки BIOS, чтобы отключить безопасную загрузку (чтобы разрешить загрузку Ubuntu 18.04). В этот момент, если ваш пороговый уровень ниже текущего уровня заряда аккумулятора, вы должны заметить, что светодиодный индикатор питания на ноутбуке становится белым, а не желтым, указывая на то, что аккумулятор больше не заряжается. Это должно сохраниться, даже если вы перезагрузили свой ноутбук перед загрузкой в Ubuntu
tlp
теперь работает на (выбранных?) моделях ASUS:
https://linrunner.de/tlp/news.html#how-can-i-use-battery-care-with-my-laptop
«TLP с самого начала включает пороги заряда батареи для Lenovo (и IBM) ThinkPad. Так оставалось долгое время. Недавно — с версией 1.4 и 1.5 — были добавлены многочисленные производители: ASUS, Huawei, LG, Lenovo (не- серии ThinkPad), Samsung и Sony».
Я использовал это на последней модели Asus Vivobook (M3401QA) с Debian 11 и версией tlp для debian-backports, а
tlp setcharge
Команда работает, чтобы установить предел заряда батареи, но не начальную точку. Таким образом, вы можете получить порог, при котором вы хотите прекратить зарядку, но не начальный/нижний порог.
Вот мой ответ (короткий скрипт на Python). Это хорошо работает на моем ROG STRIX G731GU.
Не забудьте запустить код от имени администратора. (sudo python3 filename.py
)