Backlight dim/off timers are too conservative
|Reported by:||gnu||Owned by:||cjb|
|Component:||power manager (OHM)||Version:||not specified|
|Deployments affected:||Action Needed:||design|
Powering off the screen saves at least a quarter of the power consumed by an average running XO (1.5W out of 6W). We currently wait *twenty minutes* before we do this, though we dim the backlight after a single minute. Dimming saves some of that power, but dimming all the way to monochrome only saves 1W. Turning the screen off after dimming saves another 0.5W or more.
I think that dimming after a minute is fine (though it should be adjustable with the xset command and/or the Sugar control panel). I think that after we dim the screen, perhaps one or two minutes after, we should turn off the screen. If a human is looking at it when it dims, they will likely press a shift key or stroke the touchpad to un-dim it. If no human is looking, we shouldn't wait 19 more minutes to double the power savings.
(Turning the screen off would produce even greater power savings once we also power-down the DCON; see #2765.)
As I proposed in http://dev.laptop.org/ticket/8006#comment:34, I think this should be done by standard X DPMS support, which would allow querying and changing the timeouts with the standard X "xset dpms" command. The "standby" setting would dim the backlight, and the "suspend" or "off" setting would turn the screen off. This is a slight perversion of DPMS (normally, "standby" turns off the display, but comes back to life slightly faster than "suspend").
Note: currently in 8.2-759, dimming is a bit bizarre. With no power management enabled, we appear to never dim the screen, we merely blank it after 20 minutes using X facilities. With "advanced" power management enabled, we dim it with Ohm after 1 minute, then suspend the CPU if the CPU is idle. If we do suspend the CPU, we then don't blank the screen after 20 minutes (because we're suspended, and suspend doesn't yet wake up based on pending timer queue entries). You can observe both the 1-minute dimming and the 20-minute blanking by running something that burns CPU time ("while true; do true; done").