Power Management hat in 17.10 nur die Option „Nichts tun“ für kritisch schwache Batterie

10

Ich verwende Ubuntu 17.10 mit Gnome auf einem Asus-Laptop.

In der Benutzeroberfläche "Energieeinstellungen" finden Sie unten auf der Registerkarte "Energie" eine Option, mit der Sie festlegen können, was zu tun ist, wenn der Akku kritisch leer wird.

Wenn ich jedoch auf das Dropdown-Menü klicke, um diese Option festzulegen, wird nur eine Option angeboten: "Nichts tun":

Mach nichts Power Option

Derzeit ist mein Laptop auf 0 oder fast leer und schaltet sich dann ohne Warnungen aus, ohne die Möglichkeit, Programme zu schließen und ordnungsgemäß herunterzufahren.

Ich hätte gerne eine Warnung, wenn der Akku 10% leer ist, und hoffentlich etwas Zeit, um Programme manuell zu speichern und herunterzufahren, bevor ich den Computer ausschalte. Wie erreiche ich das?


Bearbeiten: Hier ist der Inhalt meiner /etc/UPower/UPower.confDatei:

# 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
Fragesteller
quelle
Überprüfen Sie, ob
Aravind

Antworten:

7

Schritt 1: Überprüfen gsettings

Es gibt zwei Möglichkeiten, die Sie im Terminal überprüfen können:

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

Um sie zu ändern, verwenden Sie:

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

Beachten Sie, dass sie auf meinem System in Ordnung sind, daher habe ich sie zum Beispiel wieder auf das geändert, was sie ursprünglich waren.


Schritt 2: Überprüfen upower

Gnome Power Management nutzt upowerdas schwere Heben. Verwenden Sie Folgendes, um sicherzustellen, dass es funktioniert und die Batteriestatistiken ordnungsgemäß erfasst werden:

$ 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

Führen Sie diesen Befehl zuerst aus, wenn der Laptop angeschlossen ist. Ziehen Sie dann den Netzstecker aus der Steckdose und führen Sie den Befehl nach einiger Zeit aus, um sicherzustellen, dass sich die verbleibende Akkulaufzeit entsprechend verkürzt hat.


Letzter Schritt - Ruhezustand auf niedriger Ebene

Dies ist der letzte Schritt, der ausgeführt wird, nachdem alle anderen Schritte erschöpft sind. Dieser Schritt erfordert kein Ubuntu oder Unity oder Gnome oder gsettingsoder upower. Es erfordert nur systemd, udevund crondas in fast allen Linux - Distributionen gebaut mit oder ohne GUI (Desktop).

Von ArchLinux :

Ruhezustand bei niedrigem Batteriestand

Wenn Ihr Akku Ereignisse sendet, udevwenn er um 1% (entladen) wird, können Sie diese udevRegel verwenden, um das System automatisch in den Ruhezustand zu versetzen, wenn der Akkuladestand kritisch ist, und so zu verhindern, dass alle nicht gespeicherten Arbeiten verloren gehen. Hinweis: Nicht alle Batterien melden Entladungsereignisse. Testen Sie, udevadm monitor --propertyindem Sie im Akkubetrieb laufen, und prüfen Sie, ob Ereignisse gemeldet werden. Sie sollten mindestens 1% Tropfen warten. Wenn keine Ereignisse gemeldet werden und /sys/class/power_supply/BAT0/alarmnicht Null sind, löst die Batterie wahrscheinlich ein Ereignis aus, wenn BAT0/energy_nowder Alarmwert unterschritten wird, und die udevRegel funktioniert, solange der Prozentsatz der Mathematik funktioniert. Bei einigen Laptops ist diese Option im BIOS standardmäßig deaktiviert.

$ 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"

Diese Regel wird wiederholt, wenn die Bedingung festgelegt ist. Wenn der Ruhezustand fortgesetzt wird, wenn der Akku kritisch ist, wird der Computer direkt in den Ruhezustand versetzt. Einige Laptops booten nicht über einen bestimmten Akkuladestand hinaus, sodass die Regel entsprechend angepasst werden kann.

Batterien können auf einen niedrigeren Wert springen , anstatt kontinuierlich die Entladung, also ein udevZeichenfolge Anpassungsmuster für alle Kapazitäten 0durch 5verwendet wird.

Je nach Stromversorgungsstatus und / oder Kapazität können andere Regeln hinzugefügt werden, um unterschiedliche Aktionen auszuführen.

