[Xperia SP Android Development] Tomoms:
Hurray, a new version of Helium is available!

ONLY for Lollipop for now!

Ok, let's talk about the hot stuff you'll find in it.

powersuspend v1.7:

powersuspend is a replacement for the old earlysuspend. earlysuspend was a suspension manager that was removed by Adrian some months ago since it's really outdated. This replacement is more modern and provides better power management since it "talks" with the CPU hotplugs, for example, and tells them when to enter a "suspended state".

How does it work? At the beginning, it could be triggered either by the kernel itself, or by the LCD panel (when screen went off, it entered the suspended state). It could also be triggered manually by the user (pretty useless in my opinion). Since the "kernel trigger" doesn't work properly on Lollipop on many devices, I cleaned up the code a bit and now it can be triggered

only

by the LCD panel. This cleanup causes a sort of "bug" in Kernel Adiutor: KA will show that powersuspend uses the "Autosleep" trigger even though, actually, it's set on the LCD panel trigger. This however doesn't affect anything. It's only a visual bug and even if you set the powersuspend trigger method to something else, it will go back to "Autosleep". Don't worry, it's working properly. I've got proof.

powersuspend was developed by the great faux123, so thanks to him!

hotplug updates:

intelliplug by faux123 was updated to v5.0. msm_mpdecision (a.k.a. bricked hotplug) by showp1984 and neobuddy89 also got a massive update. A

new

hotplug has been added: msm_hotplug by Fluxi. All these hotplug are well integrated with powersuspend and they have many tunable parameters!

ZRAM, zsmalloc backported from Linux 3.17:

ZRAM and zsmalloc have been backported from Linux 3.17 by Adrian. He also fixed the old swap bug so he deserves a huge "thank you"!

MSM_Limiter:

msm_limiter is an interesting tool that allows to set a different max frequency for the CPUs when the screen goes off. It talks with powersuspend to work properly. Unfortunately I couldn't find an app to control this feature so the only option is to do so by using the sysfs interface (more details will follow).

It's developed by neobuddy89.

library updates:

some libraries were updated: lib/genalloc was backported from Linux 3.10; lib/memcopy and lib/string were also backported from their glibc versions (this leads to better performance).

built with GCC 5.3.1:

v5.0 has been built with GCC 5.3.1 and the very latest UBER toolchain. The header files used by the kernel to improve the build have been simplified and updated too.

power efficient workqueues:

These new workqueues are tied to the CPU core they were created on and they avoid onlining cores if it's not strictly necessary, and they improve the use of CPU cache.

new CPU governor:

smartmax has been added.

KSM replaced UKSM:

maybe temporarily, maybe forever. KSM now has better power management features than UKSM.

init.d support re-added

lighter installation zip (TWRP is not included anymore)

as usual, lots of source updates (especially for f2fs)

Important! How to enable msm_limiter:

For your convenience, I suggest you to edit the /system/etc/init.d/01helium script after flashing the kernel (or even before - you can find it in the "scripts/init.d" folder of Helium's zip).

echo "0" > /sys/kernel/msm_limiter/limiter_enabled

The line above means that msm_limiter will be disabled at boot. Change 0 to 1 to enable it at boot.

echo "1026000" > /sys/kernel/msm_limiter/suspend_max_freq

The line above is an example of how to set a maximum frequency for all cores when the screen is off. 1026000 is 1026 MHz, that is 1,026 GHz. Change the first four digits to any other existing frequency (check them in Kernel Adiutor, for example), otherwise the limiter won't work.

echo "1728000" > /sys/kernel/msm_limiter/resume_max_freq;

I don't know why, but msm_limiter overwrites the general max CPU freq. when screen is on. So you really must edit this line in the script if you want to use msm_limiter. Change "1728000" with the max frequency you want the CPUs to use when the screen is on, for example I put "1832000".

If you want to change one of these values, just edit the script. The new values will be applied after a reboot. You should re-edit it whenever you reflash the kernel though.

You can also edit the single files once the phone has booted, but the script will overwrite them as soon as you reboot.

If you want msm_limiter to be always on, from phone bootup to poweroff, the simplest way is to edit the 01helium script as I've just explained you.

If you want to keep msm_limiter disabled, simply don't touch the script. It will set the default values I've put in, but anyway, unless you change the first line I wrote about, the limiter will be disabled.

TL;DR:

you cheater! You really must read the long post!

Well, I hope I have mentioned all the changes! Enjoy the release :)

Thanks to:

all the users mentioned in the changelog, the Linaro team, dorimanx and Adrian, of course :)

Post scriptum: splashscreens are coming :)