diff --git a/man/systemd-sleep.conf.xml b/man/systemd-sleep.conf.xml index f7e753990a0..f984bcb33fe 100644 --- a/man/systemd-sleep.conf.xml +++ b/man/systemd-sleep.conf.xml @@ -86,14 +86,20 @@ suspend-then-hibernate - A low power state where the system is initially suspended (the state is stored in - RAM). If the system supports low-battery alarms (ACPI _BTP), then the system will be woken up by - the ACPI low-battery signal and hibernated (the state is then stored on disk). Also, if not - interrupted within the timespan specified by HibernateDelaySec= or the estimated - timespan until the system battery charge level goes down to 5%, then the system will be woken up by the - RTC alarm and hibernated. The estimated timespan is calculated from the change of the battery - capacity level after the time specified by SuspendEstimationSec= or when - the system is woken up from the suspend. + A low power state where the system is initially suspended (the state is stored in RAM). + When the battery level is too low (less than 5%) or a certain timespan has passed, whichever + happens first, the system is automatically woken up and then hibernated. This establishes a balance + between speed and safety. + + If the system has no battery, it would be hibernated after HibernateDelaySec= + has passed. If not set, then defaults to 2h. + + If the system has battery and HibernateDelaySec= is not set, low-battery + alarms (ACPI _BTP) are tried first for detecting battery percentage and wake up the system for hibernation. + If not available, or HibernateDelaySec= is set, the system would regularly wake + up to check the time and detect the battery percentage/discharging rate. The rate is used to + schedule the next detection. If that is also not available, SuspendEstimationSec= + is used as last resort. @@ -194,8 +200,8 @@ The amount of time the system spends in suspend mode before the system is automatically put into hibernate mode. Only used by systemd-suspend-then-hibernate.service8. - If the system has a battery, then defaults to the estimated timespan until the system battery charge level goes down to 5%. - If the system has no battery, then defaults to 2h. + Refer to suspend-then-hibernate for details on how this option interacts with + other options/system battery state. @@ -206,10 +212,10 @@ The RTC alarm will wake the system after the specified timespan to measure the system battery - capacity level and estimate battery discharging rate, which is used for estimating timespan until the system battery charge - level goes down to 5%. Only used by + capacity level and estimate battery discharging rate. Only used by systemd-suspend-then-hibernate.service8. - Defaults to 1h. + Refer to suspend-then-hibernate for details on how this option interacts with + other options/system battery state. diff --git a/src/shared/battery-util.c b/src/shared/battery-util.c index 85cb067c841..37b3f6a6ea3 100644 --- a/src/shared/battery-util.c +++ b/src/shared/battery-util.c @@ -241,13 +241,13 @@ int battery_is_discharging_and_low(void) { r = on_ac_power(); if (r < 0) - log_debug_errno(r, "Failed to check if the system is running on AC, assuming it is not: %m"); + log_warning_errno(r, "Failed to check if the system is running on AC, assuming it is not: %m"); if (r > 0) return false; r = battery_enumerator_new(&e); if (r < 0) - return log_debug_errno(r, "Failed to initialize battery enumerator: %m"); + return log_error_errno(r, "Failed to initialize battery enumerator: %m"); FOREACH_DEVICE(e, dev) { int level; diff --git a/units/systemd-hibernate.service.in b/units/systemd-hibernate.service.in index 25cd7a0ff95..c43195bc076 100644 --- a/units/systemd-hibernate.service.in +++ b/units/systemd-hibernate.service.in @@ -8,7 +8,7 @@ # (at your option) any later version. [Unit] -Description=Hibernate +Description=System Hibernate Documentation=man:systemd-hibernate.service(8) DefaultDependencies=no Requires=sleep.target diff --git a/units/systemd-hybrid-sleep.service.in b/units/systemd-hybrid-sleep.service.in index fe57f57fae6..c85215bdacf 100644 --- a/units/systemd-hybrid-sleep.service.in +++ b/units/systemd-hybrid-sleep.service.in @@ -8,7 +8,7 @@ # (at your option) any later version. [Unit] -Description=Hybrid Suspend+Hibernate +Description=System Hybrid Suspend+Hibernate Documentation=man:systemd-hybrid-sleep.service(8) DefaultDependencies=no Requires=sleep.target diff --git a/units/systemd-suspend-then-hibernate.service.in b/units/systemd-suspend-then-hibernate.service.in index 150d8d2c239..d7ab2c195e5 100644 --- a/units/systemd-suspend-then-hibernate.service.in +++ b/units/systemd-suspend-then-hibernate.service.in @@ -8,7 +8,7 @@ # (at your option) any later version. [Unit] -Description=Suspend; Hibernate if not used for a period of time +Description=System Suspend then Hibernate Documentation=man:systemd-suspend-then-hibernate.service(8) DefaultDependencies=no Requires=sleep.target