La gestione del risparmio di energia ha l'opzione "Non fare nulla" per la batteria quasi scarica in 17.10


10

Sto usando Ubuntu 17.10 con Gnome su un laptop Asus.

Nell'interfaccia Impostazioni risparmio energia, sotto la scheda Alimentazione, c'è un'opzione in basso per impostare cosa fare nel caso in cui la batteria si scarichi in modo critico.

Tuttavia, quando faccio clic sul menu a discesa per impostare tale opzione, offre solo un'opzione, che è "non fare nulla":

non fare alcuna opzione di alimentazione

Attualmente, il mio laptop si esaurirà fino a 0 con la carica della batteria, o vicino ad esso, e poi si spegnerà senza avvisi, senza possibilità di chiudere i programmi e spegnerlo con grazia.

Vorrei ricevere un avviso quando la batteria è al 10% e si spera un po 'di tempo per salvare e spegnere manualmente i programmi prima di spegnere il computer. Come posso raggiungere questo obiettivo?


Modifica: ecco il contenuto del mio /etc/UPower/UPower.conffile:

# 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

Verifica se stai cercando askubuntu.com/questions/92794/…
Aravind

Risposte:


7

Passaggio 1: controllare gsettings

Ci sono due opzioni che puoi controllare nel terminale:

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

Quindi per cambiarli usa:

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

Nota sul mio sistema che stanno bene, quindi li ho cambiati in quello che erano in primo luogo per esempio.


Passaggio 2: controllare upower

La gestione dell'alimentazione di Gnome utilizza upowerper il sollevamento di carichi pesanti. Per assicurarsi che funzioni e raccolga le statistiche della batteria come dovrebbe, utilizzare:

$ 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

Eseguire prima questo comando quando il laptop è collegato. Quindi scollegare il laptop ed eseguire il comando dopo un po 'di tempo e assicurarsi che il tempo residuo della batteria si sia ridotto in modo appropriato.


Ultimo passaggio: ibernazione di basso livello

Questo è l'ultimo passo che verrebbe fatto dopo aver esaurito tutti gli altri passi. Questo passaggio non richiede Ubuntu o Unity o Gnome o gsettingso upower. Si richiede solo systemd, udeve cronche sono costruiti in quasi tutte le distribuzioni Linux con o senza interfaccia grafica (desktop).

Da ArchLinux :

Ibernazione a batteria scarica

Se la batteria invia eventi udevogni volta che si (dis) carica dell'1%, è possibile utilizzare questa udevregola per ibernare automaticamente il sistema quando il livello della batteria è critico, evitando così di perdere tutto il lavoro non salvato. Nota: non tutte le batterie segnalano eventi di scarica. Esegui il test eseguendo la udevadm monitor --propertybatteria e verifica se sono stati segnalati eventi. Dovresti attendere almeno l'1% di calo. Se non viene segnalato alcun evento e /sys/class/power_supply/BAT0/alarmè diverso da zero, è probabile che la batteria attiverà un evento quando BAT0/energy_nowscende al di sotto del valore di allarme e la udevregola funzionerà fino a quando la percentuale di matematica si risolve. Alcuni laptop hanno un'opzione per questo disabilitata nel BIOS per impostazione predefinita.

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

Questa regola verrà ripetuta ogni volta che viene impostata la condizione. Pertanto, quando si riprende dal letargo quando la batteria è critica, il computer andrà in letargo direttamente. Alcuni laptop non si avviano oltre un certo livello di batteria, quindi la regola potrebbe essere regolata di conseguenza.

Le batterie possono passare a un valore più basso, invece di scaricare in continuo, quindi un udevpattern matching stringa per tutte le capacità 0attraverso 5viene utilizzato.

Altre regole possono essere aggiunte per eseguire azioni diverse a seconda dello stato e / o della capacità dell'alimentatore.

Se il sistema non ha eventi ACPI mancanti o mancanti, utilizzare croncon il seguente script:

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

Eventi di test

Un modo per testare le udevregole è farle creare un file quando vengono eseguite. Per esempio:

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

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

Questo crea un file /home/example/dischargingquando il caricabatterie del laptop è scollegato. Puoi verificare se la regola ha funzionato scollegando il tuo laptop e cercando questo file. Per un udevtest più avanzato delle regole, vedere Udev # Testing rules prima del caricamento .

Sommario

Ci sono altri passaggi da pubblicare tra il passaggio 2 e "Ultimo passaggio", ma questi verranno pubblicati come OP rivela ulteriori dettagli dopo il test. Nel frattempo, "Last Step" dovrebbe ridurre più risposte a metà strada come semplicemente riportare la percentuale rimanente.


Grazie per questa risposta Sfortunatamente, sembra che i miei gsettingsparametri fossero già impostati su suspende 10, il che indicherebbe che il mio sistema non sta rispettando queste opzioni.
Interrogante

@Questioner è gsettingsstato il primo (facile) passaggio da verificare. Ho aggiunto upoweril prossimo passo da compiere.
WinEunuuchs2Unix

Grazie per l'aggiornamento. Proverò il laptop come suggerisci. Nel frattempo, ho aggiunto il contenuto del mio /etc/UPower/UPower.conffile alla mia domanda.
Interrogante

@Questioner Ho eseguito clipboard-difftra la tua UPower.confe la versione installata sul mio sistema. Sono identici
WinEunuuchs2Unix

Domande di coppia @Questioner: 1) gsettings get org.gnome.settings-daemon.plugins.power activeRitorna true? 2) Hai una partizione di swap> quantità di RAM?
WinEunuuchs2Unix

3

Ecco una sceneggiatura amichevole che ho messo insieme!

Ho creato una soluzione improvvisata che controlla se il tuo laptop è alimentato a corrente alternata o a batteria (CC) ...

Pertanto, se è alimentato a corrente alternata, uscirà e in caso contrario continuerà a controllare la carica residua della batteria ogni 15 secondi fino a quando non raggiunge la variabile definita lowo piuttosto la percentuale ...

Oh, e se vuoi continuare a lavorare nello stesso terminale in cui hai eseguito questo script, semplicemente esegui lo script in questo modo:

bash power-notify.sh &

Senza ulteriori indugi, ecco lo script:

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

Questo script può essere trovato anche su GitHub, qui ...


Un sistema funzionante dovrebbe dare avvisi già a determinate percentuali e quindi dormire in modalità ibrida al 2%. Penso che sia quello che l'OP sta cercando. Il tuo script potrebbe essere migliorato chiamando l'ibernazione al 2%. Anche una bolla di avvertimento ogni 15 secondi è un IMO estremo. Una bolla di messaggi t 9%, 8%, 7% ... 3% sarebbe più pratica penso. Inoltre, un suono di avviso di sistema aiuterebbe le persone a non guardare il proprio laptop in quel momento. Questo script ha alcuni dei componenti che ho raccomandato: askubuntu.com/questions/837078/…
WinEunuuchs2Unix

@ WinEunuuchs2Unix solo un semplice script
NerdOfCode

Immagino che sia la tua sceneggiatura che la mia sceneggiatura che ho collegato nell'ultimo commento possano essere considerate semplici dai professionisti. Non sono sicuro di quale script tu chiami "semplice" però?
WinEunuuchs2Unix

La mia sceneggiatura sicuramente.
NerdOf del

No, è una buona sceneggiatura e fa quello che vuoi che faccia. Tutti i grandi script iniziano come buoni script e puoi migliorarlo in giorni, settimane o decenni. Linux è in circolazione da molto tempo e lo sarà ancora per molto.
WinEunuuchs2Unix
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.