[KERNEL][TW][SM-G930F/FD/W8/S/L/K] Primal Kernel v2.3.4 [DQH8][S7 + Ports]

kylothow

Senior Member
Jan 3, 2014
1,011
1,727
0
Brescia


Welcome to the official thread for Primal Kernel project for the Exynos Galaxy S7 (SM-G930F/FD/W8/S/L/K) running TouchWiz based ROMs (Nougat only currently).

The aim of this project is to provide a rock solid, ready to use tweaked kernel, without useless features.

Introduction:
Primal Kernel, formerly known as The Outsider Kernel, is the first S7 kernel for TouchWiz based ROMs sporting the AnyKernel2 installation approach.
The most widespread method consists of flashing a complete prebuilt boot image (this means that it will be flashed straight away without any modification).
This is the most practical method for providing a working kernel, but it has disadvantages too:
1) the installation package will be bigger.
2) the developer must keep the ramdisk updated with the newest from stock kernels. This requires rebasing the patches and keeping up with the newest firmwares sometimes with frequent releases.
3) it makes the compatibility with older ROMs a little more complicated as a newer ramdisk could add modifications not supported by the older ROM.
4) for the ported ROMs the developer has to manually patch the ramdisk with the required changes from the ported device's one. So you have to create a different boot.img for every ported device for every S7 variant.

But we have an alternative...
AnyKernel2 is a different approach to the installation of the kernel: the package only contains the prebuilt zImage (the actual kernel), the dtb (basic hardware instructions like reserved memory and so on) and the patches for the stock ramdisk. AnyKernel while installing unpacks the previous kernel and replaces zImage, dtb and, after patching it, the new ramdisk.
This implies various benefits:
1) smaller installation package.
2) you can always have the most updated ramdisk without the need of waiting an update from the developer.
3) better compatibility as you can flash it on top of any stock (or close to) boot image.
4) it makes life a lot easier for the developer with many ready to use patching functions.
5) with some efforts from me, the package can adapt the stock S7 ramdisk to work on any S8 or Note FE ported ROM, making it even more adaptable.
All this sounds great (and it is great) but introduces a problem: you can't flash it on top of another custom kernel. This because custom kernels almost always have scripts and other modifications to the ramdisk, which might not be compatible with my kernel.

Installation instructions:
If you correctly follow these instructions you'll be able to run Primal on any ROM (as above).
If it doesn't work, read twice and try installing again before asking for help.

● Instructions for BatMan ROM (S8 port) users:
1) install the ROM (you can dirty flash if you already have it installed) make sure to choose stock kernel (so it doesn't install the new GPU libs, which aren't supported by Primal).
3) after the ROM flashing process has been completed flash the Primal kernel zip for your device.
4) flash your preferred root method.
5) reboot and be patient as first boot might take a little more time.

● Instructions for any other ROM (any other S8 and Note FE ported ROM and, obviously, any S7 ROM) running a custom kernel:
1) make sure you have the stock S7 kernel zip (or any stock boot.img from any S7 Odin package or ROM zip containing the stock kernel) and Primal Kernel zip.
2) if you have a boot.img flash it to the boot partition using Flashify or TWRP itself.
3) if you have the flashable stock kernel zip and Primal Kernel zip reboot to recovery and flash in this order: stock kernel zip, Primal Kernel zip and then your preferred root method.

● Instructions for any S7 ROM running stock kernel:
1) reboot to recovery and flash in this order Primal Kernel and your root method of choice.

If you get into a bootloop...
● if you're running a port make sure it says dream2lte (if an S8 port) or gracerlte (if a Note FE port) in the build.prop; if there isn't any add a line at the bottom, "primal=dream2lte" for S8 or "primal=gracerlte" for Note FE.
● make sure your ROM doesn't come with the new GPU libs installed, if it does restore the old libs somehow (flashable zip coming soon!).

Thanks and Credits:
● Samsung OSRC for the kernel source code
● @Tkkg1994 and @jesec for their clear and vast source code and scripts
● @flar2, @UpInTheAir, @franciscofranco, @eng.stk, @osm0sis, @andip71 and others for their great contributions to the community and Android

