New FKUpdater 2.1 release

The ins & outs of the new version

Francisco Franco
7 min readNov 15, 2016

--

Once upon a time

Let’s start with the introductions. For those who don’t know this app, it when it launched in January 2012 it started to be a simple custom Kernel manager. I was pretty new and fresh to Android app development so when it launched it simply downloaded & auto-flashed (it wrote the downloaded Kernel binary directly into the boot block so the only thing you had to do was reboot your device and voilá, new and updated Kernel without the need to fiddle with custom recoveries) franco.Kernel, my custom Kernel, at that time, for the Samsung Galaxy Nexus.

The UI was horrible, it probably blocked the main thread when downloading the Kernel and every thing bad you can possibly imagine.

Back then there wasn’t anything like it to “manage” a custom Kernel. I have a vague idea that Mobile Odin from Chainfire did some sort of Kernel flashing for some Samsung devices, but for all its worth the idea of “auto-flashing” a Kernel wasn’t around and that was my initial selling point — users could stay updated with new Kernel releases by simply tapping one button.

It was just like magic.

Now

Fast forwarding things a little bit, we’re nearly in 2017 and my app is still going strong. It supports a reasonable number of devices and and has a lot of cool features.

I’ve got some fun stuff to you share with you and, as you probably noticed, today is about FKUpdater 2.1 and I have some exciting new features to tell you about.

Night Shift

Let’s start with Night Shift. This feature has been slowly coming on to our daily machines. In fact, f.Lux, an application that does this for desktop computers, has been around for a while, but only when iOS 9 came out we started to think about it. Android 7.0 had it built-in during the previews, but was later axed because of performance issues since it needed a newer HWComposer version. It finally shipped with the Google Pixel phone with Android 7.1, and it works beautifully. But you’re limited to the color matrix Google ships by default, so you can’t adjust the level of red tint on your display.

With FKUpdater 2.1 you’ll be able to use Night Shift on all the supported devices that have the Kernel interface to change RGB display channels. Even if you don’t use franco.Kernel you’ll be able to use this feature as long as your Kernel supports this interface. Considering Android’s Night Light is only present in the Google Pixel this feature opens up a new reality for older devices such as the Nexus 4 and Nexus 5 since they don’t have any other way to achieve this.

This is the interface looks like:

FKUpdater 2.1 Night Shift

The cool part of it is that you can use your prefered red tint through the slider. This works beautifully well and I think you’re going to love it!

Display profiles

This is a feature I had couple years ago, but later axed because it didn’t offer much flexibility and had really bad UI. Now with FKUpdater 2.1 this part has been completely re-done from scratch and has a proper ui. Most of my supported devices have a bunch of built-in profiles provided by the community through this app, but now you can build your own, save them, and load them up anytime. Profiles are saved to your internal SDcard so even if you clear FKUpdater’s data, or reflash your rom they will be there ready for you to use.

FKUpdater 2.1 display profiles

High Brightness Mode

This feature has been present for a while, but it didn’t have a proper UI section and was scattered from Settings to Color control section. Now it has a dedicated section and it’s easier to choose the threshold for when the automatic listener kicks in. This is only present on AMOLED devices and it needs a Kernel patch. With franco.Kernel this is available on the Nexus 6, Nexus 6P and now Google Pixel.

Launcher Shortcuts for Performance Profiles

Android 7.1 introduced Launcher Shortcuts API which allows developers to provide quick actions when long pressing the app icon. It’s pretty similar to Force Touch on iOS. Although I’m not a big fan of hiding actions beneath gestures I understand the idea and some people like it so I added shortcuts for Performance Profiles. This API is only available on 7.1 though.

FKUpdater 2.1 Launcher shortcuts

Quick Tiles for Performance Profiles

Following the same idea for the launcher shortcuts, you can now toggle these profiles from the Tiles menu.

FKUpdater 2.1 Quick Tiles

Per-App Profiles improvements

This is one of the “flagship” features of FKUpdater. It literally gives you unlimited power on a per-app basis. For example you can seriously underclock your device by default for maximum power savings, and then you can create more aggressive profiles for the most performance hungry apps. Or do the opposite, have your device run at the default settings and then create profiles to prevent some apps from destroy your battery life.

One major use case I can find for this is have a special profile for Google Maps (or any navigation app for that matter) to seriously underclock CPU, GPU, turn on Android’s Battery Saver and reduce the display resolution while Google Maps is active & running in the foreground. Here’s how that profile would look like:

This would be a great profile for Google Maps just like I explained above. This example is from my Nexus 6P. Imagine the power savings you can achieve by running Maps on a 720p resolution. Then as soon as you leave Maps all the settings would return back to their previous state.

The improvement on this 2.1 release was preventing some of the Special parameters from being changed, thus the “Unchanged” option you see there.

This feature is really powerful because it combines some Kernel interfaces, such as CPU, GPU, input boost frequency or thermal throttle threshold, some of them not available on stock Kernels, with what I call special parameters which toggles of options you mess with every day, several times a day.

I’m really proud of this feature and how it turned out. This has been iterated for years, and it shows. API wise things have changed a lot since Lollipop, and every new version of the platform had me adapt so sometimes it has been a challenge.

One more thing…

While all these features are exciting I couldn’t finish without mentioning the addition of Google Pixel to the supported devices. Although Auto-flash isn’t yet supported because at the time of this writting TWRP is barely usable and in Alpha stages so I’m currently only releasing FK in a simply Kernel binary only flashable through the bootloader. Once TWRP is more stable I’ll go back to anyKernel2 method and auto-flashable. Also since it’s only a Kernel binary Performance Profiles are not available for the Pixel. Things are moving quickly in the recovery/root scene so this will change pretty quickly.

There are other changes in the app, although minor and mostly transparent to the end user, such as:

1 — Fixed ~10 activity leaks

2 — Improved integration with Play Games for achievements

3 — Added all the new Kernel knobs for the Pixel

4 — Round icon for Android 7.1

5 — Ability to set a default home path for the File Manager

6 — Improved inter process communication for preferences

7 — The usual bug fixes

This release has been under beta testing for 2 months so it has a lot of user feedback under its belt.

Buy it here

https://play.google.com/store/apps/details?id=com.franco.kernel

You can follow me on Google+

Twitter

And join the franco.Kernel community on Google+

And lastly, here are the links for my franco.Kernel XDA-Developer threads

Nexus 5 http://forum.xda-developers.com/google-nexus-5/orig-development/kernel-franco-kernel-r53-t2508284

Nexus 5X http://forum.xda-developers.com/nexus-5x/orig-development/wip-franco-kernel-r6-t3286128

Nexus 6 http://forum.xda-developers.com/nexus-6/orig-development/kernel-franco-kernel-r1-t2987173

Nexus 6P http://forum.xda-developers.com/nexus-6p/orig-development/kernel-franco-kernel-r1-t3266864

Nexus 7 2013 http://forum.xda-developers.com/showthread.php?t=2446431

One Plus One http://forum.xda-developers.com/oneplus-one/orig-development/kernel-franco-kernel-r1-t2800871

Google Pixel http://forum.xda-developers.com/pixel/development/kernel-franco-kernel-r1-31th-october-t3491373

Google Pixel XL http://forum.xda-developers.com/pixel-xl/development/kernel-franco-kernel-r1-31th-october-t3491377

Thanks for reading through, can’t wait to see your feedback on this release!

--

--