Jolla Phone 2026 low-power-mode screen (aka LPM aka Glance screen)

I’ve used couple of days for testing LPM screen on Jolla Phone 2026. These are my findings so far.

Enable LPM screen

To enable LPM screen on Jolla Phone 2026 device run in developer mode through terminal window:

mcetool --set-low-power-mode=enabled;
mcetool --set-lpmui-triggering=from-pocket,hover-over;
mcetool --set-ps-on-demand=disabled;
devel-su;

echo '[BrightnessLPM]' > /etc/mce/91als-defaults.ini;
echo 'LevelsProfile0=4;6;8;10;14;18;24;34;43;53;62;72;81;91;100' >> /etc/mce/91als-defaults.ini;

chmod 644 /etc/mce/91als-defaults.ini;

systemctl restart mce;

Explanation

The LPM screen shows when you pull out the device from your pocket or trigger it by hovering your hand over the camera/sensor area at the top of the phone. In latter the activation happens after you move your hand away from the top and not immediately when you put your hand over it.

Like some other SFOS devices mcetool --set-ps-on-demand=disabled; is required to prevent proximity sensor snoozing off when the phone is not in active use. Naturally having the sensor on all the time consumes battery.

Note that it may take couple of seconds until the changes activate.

Just the mcetool commands are enough to activate the LPM screen functionality and no restart to services are needed. However, in very dark locations automatic light sensor (als) turns the LPM screen brightness to minimum, after which the compositor does not show information on it anymore. The screen still lights up but remains empty of any content.

Upping the minimum brightness values for LPM screen slightly works around this issue.

File /etc/mce/20als-defaults.ini controls these brightness values. For LPM screen the defaults are:
LevelsProfile0=1;2;3;4;5;15;24;34;43;53;62;72;81;91;100

Instead of editing the original file directly (that may change back in SFOS updates) we set up the overriding values for this variable into a new file /etc/mce/91als-defaults.ini that is run later in the device start sequence.

Original settings

To restore original settings, just run:

devel-su;

rm /etc/mce/91als-defaults.ini;
systemctl restart mce;

mcetool --set-low-power-mode=disabled;
mcetool --set-ps-on-demand=enabled;

And for the record the original value for triggering was:

mcetool --set-lpmui-triggering=from-pocket;

LPM quality of life adjustments

These are not neccessary but improve the LPM experience.

Warning: Messing up with the below changes may cause inability to access the lockscreen and thus changing or activating any settings on your phone. This includes enabling developer mode afterwards.

If you do these edits, ensure that you have access to your device without any queries regarding USB mode when connecting the USB cable. You have to be able to reach the developer mode through SSH immediately after you open up the phone using your fingerprint sensor.

Most preferably do below changes only through a direct SSH terminal window so you can revert the changes immediately in case the screen does not light up after restarting lipstick service.

Brighter font to fix light ambiences’ LPM screen:

Light ambiences are using far too dark font in the LPM screen. This replaces Theme.highlightColor with Theme.lightPrimaryColor for better contrast.

Backup the original file:

devel-su;

cp -p /usr/share/lipstick-jolla-home-qt5/layers/LockScreenLayer.qml . ;

Change the color:

sed -i 's/lipstickSettings.lowPowerMode ? Theme.highlightColor/lipstickSettings.lowPowerMode ? Theme.lightPrimaryColor/g' /usr/share/lipstick-jolla-home-qt5/layers/LockScreenLayer.qml;

Restart lipstick. This takes 30 - 60 seconds. Just wait until you get the prompt focus back in SSH. When the restart command has completed the lockscreen should start on your phone.

systemctl --user restart lipstick;

If you don’t see and cannot access the screen at all with fingerprint sensor or brief press of the button, revert the changes immediately and restart lipstick again without disconnecting your SSH session from the phone.

Also, restarting lipstick can trigger some processes (such as voicecall-ui-prefetch) to start consuming CPU cycles on the background. Check runaway processes before doing any power usage metering for increased proximity sensor activity.

Brighter weather app font for light ambiences’ LPM screen:

If you have configured the default weather app, you can also see the temperature in LPM screen.

Sorry, I haven’t figured out where to change this. I almost got locked out from my phone when trying out different spots in the qml files.

If someone knows what to change, please share the knowledge in the comments.

21 Likes

Thanks for testing and a great guide.

Did you measured consumption?

With that data decision about implementing it woukd be easier.

I don’t have good idea about the normal battery consumption of Jolla 2 yet, so hard to compare. Too early for that. :slight_smile:

