Zarządzanie energią ma opcję „Nie rób nic” dla krytycznie niskiego poziomu naładowania baterii w 17.10

10

Używam Ubuntu 17.10 z Gnome na laptopie Asus.

W interfejsie Ustawienia zasilania, w zakładce Zasilanie, u dołu znajduje się opcja pozwalająca ustawić, co zrobić, gdy poziom naładowania baterii będzie krytycznie niski.

Jednak po kliknięciu menu rozwijanego, aby ustawić tę opcję, dostępna jest tylko jedna opcja, czyli „nic nie rób”:

nie rób nic opcji zasilania

Obecnie mój laptop wyczerpie się do poziomu naładowania baterii 0 lub będzie blisko niego, a następnie wyłączy się bez ostrzeżeń, bez możliwości zamykania programów i zamykania z wdziękiem.

Chciałbym otrzymać ostrzeżenie, gdy poziom naładowania baterii spadnie do 10% i mam nadzieję, że trochę czasu na ręczne zapisanie i wyłączenie programów przed wyłączeniem komputera. Jak to osiągnąć?


Edycja: Oto zawartość mojego /etc/UPower/UPower.confpliku:

# 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
Indagator
źródło
Sprawdź, czy szukasz askubuntu.com/questions/92794/...
Aravind

Odpowiedzi:

7

Krok 1: Sprawdź gsettings

Istnieją dwie opcje, które można sprawdzić w terminalu:

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

Następnie, aby je zmienić, użyj:

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

Uwaga w moim systemie są w porządku, więc zmieniłem je z powrotem na to, co były w pierwszym rzędzie dla przykładu.


Krok 2: Sprawdź upower

Zarządzanie energią gnomów służy upowerdo podnoszenia ciężkich przedmiotów. Aby mieć pewność, że działa i zbiera statystyki baterii tak, jak powinno, użyj:

$ 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

Najpierw uruchom to polecenie, gdy laptop jest podłączony. Następnie odłącz laptop i uruchom polecenie po pewnym czasie i upewnij się, że pozostały czas pracy akumulatora został odpowiednio skrócony.


Ostatni krok - hibernacja niskiego poziomu

Jest to ostatni krok, który zostałby podjęty po wyczerpaniu wszystkich innych kroków. Ten krok nie wymaga Ubuntu, Unity, Gnome lub gsettingslub upower. Wymaga tylko systemd, udevi cronktóre są wbudowane w prawie wszystkie Linux Distros z GUI lub bez (Desktop).

Z ArchLinux :

Hibernuj przy niskim poziomie naładowania baterii

Jeśli bateria wysyła zdarzenia za udevkażdym razem, gdy (dis) ładuje się o 1%, możesz użyć tej udevreguły do ​​automatycznego hibernacji systemu, gdy poziom naładowania baterii jest krytyczny, a tym samym zapobiec utracie niezapisanej pracy. Uwaga: Nie wszystkie baterie zgłaszają zdarzenia rozładowania. Sprawdź, czy działa udevadm monitor --propertyna baterii i sprawdź, czy są zgłaszane jakieś zdarzenia. Powinieneś poczekać co najmniej 1% spadku. Jeśli żadne zdarzenia nie zostaną zgłoszone i nie będą miały wartości /sys/class/power_supply/BAT0/alarmzerowej, bateria najprawdopodobniej wywoła zdarzenie, gdy BAT0/energy_nowspadnie poniżej wartości alarmowej, a udevreguła będzie działać tak długo, jak długo będzie obliczana matematyka procentowa. Niektóre laptopy mają domyślnie opcję tego wyłączenia w systemie 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"

Ta reguła będzie powtarzana za każdym razem, gdy zostanie ustawiony warunek. W związku z tym, po wznowieniu ze stanu hibernacji, gdy bateria jest krytyczna, komputer przejdzie w stan hibernacji bezpośrednio. Niektóre laptopy nie uruchamiają się powyżej określonego poziomu baterii, więc można odpowiednio dostosować regułę.

Baterie mogą przejść do niższej wartości zamiast odprowadzania w sposób ciągły, zatem na udevwzór pasujący ciąg dla wszystkich pojemnościach 0poprzez 5służy.

Można dodać inne reguły, aby wykonać różne działania w zależności od stanu zasilacza i / lub pojemności.

