[Samsung Galaxy S9 & S9+ Cross Device Development] ianmacd:
Version 0.99.27 released.

This release reveals a feature that has actually been present in APGK since almost the very beginning: CPU clock modification, otherwise known as overclocking and underclocking.

Long-time users will know that I have always maintained that overclocking in particular was at odds with APGK's stated goal of uncompromising stability, and therefore would not be included in the kernel. And that was true: The standard APGK kernel has never modified the CPU's behaviour, and never will.

Nevertheless, alternative overclocking and underclocking kernels were included in the ZIP file, and could be installed in place of the standard kernel via a couple of separate, undocumented mechanisms. Although I made a couple of people aware of these alternative kernels and their selection mechanisms, their existence was essentially left as an Easter egg for the wider APGK user community to discover over time.

Funnily enough, however, said discovery hasn't been forthcoming; or if it has, it hasn't been publicly disclosed. Evidently, no-one is curious enough to look inside the ZIP archive or even glance at the installer code on GitHub. The existence of these alternative kernels has therefore remained a trivially concealed secret. Until now, that is.

I have made the decision to publicly announce these two variant kernels in the hope that some users may find them useful. They will continue to be offered in the future, but will never replace the mainline APGK kernel.

The underclocking kernel is identical in operation to the one offered by ElementalX: the big cluster CPU (Samsung Mongoose 3) is limited to 2.314 GHz instead of the usual 2.704 GHz. If you need to maximise the amount of time the device can last on a single battery charge, this may be the kernel variant for you. It comes at the expense of a small performance penalty that you may not even notice in practice.

The overclocking kernel is more complicated. This kernel will boost the maximum frequency of the big cluster SPU to 2.964 GHz from the usual 2.704 GHz (2.496 GHz vs 2.314 GHz in dual mode; 2.002 GHz vs. 1.794 GHz in triple/quad mode). This is slightly higher than the boost provided by ElementalX's overclocking kernel, which provides for up to 2.886 GHz. Additionally, APGK's overclocking kernel will boost the small cluster 's (ARM Cortex-A55) maximum frequency to 2.002 GHz from the usual 1.794 GHz. This is identical to ElementalX's mode 2 overclocking behaviour.

Starting with this release (i.e. not available, even undocumented, in previous releases), APGK's overclocking kernel also features GPU overclocking. The Mali-G72 GPU will have its maximum frequency boosted to 598 MHz from 572 MHz, and its minimum frequency boosted to 299 MHz from 260 MHz. This is identical to the behaviour of the Notorious kernel in its final release before becoming defunct. Gamers in particular may appreciate the slight performance increase here.

It should go without saying that the overclocking kernel will incur, at a minimum, a small battery performance penalty. Whether the gains outweigh the sacrifice will depend on individual usage. Furthermore, there may be an additional tax to pay in terms of device stability. The overclocking kernel has proven 100% stable on my S9+, but it is entirely possible that individual units may demonstrate lower tolerances. If you find your device spontaneously rebooting on the overclocking kernel, simply revert to using the standard kernel. Do not report this as a bug!

To install the underclocking kernel instead of the standard kernel, either create a file on your external SD card called .apgk_underclock or rename the APGK archive to contain _underclock in the name.

Similarly, to install the overclocking kernel instead of the standard kernel, either create a file on your external SD card called .apgk_overclock or rename the APGK archive to contain _overclock in the name.

Then simply install APGK as usual, using TWRP. The installer will infer your wishes from either the renamed ZIP file or the dot-file you created, and install the appropriate kernel. On-screen messages will confirm that the correct kernel is being installed.

Use EX Kernel Manager or MTweaks to verify the modified CPU and GPU frequencies, and look for either the -uc or the -oc suffix to the kernel's name (obtainable, for example, by uname -a) to indicate that you have installed the underclocking or the overclocking variant, respectively.

Westwood+ is now the default TCP congestion algorithm used by the kernel, due to its reliable bandwidth estimation and ability to cope with high loss networks, which makes it well-suited to wireless links. Should you wish to deviate from this choice, you can use EX Kernel Manager or MTweaks (or, if you prefer the more old-fashioned approach, sysctl net.ipv4.tcp_congestion_control or even echo into /proc/sys/net/ipv4/tcp_congestion_control) to dynamically select an alternative, such as CUBIC. All versions of APGK prior to v0.99.27 defaulted to the Android kernel standard, which is the somewhat questionable choice of BIC.

Here is a brief, easily digestible introduction to the Westwood+ algorithm on mobile networks. If that's not heavy enough on technical detail, bite into

this.

The Veno TCP congestion algorithm is now also included in the kernel. Veno is optimised for wireless networks and may therefore be of interest to some users. Again, please use EX Kernel Manager, MTweaks, sysctl or echo to select it.

There is now an interactive installation mode available.

If the ZIP file name contains the string _interactive or a dot-file called .apgk_interactive is present in the root of the external SD card, interactive installation mode is triggered. Please note that this mode overrides any selections implied by the archive name or the presence of dot-files on the file-system.

In interactive mode, you will be asked questions regarding which kernel to install and whether to root the device afterwards with Magisk. Selections are made using the Bixby and Volume buttons. Just follow the on-screen prompts.

I recommend that all users try the new interactive installation mode at least once. Your feedback on this new feature would be most appreciated.

Finally, whilst it may appear that much has changed in this release (which is true), the mainline kernel has actually hardly changed at all. Do not be alarmed!

Change log

CPU and GPU overclocking now offered via overclocking kernel variant.

CPU underclocking now offered via underclocking kernel variant.

Westwood+ TCP congestion algorithm now the default (formerly BIC).

Veno TCP congestion algorithm added to kernel.

Interactive installation mode now available.

Updated WireGuard to v0.0.20181018.

Trigger file to request Magisk chaining is now .apgk_magisk (formerly .magisk).