Features:
● based on the latest Samsung kernel source code G935FXXU1DQH8 merged with G935SKSU1DQG1
● always have the latest ramdisk for your specific model and variant, thanks to AnyKernel2
● ported ROMs are supported (like S8 and Note FE based ROMs)
● compiled with custom built Uber Toolchain 6.4.1 (20170826) and optimization flags
● custom scripts with tweaks applied at boot, optimizations and wakelock fixes
● init.d support
● added a few tested and updated CPU governors (blu_active, conservative, ondemand, powersave, interactive, performance).
default: interactive
● added a few tested and updated I/O schedulers (noop, deadline, row, cfq, bfq, zen)
default: cfq with custom parameters
● added a few TCP congestion algorithms (westwood, reno, bic, cubic, htcp, lia, olia, wvegas)
default: westwood
● full f2fs support from jaegeuk's f2fs-stable plus OnePlus improvements
● fstab mount tweaks for both ext4 and f2fs
● fixed various bugs in the Linux code like improved cyptography algorithms, filesystems, network...
● architecture specific fixes
● cpuidle improvements
● random (entropy) generation improvements
● power managemnet, schedulers, governor and memory management improvements
● unlocked lower CPU frequencies with correct voltages and set recommended defaults (312MHz big - 338MHz LITTLE)
● schedule workqueues on awake CPUs enabled
● improved hotplug and idle with interactive governor
● added 112MHz minimum GPU frequency and clock control
voltage control for GPU
LED control with fading option
voltage control for big and LITTLE clusters
● preset I/O scheduler tunables
disabled SWAP and ZSWAP for best performance
● preset VM tunables
SELinux permissive
Knox 0x0, Samsung security checks and SafetyNet spoofed to pass
Fsync switch added
Software CRC control switch added
● and many other changes (too many to be listed here)...

Notes:
● If you want root, you need to flash the root zip after flashing this kernel (Magisk is recommended to pass SafetyNet).
● If you want to access the advanced kernel controls MTweaks by @morogoku is the only app which supports all the features (download it here).
Everything has always been stable, and almost bug free, so no notes on that side at the moment :laugh:

Latest stable version is 2.3.4.
If you want to flash an older version see Archive in the download links below.

Source > GitHub

Commits (kind of a changelog) > GitHub

Download:
herolte (S7 SM-G930) > Android File Host


Support:
If you want to receive support, find and share settings, report bugs and try Beta versions, join our Telegram group:
TouchWiz Projects by kylothow | Official Group


You're welcome :)

XDA:DevDB Information
Primal Kernel, Kernel for the Samsung Galaxy S7

Contributors
kylothow
Source Code: https://github.com/kylothow/universal8890-NN-G935

Kernel Special Features: Stable f2fs porting, tweaked with recommended settings, a few but working governors, schedulers and patches are just some of the awesome features.

Version Information
Status: Stable
Current Stable Version: 2.3.4
Stable Release Date: 2017-09-13

Created 2017-04-26
Last Updated 2017-09-14
 

kylothow

Senior Member
Jan 3, 2014
1,011
1,727
0
Brescia
Changelogs:

From version 2.3.3 to 2.3.4:
Code:
● added fstrim on boot
● added Knox and other security check props spoofing inside the kernel
● added Google Play services drains fix
● added custom init.rc with tweaks (cfq with tunables preset, read ahead 128 and 256 for external, rised base CPU frequency a little (you can lower it if you want)
● recent patch to cpufreq added
● updated AnyKernel2 with the latest goodies from osm0sis
While searching the Internet you might also find versions which aren't listed here: these are Beta versions and their changelog isn't available (but included in the one of the next stable version, so you don't miss anything).
All the changes I made are listed on GitHub.

Old changelogs (for The Outsider):
Version 2.2.1
Code:
- added cleaning scripts at boot (automatic trim, sqlite optimization, cache and leftovers cleaning
- updated ramdisk and mcregistry to DQE7
- updated with latest Samsung changes (DQE7/DQEF)
- disabled swap and zsmalloc
- added row I/O scheduler
- increased default maximum frequency to 2.6GHz
- updated to Linux 3.18.55
- switched to custom built Uber Toolchain 6.3.1 (20170528)
- switched to a whole new overclock/voltage management method based on ASV
- changed frequency policy especially regarding touch boost (for better battery)
- allow to enable Exynos swap
- add unstable power detection and charging/battery controls
- added notifiers for the future addition of CPU governors and removed old/broken implementations
- a few f2fs and other minor fixes to defconfig, schedulers, cpufreq
Version 2.1.6
Code:
- switched to GCC 6.3.1
- various build flags to optimize building
- enabled a few compression algorithms (GZIP, LZ4, LZMA...)
- enabled cryptographic drivers optimized for 64 bits
- defconfig tunings to reduce debug logging
- updated mcRegistry and ramdisk to DQD9 (for S8Port only the init file)
- drastically changed kernel default tweks/settings
Version 2.1.5
Code:
- fixes regarding stability and speed
- ext4 and fuse fixes
- crypto and drivers built uncompressed 
- random numbers generation changes
Version 2.1.4
Code:
- the kernel has been redone from scratch; the features are in pair/more than the previous 1.x.x versions, and gives you an overall way better experience.
Version 1.4.1
Code:
- various bug fixes
- performance/reliability improvements for network, ext4, f2fs and cryptography
- enabled a few kernel modules for ipv6 and a few other optimizations
- trying out higher kernel timings
- set default governor to blu_active
Version 1.4.0
Code:
- first release for xda
 
Last edited:

kylothow

Senior Member
Jan 3, 2014
1,011
1,727
0
Brescia
How to set up your phone with f2fs:

1) First you have to install a compatible recovery. Recent TWRP releases can format and mount f2fs, but they don't handle a few installation scripts correcty. I recommend TWRP 3.1.1.0 by @lyapota which has the correct patches. You can find it here.
2) Then you have to backup all your data (internal storage will be wiped too, so make sure to copy ALL your files in the INTERNAL storage). So, any TWRP backup should be taken on external SD card.
3) After this, reboot into TWRP. From Wipe / Advanced Wipe check only /data, then select Change Filesystem and check f2fs. Do the same for /cache. At the moment I don't think there are ROMs that support f2fs on /system too (All the TouchWiz based ROMs force ext4 and format despite settings).
4) Reboot into recovery once again, so we're sure that it can mount everything.
5) At this point you're done. Flash your ROM of choice, this kernel and whatever you want.
Reboot and profit!

