#sleep #suspend #linux #power-management

app waketimed

Real-time clock suspend/wake-up scheduling daemon

3 releases

0.5.2 Nov 12, 2022
0.5.1 Oct 29, 2022
0.5.0 Oct 29, 2022

#1274 in Hardware support

Apache-2.0

97KB
2.5K SLoC

crates.io license test suite

waketimed

Project goal

Waketimed is an experimental daemon for managing the sleep/wake cycle of Linux phones and similar devices. It aims to keep the device sleeping as much as possible to preserve battery life.

Implementation status

When using waketimed currently, please be aware that it's in early development phase. The design and feature set are being figured out. Seamless non-breaking upgrades (e.g. config file compatibility between versions) are a nice to have but not the main priority right now.

The project idea is that waketimed could put the device to sleep and also wake it up periodically. However, only putting the device to sleep is implemented right now. If you want periodic system wake-ups in addition to wake-ups caused by the user or the modem, it is presently recommended to create a systemd timer.

Documentation

waketimed user documentation

Context

Without waketimed, Linux phones typically rely on automatic suspend functionality inherited from desktop and laptop computers. While this is a working solution, having the auto-suspend timer at e.g. 3 minutes often leaves the phone idle but not suspended for longer time than necessary, shortening precious battery life. Setting the idle and suspend timers to something more aggressive like 20 seconds is possible, but it is disturbing when the user wants to read something longer on the screen. Additionally, when testing these short timeouts, they seemed somewhat unreliable in actually suspending the device after the specified time.

Waketimed allows you to have generous idle timers in the desktop environment, but once it detects the device is not being used (screen off, no active/ringing call etc.), it suspends the device after a rather short time (10 seconds by default).

Dependencies

~19–32MB
~482K SLoC