Как я могу ограничить зарядку аккумулятора до 80% емкости?

Я только что узнал, что некоторые ноутбуки Lenovo включают в себя утилиту, которая предлагает ограничить емкость аккумулятора в пределах 0-80%, чтобы замедлить затухание срока службы батареи:

screenshot

Как я могу это сделать в Ubuntu?

Пороговые значения зарядки, к сожалению, зависят от прошивки и конкретного поставщика.

Lenovo ThinkPad пользователю, к счастью, предоставляется решение, изложенное на ThinkWiki.

В основном это говорит о том, что вам придется установить и загрузить tp_smapi модуль ядра:

sudo apt-get install tp-smapi-dkmssudo modprobe tp_smapi

и запишите желаемые пороговые значения зарядки в виртуальные файлы в /sys/devices/platform/smapi:

echo 40 | sudo tee /sys/devices/platform/smapi/BAT0/start_charge_threshecho 80 | sudo tee /sys/devices/platform/smapi/BAT0/stop_charge_thresh

Затем он прекратит зарядку, как только достигнет 80%, и начнет заряжаться только тогда, когда она упадет ниже 40%.

Toshiba и другие компании могут иметь аналогичный модуль ядра, который предоставляет функциональность встроенного ПО для /sys или /proc пространство, но это очень маловероятно для патентных проблем. По тем же причинам приложение, которое могло бы справиться с этим, было бы либо специфичным для Thinkpad, либо адресовано только нескольким избранным поставщикам.

Теперь для Ubuntu (и других дистрибутивов) доступно несколько более приятное приложение:

TLP – Расширенное управление питанием Linux

TLP предоставляет вам преимущества расширенного управления питанием для Linux Без необходимости разбираться во всех технических деталях. TLP поставляется с конфигурацией по умолчанию, уже оптимизированной для времени автономной работы, так что вы можете просто установить и забыть об этом. Тем не менее, TLP легко настраивается в соответствии с вашими конкретными требованиями.

Одним из параметров, которые он контролирует, является поддержание пределов зарядки аккумулятора. Как указал @ tanius в комментариях (пожалуйста, поддержите их!), В то время как TLP раньше работал только на Thinkpads, новейшая версия поддерживает устройства от нескольких поставщиков, и, учитывая характер проекта, если станут доступны соответствующие драйверы для других устройств, вполне вероятно, что они получат интегрирован и в этот проект. Так что, если вы читаете этот комментарий через несколько лет, ознакомьтесь с документацией, возможно, ваше устройство теперь поддерживается.

Доступны пакеты Ubuntu в официальном репозитории.

Принятый ответ не работает на моем новом Lenovo T440s. Очевидно, прошивка изменилась. Следующий http://www.thinkwiki.org/wiki/Tpacpi-bat, я сделал

git clone https://github.com/teleshoes/tpacpi-bat.gitcd tpacpi-bat/./install.plsudo ./tpacpi-bat -s ST 1 15 # load internal battery when below 15%sudo ./tpacpi-bat -s SP 1 95 # stop charging at 95%sudo ./tpacpi-bat -g ST 2 # when is external battery loaded?

Для справки, я сделал это при тестировании debian, но я уверен, что это работает и в ubuntu так же хорошо.

На моем Toshiba R830 под управлением Windows 8.1 я установил приложение Toshiba Power Saver, чтобы ограничить заряд батареи до 80%

Когда я загружаюсь на Linux (Ubuntu, Mint и т.д.), максимальная зарядка по-прежнему ограничена 80%.

Таким образом, Toshiba Power Saver, по-видимому, сохраняет свою конфигурацию в bios.

Единственным недостатком является то, что если я хочу путешествовать с полностью заряженной батареей, мне придется перезагрузить Windows и изменить конфигурацию энергосбережения.

  1. Установить TLP:
    sudo add-apt-repository ppa:linrunner/tlpsudo apt updatesudo apt install tlp# Check what package needed for battery:sudo tlp-stat -b# If acpi_call is recommendedsudo apt install acpi-call-dkms# If smapi is recommendedsudo apt install tp-smapi-dkms
  2. Откройте конфигурационный файл TLP
    sudo gedit /etc/tlp.conf
  3. Найдите строки, касающиеся настроек батареи, удалите начальный # для комментария и, возможно, вставьте нужное значение
    START_CHARGE_THRESH_BAT0=75STOP_CHARGE_THRESH_BAT0=80
  4. Перезапустить tlp
    sudo tlp start
  5. Проверьте состояние конфигурации
    sudo tlp-stat -b