ROMs supporting f2fs formatted /system will be listed here when available.
 
Last edited:

kylothow

Senior Member
Jan 3, 2014
1,011
1,727
0
Brescia
busy man
thanx boss
testing. ..
hotplug?

what Rom you running @kylothow
At the moment only the stock hotplug. Further developments will need a specific app like Synapse or maybe a custom Kernel Adiutor -- which is the next step in the development.
I'm running latest Helios, the only thing that is preventing me to do my own custom ROM (basically it perfectly fits my needs).
 
  • Like
Reactions: Calvin.manneson

ig_df

Senior Member
Aug 27, 2014
103
21
0
Default settings are the best even for you?
I wanna try your work but don't have enough time for playing games with custom settings.
Thx a lot for you anyway:)
 

kylothow

Senior Member
Jan 3, 2014
1,011
1,727
0
Brescia
Default settings are the best even for you?
I wanna try your work but don't have enough time for playing games with custom settings.
Thx a lot for you anyway:)
The point of this is to provide a great experience out of the box -- there is a few others helping me to decide which are the best settings, and I update them quite often because it's a continue pursuit of the best everyday settings profile.
The script applies at boot before anything else so you can change them in case you don't like.

The inexperienced user can update the kernel and enjoy always updated settings without even installing a kernel control app or rooting.

Sent from my SM-G935F using Tapatalk
 
  • Like
Reactions: ig_df

danny19901

Senior Member
Nov 4, 2010
2,612
858
0
Stockton-On-Tees
May give it a try out at some point ATM I'm on superman ROM but curious as if it will break superman control app as I know a version of super kernel broken that app

Sent from my SM-G930F using Tapatalk
 

kylothow

Senior Member
Jan 3, 2014
1,011
1,727
0
Brescia
hi

what is battery unstable you mean? it's less time than other kernel? please guide
The old 1.x.x version can have every problem imaginable (the only confirmed one is stutters for some users) but no one ever complained about battery.
Users just say things without proof, stats or logs, they don't even mention the settings they're using or which ROM are they on... Definitely not useful.

Sent from my SM-G935F using Tapatalk
 
  • Like
Reactions: tranphungan

tranphungan

Member
Feb 8, 2008
26
2
0
The old 1.x.x version can have every problem imaginable (the only confirmed one is stutters for some users) but no one ever complained about battery.
Users just say things without proof, stats or logs, they don't even mention the settings they're using or which ROM are they on... Definitely not useful.

Sent from my SM-G935F using Tapatalk
Thank you.

In my opinion. I can see this kernel make my rom Super Man is smoother than superstock or tgpkernel or superkernel. Absolutely smoothly and not effect to battery much (still not recognize..). I push up all cpu frequency to max. Hehe
 

kylothow

Senior Member
Jan 3, 2014
1,011
1,727
0
Brescia
New update is available for download. It has been tested and reported to be stable and worth the upgrade from the great 2.1.6.
Here's the changelog:
Version 2.2.1
Code:
- added cleaning scripts at boot (automatic trim, sqlite optimization, cache and leftovers cleaning
- updated ramdisk and mcregistry to DQE7
- updated with latest Samsung changes (DQE7/DQEF)
- disabled swap and zsmalloc
- added row I/O scheduler
- increased default maximum frequency to 2.6GHz
- updated to Linux 3.18.55
- switched to custom built Uber Toolchain 6.3.1 (20170528)
- switched to a whole new overclock/voltage management method based on ASV
- changed frequency policy especially regarding touch boost (for better battery)
- allow to enable Exynos swap
- add unstable power detection and charging/battery controls
- added notifiers for the future addition of CPU governors and removed old/broken implementations
- a few f2fs and other minor fixes to defconfig, schedulers, cpufreq
> https://www.androidfilehost.com/?w=files&flid=171297