There are some apps that measure consumption.

Like Battery Log, Battery Buddy and there are more versatile apps as well.

1 Like

Its easy to make the glance screen app, but there is no way to code it that it woudnt affect certain things that are blocked like you mentioned requires developer coding. I tried to make the app but keeps the backlight on.

I think Jolla should just add this feature at some point to the system settings.

1 Like

i’ve been using a full always-on LPM, like with the N9, with my sms, email, bat%, and missed calls, on 10 III for 2 years or so now.

my battery decreases by about 4-8% per day more when i have it enabled versus when i dont. it still lasts the whole day, but i have to think about turning it off sometimes. it is very much worth it to me. bear in mind, this is with the screen turned on 100% of the time, at 5% brightness, even when the phone is in my pocket.

HOWEVER, it has a BUNCH of moving parts, so its not plug-and-play:

  • enable lpm as above
  • modify the qml for the lock screen:
    • to read and display custom info from a file with cutes-js
    • add a dbus interface to refresh the lockscreen and update the clock/etc
  • modify compositor qml to disable touch-input with a dconf setting
  • once per minute, using timed:
    • run a script to generate the text that the QML reads
    • send dbus cmd to update lpm lock screen
  • on lock:
    • store the brightness in a tmp file
    • set the brightness to a fixed low value (5%)
    • unblank+blank-lpm screen if locked and lpm is not visible
    • (with sf-button-monitor on power key) disable touch input in compositor
  • on unlock:
    • restore the brightness
    • (with sf-button-monitor on power key) enable touch input in compositor

here are the important files if you wanna look at it try and build your own:

some notes:

  • this is really too complicated for me to package up as a patch, and i think it needs a bunch of the weird stuff i do to actually be good (like disabling touch screen with sfbm)
  • i dont know if this works properly with all locking systems. i dont lock my phone with a pin or fingerprint. ive tested it a bit with pin tho and it seems fine.
  • HOWEVER, i dont know if any of the things i do here or elsewhere might undermine lock screen security somehow, like maybe power button enters lpm but doesnt do tklock-close
  • if i leave an android app open and lock the screen, the android app stays active. this means if i use an android camera app and lock it, my battery dies in an hour. ive been meaning to do something about that, but i havent decided what
5 Likes

i would pay good money for jolla to add an LPM/AoD with alwaysOn or glance-only

  • LPM mode: (o) off (_) glance (_) always-on`
    • glance timeout: [30 seconds]
    • glance activations: pocket/shake tap double-tap
    • (always-on mode updates every minute and never times out)
  • notifications: missed calls sms summary sms body, etc
  • a shell script, run as the user, to print custom markdown

IMO, this was the killer feature of the N9, and its one of my favorite ‘features’ (i.e.: crazy hacks) on SFOS

i’ve thought about packaging this all up in a patch for patch manager, but its too brittle and has too many interdependencies on other apps+configs, like sfbm and disabling deep sleep and disabling touch entry

9 Likes

The issue like i mentioined is that it needs way too many system editing and hardware knowledge, so this Glance screen that i also liked on N8 and Lumia 800 should be developed by Jolla team.

Heres just some of low end coding i managed to do but i cant set the backlight to turn off so in dark it has light on all the time compared to Lumia 800 or N9 that you cant see the text in dark only in light.

just to clarify, you and the OP are talking about is more like an LPM glance screen, which is already a feature on sailfish as part of mce and just needs to be enabled as described by the OP. making a glance screen app to wrap those settings is presumably simple, and doesn’t require doing anything in particular. sailfish could include a toggle for it with minimal effort, but they explicitly do not. i always assumed this was because of battery life suspicion, even though it uses surprisingly little battery even if you run it 24h/day

my comment is about how to build a related but different always-on screen, that updates every minute with custom text based on notifications/etc, and never turns off. this is more like what was on later symbian, meego, and windows phone devices. the Nokia N9 had two different apps, by admiral0 and thp, to customize the display.

making an always-on screen ‘app’ would require patching QML files and running several daemons and writing several wrapper scripts. it would be great if jolla could recapture the glory days of the N9 with this feature.

2 Likes

Yeah, I’m still running my 15 years old N9 as an alarm clock on my night table. The battery still lasts for a week in flight mode. :grinning_face:

4 Likes

This is what I love here! Thanks for the write-up.

2 Likes

Jolla could add features like this as “hidden experimental” one behind the developer mode, it could be a good middle-ground.

2 Likes