Manajemen Daya hanya memiliki opsi "Jangan Lakukan" untuk baterai sangat kritis di 17.10

10

Saya menggunakan Ubuntu 17.10 dengan Gnome di laptop Asus.

Di antarmuka Pengaturan Daya, di bawah tab Daya, ada opsi di bagian bawah untuk mengatur apa yang harus dilakukan jika baterai hampir habis.

Namun, ketika saya mengklik drop down untuk mengatur opsi itu, ia hanya menawarkan satu opsi, yaitu "tidak melakukan apa-apa":

tidak melakukan opsi daya

Saat ini, laptop saya akan kehabisan daya baterai 0, atau dekat dengan itu, dan kemudian mati tanpa peringatan, tidak ada kemungkinan menutup program dan mematikan dengan anggun.

Saya ingin mendapat peringatan ketika baterai berada pada 10% dan mudah-mudahan ada waktu untuk secara manual menyimpan dan mematikan program sebelum mematikan komputer. Bagaimana saya mencapai ini?


Sunting: Ini adalah isi /etc/UPower/UPower.conffile saya :

# 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
Penanya
sumber
Periksa apakah ini yang Anda cari di askubuntu.com/questions/92794/…
Aravind

Jawaban:

7

Langkah 1: Periksa gsettings

Ada dua opsi yang bisa Anda periksa di terminal:

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

Kemudian untuk mengubahnya gunakan:

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

Perhatikan pada sistem saya mereka baik-baik saja, jadi saya mengubahnya kembali ke apa yang mereka lakukan pertama kali misalnya.


Langkah 2: Periksa upower

Manajemen daya Gnome memanfaatkan upoweruntuk melakukan angkat berat. Untuk memastikannya berjalan dan mengumpulkan statistik baterai sebagaimana mestinya, gunakan:

$ 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

Pertama jalankan perintah ini ketika laptop dicolokkan. Kemudian cabut laptop dan jalankan perintah setelah beberapa waktu dan pastikan sisa waktu baterai telah berkurang dengan tepat.


Langkah Terakhir - Hibernasi tingkat rendah

Ini adalah langkah terakhir yang akan diambil setelah melelahkan semua langkah lainnya. Langkah ini tidak memerlukan Ubuntu atau Unity atau Gnome atau gsettingsatau upower. Ini hanya membutuhkan systemd, udevdan cronyang dibangun ke hampir semua distro Linux dengan atau tanpa GUI (Desktop).

Dari ArchLinux :

Hibernasi pada level baterai rendah

Jika baterai Anda mengirim peristiwa ke udevsetiap kali ia dikenakan biaya sebesar 1%, Anda dapat menggunakan udevaturan ini untuk hibernasi sistem secara otomatis ketika tingkat baterai sangat kritis, dan dengan demikian mencegah semua pekerjaan yang belum disimpan hilang. Catatan: Tidak semua baterai melaporkan peristiwa pelepasan. Uji dengan berjalan udevadm monitor --propertysambil menggunakan baterai dan lihat apakah ada kejadian yang dilaporkan. Anda harus menunggu setidaknya penurunan 1%. Jika tidak ada kejadian yang dilaporkan dan /sys/class/power_supply/BAT0/alarmtidak nol maka baterai kemungkinan akan memicu peristiwa ketika BAT0/energy_nowturun di bawah nilai alarm, dan udevaturan akan bekerja selama persentase matematika berhasil. Beberapa laptop memiliki opsi untuk ini dinonaktifkan di BIOS secara default.

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

Aturan ini akan diulang setiap kali kondisi ditetapkan. Dengan demikian, saat melanjutkan dari hibernasi saat baterai kritis, komputer akan hibernasi secara langsung. Beberapa laptop tidak bisa boot melebihi level baterai tertentu, sehingga aturannya dapat disesuaikan.

Baterai dapat melompat ke nilai yang lebih rendah daripada pemakaian terus menerus, karena itu udevpola string yang cocok untuk semua kapasitas 0melalui 5digunakan.

Aturan lain dapat ditambahkan untuk melakukan tindakan yang berbeda tergantung pada status dan / atau kapasitas catu daya.

Jika sistem Anda tidak memiliki atau melewatkan acara ACPI, gunakan crondengan skrip berikut:

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

