Установите пороги батареи на 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 не работает.

Решение, которое сработало для меня:

  1. Скачайте Asus WinFlash 3.0.1 и установите его. Не используйте последнюю версию 3.2.5 или выше, так как она больше не поддерживает параметр /nodate. Я полагаю, что последнее обновление BIOS устраняет некоторые из уязвимостей, и они не хотят, чтобы вы понизили версию BIOS, но для меня гораздо важнее время автономной работы.

  2. Понизьте версию BIOS до 302. Модель вашего ноутбука может отличаться, поэтому выбирайте в соответствии с моделью вашего ноутбука. Разархивируйте файл BIOS.

  3. Введите "WinFlash" в меню "Пуск". Щелкните правой кнопкой мыши значок WinFlash и выберите "Открыть местоположение файла". Откроется проводник Windows с ярлыками меню "Пуск". Щелкните правой кнопкой мыши ярлык WinFlash и выберите свойства. В крайнем левом конце пути назначения, после двойных кавычек, добавьте пробел, затем введите "/nodate" без кавычек. Конечный результат будет выглядеть так: "C:\Program Files (x86)\ASUS\WinFlash\WinFlash.exe" /nodate

  4. Запустите WinFlash, используя этот измененный ярлык, и выберите загруженный файл BIOS. Кнопка Обновить больше не должна быть серой. Нажмите "Обновить", после чего он попросит перезагрузить компьютер, чтобы он мог перепрограммировать BIOS. Убедитесь, что вы подключены к сети или у вас высокий уровень заряда батареи.

  5. Ноутбук войдет в экран 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)

Другие вопросы по тегам