Wenn auf Ihrem System keine oder fehlende ACPI-Ereignisse vorhanden sind, verwenden Sie crondas folgende Skript:

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

Ereignisse testen

Eine Möglichkeit zum Testen von udevRegeln besteht darin, dass sie beim Ausführen eine Datei erstellen. Beispielsweise:

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

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

Dadurch wird eine Datei erstellt, /home/example/dischargingwenn das Laptop-Ladegerät vom Stromnetz getrennt wird. Sie können testen, ob die Regel funktioniert, indem Sie Ihren Laptop vom Computer trennen und nach dieser Datei suchen. Weitere Informationen zum Testen von Regeln findenudev Sie unter Udev # Testregeln vor dem Laden .

Zusammenfassung

Zwischen Schritt 2 und "Letzter Schritt" müssen weitere Schritte veröffentlicht werden. Diese werden jedoch veröffentlicht, sobald OP nach dem Testen weitere Details anzeigt. In der Zwischenzeit sollte der "Letzte Schritt" mehr Antworten auf halbem Weg reduzieren, z. B. einfach den verbleibenden Prozentsatz melden.

WinEunuuchs2Unix
quelle
Vielen Dank für diese Antwort. Leider scheinen meine gsettingsParameter bereits auf suspendund eingestellt zu sein 10, was darauf hinweisen würde, dass mein System diese Optionen nicht respektiert.
Fragender
@Questioner gsettingswar der erste (einfache) Schritt zu überprüfen. Ich habe upowerden nächsten Schritt hinzugefügt .
WinEunuuchs2Unix
Danke für das Update. Ich werde den Laptop testen, wie Sie vorschlagen. In der Zwischenzeit habe ich den Inhalt meiner /etc/UPower/UPower.confDatei zu meiner Frage hinzugefügt .
Fragender
@Questioner Ich habe clipboard-diffzwischen Ihrer UPower.confund der auf meinem System installierten Version ausgeführt. Sie sind identisch.
WinEunuuchs2Unix
@Frageer Paar Fragen: 1) Kommt gsettings get org.gnome.settings-daemon.plugins.power activezurück true? 2) Haben Sie eine Swap-Partition> RAM?
WinEunuuchs2Unix
3

Hier ist ein freundliches Drehbuch, das ich zusammengestellt habe!

Ich habe eine provisorische Lösung entwickelt, die überprüft, ob Ihr Laptop mit Wechselstrom oder Batterie (DC) betrieben wird ...

Wenn es mit Wechselstrom betrieben wird, wird es beendet und wenn nicht, wird es alle 15 Sekunden die verbleibende Batterieleistung überprüfen, bis es die definierte Variable lowoder eher Prozent erreicht ...

Oh, und wenn Sie weiterhin im selben Terminal arbeiten möchten, in dem Sie dieses Skript ausgeführt haben, führen Sie das Skript einfach wie folgt aus:

bash power-notify.sh &

Hier ist ohne weiteres das Skript:

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

Dieses Skript finden Sie auch auf GitHub, hier ...

NerdOfCode
quelle
Ein funktionierendes System soll bereits bei bestimmten Prozentsätzen Warnungen und dann bei 2% Hybrid-Schlaf geben. Ich denke, das ist es, wonach das OP sucht. Ihr Skript könnte verbessert werden, indem Sie den Ruhezustand mit 2% aufrufen. Auch eine Warnblase alle 15 Sekunden ist extrem IMO. Eine Nachrichtenblase mit 9%, 8%, 7% ... 3% wäre meiner Meinung nach praktischer. Ein Systemalarmton würde auch dazu beitragen, dass Personen zu diesem Zeitpunkt nicht auf ihren Laptop schauen. Dieses Skript enthält einige der von mir empfohlenen Komponenten: askubuntu.com/questions/837078/…
WinEunuuchs2Unix
@ WinEunuuchs2Unix nur ein einfaches Skript
NerdOfCode
Ich denke, sowohl Ihr Skript als auch mein Skript, das ich im letzten Kommentar verlinkt habe, können von Fachleuten als einfach angesehen werden. Ich bin mir nicht sicher, welches Skript Sie "einfach" nennen?
WinEunuuchs2Unix
Mein Skript auf jeden Fall.
NerdOfCode
Nein, es ist ein gutes Skript und macht das, was Sie wollen. Alle großartigen Skripte beginnen als gute Skripte und können über Tage, Wochen oder Jahrzehnte verbessert werden. Linux gibt es schon lange und es wird noch viel länger geben.
WinEunuuchs2Unix