Acara pengujian

Salah satu cara untuk menguji udevaturan adalah meminta mereka membuat file saat dijalankan. Sebagai contoh:

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

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

Ini membuat file /home/example/dischargingsaat pengisi daya laptop dicabut. Anda dapat menguji apakah aturan tersebut berfungsi dengan mencabut laptop Anda dan mencari file ini. Untuk udevpengujian aturan lebih lanjut , lihat Udev # Aturan pengujian sebelum memuat .

Ringkasan

Ada lebih banyak langkah untuk dikirim antara Langkah # 2 dan "Langkah Terakhir" tetapi ini akan diposting karena OP mengungkapkan lebih banyak detail setelah pengujian. Sementara itu, "Langkah Terakhir" harus mengurangi lebih banyak jawaban setengah jalan seperti hanya melaporkan persentase yang tersisa.

WinEunuuchs2Unix
sumber
Terima kasih atas tanggapan ini. Sayangnya, tampaknya gsettingsparameter saya sudah diatur ke suspenddan 10, yang akan menunjukkan bahwa sistem saya tidak menghormati opsi-opsi itu.
Penanya
@Questioner gsettingsadalah langkah pertama (mudah) untuk memeriksa. Saya telah menambahkan upowerlangkah selanjutnya untuk dilakukan.
WinEunuuchs2Unix
Terima kasih atas pembaruannya. Saya akan menguji laptop seperti yang Anda sarankan. Sementara itu, saya telah menambahkan konten /etc/UPower/UPower.conffile saya ke pertanyaan saya.
Penanya
@Questioner Saya berlari clipboard-diffantara UPower.confversi Anda dan yang diinstal di sistem saya. Mereka identik.
WinEunuuchs2Unix
@Pertanyaan Pasangan Tanya Jawab: 1) Apakah gsettings get org.gnome.settings-daemon.plugins.power activekembali true? 2) Apakah Anda memiliki partisi swap> jumlah RAM?
WinEunuuchs2Unix
3

Inilah naskah ramah yang saya kumpulkan!

Saya telah membuat solusi darurat yang memeriksa apakah laptop Anda menggunakan daya AC atau Baterai (DC) ...

Oleh karena itu, jika menggunakan daya AC, ia akan keluar dan jika tidak akan terus memeriksa daya baterai yang tersisa setiap 15 detik hingga mencapai variabel yang ditentukan lowatau lebih ...

Oh dan jika Anda ingin terus bekerja di terminal yang sama saat Anda menjalankan skrip ini, cukup jalankan skrip seperti:

bash power-notify.sh &

Tanpa basa-basi lagi, inilah skripnya:

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

Skrip ini juga dapat ditemukan di GitHub, di sini ...

NerdOfCode
sumber
Sistem kerja seharusnya memberikan peringatan sudah pada persentase yang diberikan dan kemudian tidur hibrida pada 2%. Saya pikir itulah yang dicari OP. Skrip Anda dapat ditingkatkan dengan memanggil hibernate pada 2%. Juga gelembung peringatan setiap 15 detik adalah IMO ekstrem. Gelembung pesan t 9%, 8%, 7% ... 3% akan lebih praktis menurut saya. Juga suara peringatan sistem akan membantu orang tidak melihat laptop mereka pada saat itu. Skrip ini memiliki beberapa komponen yang saya rekomendasikan: askubuntu.com/questions/837078/…
WinEunuuchs2Unix
@ WinEunuuchs2Unix hanya sebuah skrip sederhana
NerdOfCode
Saya kira skrip Anda dan skrip saya yang saya tautkan di komentar terakhir dapat dianggap sederhana oleh para profesional. Saya tidak yakin skrip mana yang Anda panggil "sederhana"?
WinEunuuchs2Unix
Skrip saya pasti.
NerdOfCode
Tidak, ini skrip yang bagus dan melakukan apa yang Anda inginkan. Semua skrip hebat dimulai sebagai skrip yang bagus dan Anda dapat memperbaikinya selama berhari-hari, berminggu-minggu, atau berpuluh-puluh tahun. Linux telah ada sejak lama dan akan ada lebih lama.
WinEunuuchs2Unix