Вы проверяли, есть ли на вашем ноутбуке настройка BIOS для этого? На моем ноутбуке было приложение Windows, а также настройка "Продление срока службы батареи" в BIOS для этой точной функции.

Я написал письмо приложение командной строки это делает вот что.

Самый простой способ начать работу - это загрузить приложение с страница релизов и бежать

$ ./bat --help

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

Если есть ошибка, это может быть связано с разрешениями. Следующая команда может решить проблему.

chmod +x ./bat

По сути, бегущий

$ ./bat --threshold

выведет текущее пороговое значение.

Чтобы установить новый порог, скажем, 60%, запустите

./bat --threshold 60

Чтобы сохранить текущее пороговое значение между перезапусками, запустите

sudo ./bat --persist

Примечание: Сохраняющиеся виды использования systemd под капотом, но это входит в комплект с большинством дистрибутивов Linux, включая Ubuntu.

Совет: Поместите приложение в каталог, подобный /usr/local/bin/ то есть в $PATH это позволит вам запускать его из любого места, а не только из каталога, в котором находится приложение. Затем приведенные выше команды становятся,

bat --help
bat --threshold 60
bat --persist

соответственно.

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

В зарядных устройствах Dell используются 3 контакта: один для (+), один для (-) и один для идентификации зарядного устройства Dell (1-проводной протокол). Эта линия связи обычно находится в центре разъема, игольчатый штифт.

Если вы перережете эту линию связи, ноутбук продолжит работать от сети переменного тока, но аккумулятор больше не будет заряжаться.

Найдите линию связи, перережьте ее, установите переключатель между ними. Заряжайте аккумулятор вашего ноутбука столько, сколько хотите, а затем выключите этот переключатель. Ваш ноутбук будет использовать переменный ток, но ваша батарея останется заряженной на том уровне, на котором вы ее оставили.

Смотрите Этот ответ для получения рекомендуемых уровней заряда для различных сценариев: https://superuser.com/a/664583/187576

Редактировать

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

Это может не быть проблемой при обычном использовании, однако, если вам нужна мощность процессора, например, для 3D-дизайна, производительность заметно снижается.

У меня есть ноутбук Asus, и подход, который я нашел в Интернете, заключается в следующем. Этот подход, возможно, уже является частью некоторых приложений, упомянутых выше, но размещаю его здесь для информации.

  1. Создайте служебный файл с именем battery_charge_threshold.service подобный этому.
    [Unit]Description=Set the battery charge thresholdAfter=multi-user.target[Service]Type=oneshotExecStart=/bin/bash -c 'echo 80 > /sys/class/power_supply/BAT0/charge_control_end_threshold'[Install]WantedBy=multi-user.target
  2. Переместите файл в это расположение /etc/systemd/system
  3. Выполните следующие команды.
    sudo chmod 644 /etc/systemd/system/battery-charge-threshold.servicesudo systemctl daemon-reloadsudo systemctl enable battery-charge-threshold.service

После этого порог заряда в размере 80% (согласно файлу службы) будет сохраняться между перезагрузками. Он также прекратит зарядку аккумулятора, если уровень тока превысит 80%.Надеюсь, это поможет. Я использую его уже почти 1,5 года без каких-либо проблем.

На моем Dell XPS я установил smbios-utils пакет, использующий sudo apt install smbios-utils. Этот пакет предоставляет команду, вызываемую smbios-battery-ctl. Похоже, что управление зарядом на основе уровня заряда батареи доступно с Ubuntu 20.04. Полная информация приведена в страница руководства, но для базовой настройки 80%, я думаю, это сработает:

sudo smbios-battery-ctl --set-custom-charge-interval 75 80sudo smbios-battery-ctl --set-charging-mode=custom

Это приведет к началу зарядки, когда уровень заряда батареи упадет ниже 75%, и остановит зарядку, когда он достигнет 80%.

Чтобы изменить настройку обратно:

sudo smbios-battery-ctl --set-charging-mode=adaptive

Можете ли вы подтвердить, что ответ aquaherd работает для вас?