La gestion de l'alimentation a uniquement l'option «Ne rien faire» pour une batterie extrêmement faible en 17.10


10

J'utilise Ubuntu 17.10 avec Gnome sur un ordinateur portable Asus.

Dans l'interface Paramètres d'alimentation, sous l'onglet Alimentation, il y a une option en bas pour définir ce qu'il faut faire au cas où la batterie deviendrait extrêmement faible.

Cependant, lorsque je clique sur le menu déroulant pour définir cette option, il ne propose qu'une seule option, qui est "ne rien faire":

ne rien faire option d'alimentation

Actuellement, mon ordinateur portable fonctionnera à 0 ou presque, puis s'éteindra sans avertissement, sans possibilité de fermer les programmes et de s'éteindre gracieusement.

Je voudrais avoir un avertissement lorsque la batterie est à 10% et, espérons-le, un certain temps pour enregistrer et arrêter manuellement les programmes avant d'éteindre l'ordinateur. Comment puis-je y parvenir?


Edit: Voici le contenu de mon /etc/UPower/UPower.confdossier:

# 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

Vérifiez si vous recherchez askubuntu.com/questions/92794/…
Aravind

Réponses:


7

Étape 1: vérifier gsettings

Il y a deux options que vous pouvez vérifier dans le terminal:

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

Ensuite, pour les modifier, utilisez:

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

Remarque sur mon système, ils sont très bien, donc je les ai remis à ce qu'ils étaient en premier lieu par exemple.


Étape 2: vérifier upower

La gestion de l'alimentation Gnome utilise upowerpour faire le gros du travail. Pour vous assurer qu'il fonctionne et collecte les statistiques de la batterie comme il se doit, utilisez:

$ 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

Exécutez d'abord cette commande lorsque l'ordinateur portable est branché. Débranchez ensuite l'ordinateur portable et exécutez la commande après un certain temps et assurez-vous que le temps restant de la batterie a été réduit de manière appropriée.


Dernière étape - mise en veille prolongée

Il s'agit de la dernière étape qui serait prise après avoir épuisé toutes les autres étapes. Cette étape ne nécessite pas Ubuntu ou Unity ou Gnome ou gsettingsou upower. Il suffit systemd, udevet cronqui sont intégrés dans presque tous les Distros Linux avec ou sans GUI (Desktop).

Depuis ArchLinux :

Mise en veille prolongée sur batterie faible

Si votre batterie envoie des événements à udevchaque fois qu'elle se (dés) charge de 1%, vous pouvez utiliser cette udevrègle pour mettre en veille automatique le système lorsque le niveau de la batterie est critique, et ainsi éviter que tout travail non enregistré ne soit perdu. Remarque: toutes les batteries ne signalent pas les événements de décharge. Testez en exécutant udevadm monitor --propertysur batterie et voyez si des événements sont signalés. Vous devez attendre au moins 1% de baisse. Si aucun événement n'est signalé et /sys/class/power_supply/BAT0/alarmest différent de zéro, la batterie déclenchera probablement un événement lorsqu'elle BAT0/energy_nowtombe en dessous de la valeur d'alarme, et la udevrègle fonctionnera tant que le pourcentage mathématique fonctionnera. Certains ordinateurs portables ont une option pour cela désactivée dans le BIOS par défaut.

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

Cette règle sera répétée chaque fois que la condition est définie. En tant que tel, lors de la reprise de l'hibernation lorsque la batterie est critique, l'ordinateur va hiberner directement. Certains ordinateurs portables ne démarrent pas au-delà d'un certain niveau de batterie, la règle peut donc être ajustée en conséquence.

Les batteries peuvent passer à une valeur inférieure au lieu de décharger en continu, donc une udevconfiguration d'adaptation de chaîne pour l' ensemble des capacités à 0travers 5est utilisé.

D'autres règles peuvent être ajoutées pour effectuer différentes actions en fonction de l'état et / ou de la capacité de l'alimentation.

Si votre système n'a aucun événement ACPI ou qu'il en manque, utilisez-le cronavec le script suivant:

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

Tester des événements

Une façon de tester les udevrègles consiste à leur faire créer un fichier lors de leur exécution. Par exemple:

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

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

Cela crée un fichier /home/example/discharginglorsque le chargeur d'ordinateur portable est débranché. Vous pouvez tester si la règle a fonctionné en débranchant votre ordinateur portable et en recherchant ce fichier. Pour des udevtests de règles plus avancés , voir Udev # Test des règles avant le chargement .

Résumé

Il y a plus d'étapes à poster entre l'étape # 2 et la "dernière étape" mais celles-ci seront publiées comme OP révèle plus de détails après le test. Dans l'intervalle, la «dernière étape» devrait réduire le nombre de réponses à mi-chemin, comme le simple rapport du pourcentage restant.


Merci pour cette réponse. Malheureusement, il semble que mes gsettingsparamètres étaient déjà définis sur suspendet 10, ce qui indiquerait que mon système ne respecte pas ces options.
Interlocuteur

@Questioner a gsettingsété la première étape (facile) à vérifier. J'ai ajouté upowerla prochaine étape à franchir.
WinEunuuchs2Unix

Merci pour la mise à jour. Je vais tester l'ordinateur portable comme vous le suggérez. En attendant, j'ai ajouté le contenu de mon /etc/UPower/UPower.confdossier à ma question.
Questionneur

@Questioner J'ai couru clipboard-diffentre votre UPower.confet la version installée sur mon système. Ils sont identiques.
WinEunuuchs2Unix

@Questioner Couple questions: 1) Est-ce que le gsettings get org.gnome.settings-daemon.plugins.power activeretour true? 2) Avez-vous une partition de swap> quantité de RAM?
WinEunuuchs2Unix

3

Voici un script amical que j'ai mis en place!

J'ai créé une solution de fortune qui vérifie si votre ordinateur portable est alimenté en CA ou sur batterie (CC) ...

Par conséquent, s'il est alimenté en courant alternatif, il se fermera et sinon, il continuera à vérifier la puissance restante de la batterie toutes les 15 secondes jusqu'à ce qu'il atteigne la variable définie lowou plutôt le pourcentage ...

Oh et si vous voulez continuer à travailler dans le même terminal que vous avez exécuté ce script, exécutez simplement le script comme suit:

bash power-notify.sh &

Sans plus tarder, voici le 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

Ce script peut également être trouvé sur GitHub, ici ...


Un système fonctionnel est censé donner des avertissements déjà à des pourcentages donnés, puis un sommeil hybride à 2%. Je pense que c'est ce que recherche le PO. Votre script pourrait être amélioré en appelant hibernate à 2%. Une bulle d'avertissement toutes les 15 secondes est également extrême OMI. Une bulle de message t 9%, 8%, 7% ... 3% serait plus pratique je pense. De plus, un son d'alerte système aiderait les gens à ne pas regarder leur ordinateur portable à l'époque. Ce script contient certains des composants que j'ai recommandés: askubuntu.com/questions/837078/…
WinEunuuchs2Unix

@ WinEunuuchs2Unix juste un simple script
NerdOfCode

Je suppose que votre script et mon script que j'ai lié dans le dernier commentaire peuvent être considérés comme simples par les professionnels. Je ne sais pas quel script vous appelez "simple"?
WinEunuuchs2Unix

Certainement mon script.
NerdOfCode

Non, c'est un bon script et fait ce que vous voulez qu'il fasse. Tous les grands scripts commencent comme de bons scripts et vous pouvez l'améliorer au fil des jours, des semaines ou des décennies. Linux existe depuis longtemps et le sera encore plus longtemps.
WinEunuuchs2Unix
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.