Управление питанием имеет опцию «Ничего не делать» только для критически низкого заряда батареи в 17.10

10

Я использую Ubuntu 17.10 с Gnome на ноутбуке Asus.

В интерфейсе «Настройки электропитания» на вкладке «Питание» внизу есть опция для настройки действий в случае критического разряда батареи.

Однако, когда я нажимаю на раскрывающийся список, чтобы установить эту опцию, он предлагает только одну опцию, которая "ничего не делать":

ничего не делать силовой вариант

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

Я хотел бы получить предупреждение, когда уровень заряда батареи составляет 10%, и, надеюсь, некоторое время вручную сохранить и закрыть программы, прежде чем выключать компьютер. Как мне этого добиться?


Редактировать: вот содержимое моего /etc/UPower/UPower.confфайла:

# Only the system vendor should modify this file, ordinary users
# should not have to change anything.

[UPower]

# Enable the Watts Up Pro device.
#
# The Watts Up Pro contains a generic FTDI USB device without a specific
# vendor and product ID. When we probe for WUP devices, we can cause
# the user to get a perplexing "Device or resource busy" error when
# attempting to use their non-WUP device.
#
# The generic FTDI device is known to also be used on:
#
# - Sparkfun FT232 breakout board
# - Parallax Propeller
#
# default=false
EnableWattsUpPro=false

# Don't poll the kernel for battery level changes.
#
# Some hardware will send us battery level changes through
# events, rather than us having to poll for it. This option
# allows disabling polling for hardware that sends out events.
#
# default=false
NoPollBatteries=false

# Do we ignore the lid state
#
# Some laptops are broken. The lid state is either inverted, or stuck
# on or off. We can't do much to fix these problems, but this is a way
# for users to make the laptop panel vanish, a state that might be used
# by a couple of user-space daemons. On Linux systems, see also
# logind.conf(5).
#
# default=false
IgnoreLid=false

# Policy for warnings and action based on battery levels
#
# Whether battery percentage based policy should be used. The default
# is to use the time left, change to true to use the percentage, which
# should work around broken firmwares. It is also more reliable than
# the time left (frantically saving all your files is going to use more
# battery than letting it rest for example).
# default=true
UsePercentageForPolicy=true

# When UsePercentageForPolicy is true, the levels at which UPower will
# consider the battery low, critical, or take action for the critical
# battery level.
#
# This will also be used for batteries which don't have time information
# such as that of peripherals.
#
# If any value is invalid, or not in descending order, the defaults
# will be used.
#
# Defaults:
# PercentageLow=10
# PercentageCritical=3
# PercentageAction=2
PercentageLow=10
PercentageCritical=3
PercentageAction=2

# When UsePercentageForPolicy is false, the time remaining at which UPower
# will consider the battery low, critical, or take action for the critical
# battery level.
#
# If any value is invalid, or not in descending order, the defaults
# will be used.
#
# Defaults:
# TimeLow=1200
# TimeCritical=300
# TimeAction=120
TimeLow=1200
TimeCritical=300
TimeAction=120

# The action to take when "TimeAction" or "PercentageAction" above has been
# reached for the batteries (UPS or laptop batteries) supplying the computer
#
# Possible values are:
# PowerOff
# Hibernate
# HybridSleep
#
# If HybridSleep isn't available, Hibernate will be used
# If Hibernate isn't available, PowerOff will be used
CriticalPowerAction=HybridSleep
интервьюер
источник
Проверьте это вы ищете askubuntu.com/questions/92794/…
Аравинд

Ответы:

7

Шаг 1: Проверьте gsettings

В терминале можно проверить две опции:

$ gsettings get org.gnome.settings-daemon.plugins.power critical-battery-action
'suspend'
$ gsettings get org.gnome.settings-daemon.plugins.power percentage-low
'10'

Затем, чтобы изменить их, используйте:

$ gsettings set org.gnome.settings-daemon.plugins.power critical-battery-action suspend
$ gsettings set org.gnome.settings-daemon.plugins.power percentage-low 10

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


Шаг 2: Проверьте upower

Управление питанием Gnome upowerделает тяжелую работу. Чтобы убедиться, что он работает и собирает статистику заряда батареи, используйте:

$ upower -d 
Device: /org/freedesktop/UPower/devices/line_power_ACAD
  native-path:          ACAD
  power supply:         yes
  updated:              Sun 18 Mar 2018 02:28:25 PM MDT (135878 seconds ago)
  has history:          no
  has statistics:       no
  line-power
    warning-level:       none
    online:              yes
    icon-name:          'ac-adapter-symbolic'

