View Single Post
Old 12-29-2010, 07:33 PM   #1
thatsme
Junior Member
thatsme began at the beginning.
 
Posts: 2
Karma: 14
Join Date: Dec 2010
Device: none
Bypassing the screensaver entirely on suspend

Here is how to disable the Kindle screensaver entirely, and very easily; assuming usbnetworking anyway. (But obviously, if you brick your kindle attempting this, it's not my fault...!)

Background: I was looking for a way to disable the Kindle screensaver, so that it would still go through the two phases of t1_timeout and t2_timeout, with keys being locked after t1, and kindle actually going to suspend after t2.

This is different from just increasing t1_timeout, because I *want* my Kindle keys to be locked if I put the thing into my bag without pressing the power button. And I do not want to see an actual screensaver, neither built-in nor my own images. It's an E-ink display, so it should be able to keep showing the current page of the book I'm reading... forever, right?

(I tried the ;debugOn and `disablescreensaver people keep mentioning, but the 2.5 firmware on my k2i doesn't seem to understand it.)

Anyway, the instructions:

powerd sends the dbus event "goingToScreenSaver" after t1, and "suspending" after t2. The actual screen saver nonsense then happens somewhere on the Java side in the screensaver booklet probably, which I didn't want to mess with.

Solution: Take a hex editor and edit the /usr/bin/powerd binary directly. Change "goingToScreenSaver" and "suspending" to something bogus, like "goingToScreenSaXXX" and "suspendXXX" (obviously keeping the length). Restart using /etc/init.d/powerd. (And for testing purposes, don't forget to disconnect, because kindle wouldn't actually suspend anyway while attached to USB.)

So, problem solved: after t1_timeout, the kindle screen just stays unchanged. The user power button touch brings it back to life, still without an apparent change on the screen. Bliss!

[Okay, admittedly it would be a tad cooler still if there was a *little* indication that the thing is locked, e.g. by changing the little bar at the bottom. Anyone willing to try and actively observe the dbus event to run, say, eips?]

BTW, if you change only "goingToScreenSaver" (but not "suspending"), the behaviour is weird for me: It doesn't show the screensaver, but the suspending step then blanks the screen. Not what I was after, but also interesting.

Oh, and I didn't observe battery use to see if it is actually still suspending. But I've checked /var/log/messages, and it looks like a real suspend to me. The only change is that the booklet doesn't know what's going on until after resume, at which point it notices that it's not running yet and gives up.

EDIT:

Update for Kindle Paperwhite, Firmware 5.3.1: Still works almost as described. The goingToScreenSaver event is unchanged. Note that the suspending event has been renamed though. Look for :suspend: in the binary and change it to :suspxxx: for example.

Last edited by thatsme; 06-29-2013 at 05:43 AM.
thatsme is offline   Reply With Quote