Jeśli w systemie nie ma zdarzeń ACPI lub ich brakuje, użyj crontego skryptu:

#!/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
}

Testowanie zdarzeń

Jednym ze sposobów testowania udevreguł jest utworzenie pliku po uruchomieniu. Na przykład:

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

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

Spowoduje to utworzenie pliku, /home/example/discharginggdy ładowarka laptopa zostanie odłączona. Możesz sprawdzić, czy reguła zadziałała, odłączając laptopa i szukając tego pliku. Bardziej zaawansowane udevtestowanie reguł, patrz Udev # Testowanie reguł przed załadowaniem .

Podsumowanie

Jest więcej kroków do opublikowania między krokiem 2 a „ostatnim krokiem”, ale zostaną one opublikowane, gdy OP ujawni więcej szczegółów po testach. Tymczasem „Ostatni krok” powinien ograniczyć więcej odpowiedzi w połowie drogi, takich jak pozostały odsetek zgłoszeń.

WinEunuuchs2Unix
źródło
Dziękuję za tę odpowiedź. Niestety, wydaje się, że moje gsettingsparametry zostały już ustawione suspendi 10, co wskazywałoby, że mój system nie przestrzega tych opcji.
PYTAJĄCY
@Questioner gsettingsbył pierwszym (łatwym) krokiem do sprawdzenia. Dodałem upowerkolejny krok do zrobienia.
WinEunuuchs2Unix
Dziękuję za aktualizację. Przetestuję laptopa, jak sugerujesz. W międzyczasie /etc/UPower/UPower.confdo mojego pytania dodałem zawartość mojego pliku.
PYTAJĄCY
@Questioner Uruchomiłem clipboard-diffmiędzy tobą UPower.confa wersją zainstalowaną w moim systemie. Są identyczne.
WinEunuuchs2Unix
@Questioner Kilka pytań: 1) Czy gsettings get org.gnome.settings-daemon.plugins.power activepowraca true? 2) Czy masz partycję wymiany> ilość pamięci RAM?
WinEunuuchs2Unix
3

Oto przyjazny skrypt, który przygotowałem!

Stworzyłem prowizoryczne rozwiązanie, które sprawdza, czy laptop jest zasilany prądem przemiennym czy akumulatorowym ...

Dlatego jeśli jest zasilany prądem przemiennym, wyjdzie, a jeśli nie, będzie sprawdzał pozostałą moc baterii co 15 sekund, aż osiągnie zdefiniowaną zmienną, lowa raczej procent ...

Aha, a jeśli chcesz kontynuować pracę w tym samym terminalu, w którym uruchomiłeś ten skrypt, po prostu uruchom skrypt w następujący sposób:

bash power-notify.sh &

Bez zbędnych ceregieli, oto skrypt:

#!/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

Ten skrypt można również znaleźć na GitHub, tutaj ...

NerdOfCode
źródło
Działający system powinien dawać ostrzeżenia już przy podanych procentach, a następnie hybrydowy sen przy 2%. Myślę, że właśnie tego szuka OP. Skrypt można poprawić, wywołując hibernację na poziomie 2%. Bąbelek ostrzegawczy co 15 sekund jest ekstremalnie IMO. Myślę, że bańka wiadomości t 9%, 8%, 7% ... 3% byłaby bardziej praktyczna. Również dźwięk ostrzeżenia systemowego pomógłby ludziom nie patrzeć w tym czasie na laptopa. Ten skrypt zawiera niektóre z zalecanych przeze
WinEunuuchs2Unix
@ WinEunuuchs2Unix po prostu prosty skrypt
NerdOfCode
Wydaje mi się, że zarówno twój skrypt, jak i mój skrypt, które podłączyłem w ostatnim komentarzu, mogą być uznane przez specjalistów za proste. Nie jestem jednak pewien, który skrypt nazywasz „prostym”?
WinEunuuchs2Unix
Zdecydowanie mój skrypt.
NerdOfCode
Nie, to dobry skrypt i robi to, co chcesz. Wszystkie świetne skrypty zaczynają się jako dobre skrypty i można je ulepszać przez kilka dni, tygodni lub dekad. Linux istnieje już od dłuższego czasu i będzie dostępny jeszcze długo.
WinEunuuchs2Unix