Device: /org/freedesktop/UPower/devices/battery_BAT1
  native-path:          BAT1
  vendor:               COMPAL
  model:                PABAS0241231
  serial:               41167
  power supply:         yes
  updated:              Tue 20 Mar 2018 04:12:10 AM MDT (53 seconds ago)
  has history:          yes
  has statistics:       yes
  battery
    present:             yes
    rechargeable:        yes
    state:               charging
    warning-level:       none
    energy:              48.2544 Wh
    energy-empty:        0 Wh
    energy-full:         93.3552 Wh
    energy-full-design:  96.48 Wh
    energy-rate:         0.0044914 W
    voltage:             14.76 V
    percentage:          51%
    capacity:            96.7612%
    technology:          lithium-ion
    icon-name:          'battery-good-charging-symbolic'

Device: /org/freedesktop/UPower/devices/mouse_0003o046Do101Ax0008
  native-path:          /sys/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.2/0003:046D:C52B.0003/0003:046D:101A.0008
  vendor:               Logitech, Inc.
  model:                Performance MX
  serial:               E6CE4571
  power supply:         no
  updated:              Tue 20 Mar 2018 04:12:09 AM MDT (54 seconds ago)
  has history:          yes
  has statistics:       no
  mouse
    present:             yes
    rechargeable:        yes
    state:               discharging
    warning-level:       none
    percentage:          55%
    icon-name:          'battery-good-symbolic'

Device: /org/freedesktop/UPower/devices/keyboard_0003o046Do2010x0009
  native-path:          /sys/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.2/0003:046D:C52B.0003/0003:046D:2010.0009
  vendor:               Logitech, Inc.
  model:                K800
  serial:               6DB54BFE
  power supply:         no
  updated:              Tue 20 Mar 2018 04:12:09 AM MDT (54 seconds ago)
  has history:          yes
  has statistics:       no
  keyboard
    present:             yes
    rechargeable:        yes
    state:               discharging
    warning-level:       none
    percentage:          90%
    icon-name:          'battery-full-symbolic'

Device: /org/freedesktop/UPower/devices/ups_hiddev3
  native-path:          /sys/devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.4/1-1.4.4/1-1.4.4:1.0/usbmisc/hiddev3
  vendor:               CPS
  model:                CP550HGa
  serial:               BFBB104#BI1.g
  power supply:         yes
  updated:              Tue 20 Mar 2018 04:12:51 AM MDT (12 seconds ago)
  has history:          yes
  has statistics:       yes
  ups
    present:             yes
    state:               fully-charged
    warning-level:       none
    time to empty:       37.5 minutes
    percentage:          100%
    icon-name:          'battery-full-charged-symbolic'

Device: /org/freedesktop/UPower/devices/DisplayDevice
  power supply:         yes
  updated:              Tue 20 Mar 2018 04:10:14 AM MDT (169 seconds ago)
  has history:          no
  has statistics:       no
  ups
    present:             yes
    state:               fully-charged
    warning-level:       none
    time to empty:       37.5 minutes
    percentage:          100%
    icon-name:          'battery-full-charged-symbolic'

Daemon:
  daemon-version:  0.99.4
  on-battery:      no
  lid-is-closed:   no
  lid-is-present:  yes
  critical-action: HybridSleep

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


Последний шаг - Низкоуровневая спячка

Это последний шаг, который будет сделан после исчерпания всех остальных шагов. Этот шаг не требует Ubuntu или Unity или Gnome или gsettingsили upower. Требуется только systemd, udevи cronкоторые встроены почти во все дистрибутивы Linux с или без GUI (Desktop).

Из ArchLinux :

Спящий режим при низком уровне заряда батареи

Если ваша батарея отправляет события, udevкогда она (разряжается) заряжается на 1%, вы можете использовать это udevправило, чтобы автоматически переводить систему в спящий режим, когда уровень заряда батареи критический, и, таким образом, предотвращать потерю всей несохраненной работы. Примечание. Не все батареи сообщают о событиях разряда. Проверьте работоспособность udevadm monitor --propertyпри работе от батареи и посмотрите, нет ли каких-либо событий. Вам следует подождать как минимум 1% падения. Если о событиях не сообщается и /sys/class/power_supply/BAT0/alarmон не равен нулю, то батарея, скорее всего, вызовет событие, когда оно BAT0/energy_nowупадет ниже значения тревоги, и udevправило будет работать до тех пор, пока вычисляется процентная математика. На некоторых ноутбуках эта опция отключена в BIOS по умолчанию.

$ cat /etc/udev/rules.d/99-lowbat.rules

# Suspend the system when battery level drops to 5% or lower
SUBSYSTEM=="power_supply", ATTR{status}=="Discharging", ATTR{capacity}=="[0-5]", RUN+="/usr/bin/systemctl hibernate"

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

Батареи могут перейти к более низкому значению вместо непрерывной выгрузки, следовательно, udevшаблон строки соответствия для всех емкостей 0через 5используются.

Другие правила могут быть добавлены для выполнения различных действий в зависимости от состояния источника питания и / или мощности.

Если в вашей системе нет событий ACPI или они отсутствуют, используйте cronследующий скрипт:

#!/bin/sh
acpi -b | awk -F'[,:%]' '{print $2, $3}' | {
    read -r status capacity

    if [ "$status" = Discharging -a "$capacity" -lt 5 ]; then
        logger "Critical battery threshold"
        systemctl hibernate
    fi
}

Тестирование событий

Один из способов проверки udevправил - заставить их создать файл при запуске. Например:

$ cat /etc/udev/rules.d/98-discharging.rules

SUBSYSTEM=="power_supply", ATTR{status}=="Discharging", RUN+="/usr/bin/touch /home/example/discharging"

Это создает файл, /home/example/dischargingкогда зарядное устройство ноутбука отключено. Вы можете проверить, сработало ли правило, отсоединив свой ноутбук и отыскав этот файл. Для более расширенного udevтестирования правил смотрите Udev # Проверка правил перед загрузкой .

Резюме

Между шагами № 2 и «Последним шагом» необходимо выполнить больше шагов, но они будут опубликованы, так как OP показывает больше деталей после тестирования. В то же время «Последний шаг» должен уменьшить количество промежуточных ответов, например, просто сообщить процент оставшихся.

WinEunuuchs2Unix
источник
Спасибо за этот ответ. К сожалению, кажется, что мои gsettingsпараметры уже были установлены suspendи 10, что указывает на то, что моя система не поддерживает эти параметры.
Вопрос
@Questioner gsettingsбыл первым (простым) шагом для проверки. Я добавил upowerследующий шаг.
WinEunuuchs2Unix
Спасибо за обновление. Я буду тестировать ноутбук, как вы предлагаете. Тем временем я добавил содержимое моего /etc/UPower/UPower.confфайла в свой вопрос.
Вопрос
@Questioner Я пробежал clipboard-diffмежду вашей UPower.confверсией и установленной в моей системе. Они идентичны.
WinEunuuchs2Unix
@Questioner Пара вопросов: 1) gsettings get org.gnome.settings-daemon.plugins.power activeвозвращается true? 2) Есть ли у вас раздел подкачки> объем оперативной памяти?
WinEunuuchs2Unix
3

Вот дружеский сценарий, который я собрал!

Я создал временное решение, которое проверяет, работает ли ваш ноутбук от сети переменного тока или от аккумулятора (DC) ...

Следовательно, если он работает от сети переменного тока, он выйдет, а если нет, продолжит проверять оставшийся заряд батареи каждые 15 секунд, пока не достигнет определенной переменной, lowа точнее процента ...

О, и если вы хотите продолжить работу в том же терминале, где вы запускали этот скрипт, просто запустите скрипт так:

bash power-notify.sh &

Без лишних слов, вот сценарий:

#!/bin/bash
#Get battery percent
bat_percent=$(acpi | awk -F ", " '{print $2}' | tr -d %)


#When to start showing warnings... Example: 10% --> low=10
low=10
#Alert message to show when low percent is reached
alert="Low battery, $bat_percent% left..."

#Check if notify-send is installed
notfiy_send_test=$(which notify-send)
if [ $? != 0 ] 
then
    echo "Please install notify-send..."
    exit 1
fi

acpi_test=$(which acpi)
if [ $? != 0 ]
then
    echo "Please install acpi..."
    exit 1
fi


#Test if cord is plugged in 
plugged=$(acpi -a | awk -F ": " '{print $2}')

if [ $plugged == 'on-line' ]
then
    echo "Your computer is connected to a power source..."
    echo "Exiting..."
    exit 0
fi

while :
do

    if [ $bat_percent -lt $low ]
    then
        notify-send "$alert"
        sleep 15
    else
        #Check every fifteen seconds to use less resources...
        sleep 15
    fi

done

Этот скрипт также можно найти на GitHub, здесь ...

NerdOfCode
источник
Предполагается, что работающая система выдает предупреждения уже при заданных процентах, а затем гибридный сон при 2%. Я думаю, что это то, что ищет ОП. Ваш скрипт может быть улучшен, если вызвать hibernate на 2%. Также предупреждающий пузырь каждые 15 секунд является экстремальным ИМО. Я думаю, что сообщение пузыря 9%, 8%, 7% ... 3% было бы более практичным. Также системный звуковой сигнал поможет людям не смотреть на свой ноутбук в то время. В этом скрипте есть некоторые компоненты, которые я рекомендовал: askubuntu.com/questions/837078/…
WinEunuuchs2Unix
@ WinEunuuchs2Unix просто простой скрипт
NerdOfCode
Полагаю, что и ваш сценарий, и мой сценарий, на который я ссылался в последнем комментарии, профессионалы могут считать простым. Я не уверен, какой сценарий вы называете "простой", хотя?
WinEunuuchs2Unix
Мой сценарий определенно.
NerdOfCode
Нет, это хороший сценарий и делает то, что вы хотите, чтобы он делал. Все великие сценарии начинаются как хорошие сценарии, и вы можете улучшить их за несколько дней, недель или десятилетий. Линукс существует уже долгое время и будет существовать намного дольше.
WinEunuuchs2Unix