Development [Kernel][01.06.2023][Android 13] Kirisakura 2.0.24_T for Asus Zenfone 9 aka "DaVinci" - Asus Zenfone 9

Kirisakura-Kernel for the Asus Zenfone 9
Hello everyone,
To keep it short: Here is Kirisakura - Kernel for the Asus Zenfone 9 aka DaVinci. The Zenfone line-up internal codenames were traditionally derived from alcoholic drinks. Two years ago the Zenfone 6 bore the title "Kirin". The Zenfone 7 was codenamed "Tequila", while the Zenfone 8 bore the title "Sake".
This year seems to make a change however. The Zenfone 9´s internal codename is "DaVinci".
I would appreciate if everybody that flashes the kernel, reads at least once through this opening post and the following ones.
As far as we, @tbalden and me, are aware and as far as we know this project, alongside CleanSlate kernel for the Zenfone 9, marks the first release of a source compiled custom QGKI 2.0 kernel as a standalone flashable zip and project here on XDA.
The introduction of GKI and QCOMs adaptation QGKI means unfortunately that building a monolithic kernel becomes harder and harder. This results in the "kernel" itself no longer just sitting in one partition or the zImage, but it´s spread across different partitions (no longer being monolithic) now. Since there´s no requirment to keep monolithic builds working as in the past, it´s no longer possible to compile the source as is (without applying major rewrites, tricks or hacks) in the monolithic fashion on 5.10 kernels. The same was true for the Pixel 6/Pro.
That means the "kernel" project you´re seeing here needs to be compiled in a build environment to achieve the GKI/QGKI way. Since only Google releases the full build environment alongside the kernel sources itself in a proper fashion with git history, it became very complicated and seemingly impossible to do this on the Zenfone 9 at first glance. A big thanks at this place to Asus. From all the sources of SD8 Gen 1 QGKI devices published, the Asus Source is the most complete. A big thanks to Asus for publishing the sources on time and complete! Also for listening to us if the source is not complete and something is missing.
With excellent teamwork and a lot of hardwork, @tbalden and me managed to compile the Zenfone 9 kernel in QGKI 2.0 fashion after a lot of failed attempts and misery. It´s been a pleasure to work with him over the years here on XDA.
Kirisakura - Kernel is designed to bring a handful of beneficial features to the device, while ensuring excellent performance and smoothness to get you safely through the day!
If you expect a custom kernel to magically improve your devices battery life manifold and this is your only priority then this might not be the right place for you.
However the kernel is built to keep battery life close to the same as you would experience the on stock kernel while being tuned to perform better in various UI related benchmarks. The same benches are used by google to verify and ensure UI smoothness on the Pixel devices. The scheduler is tuned to yield lower jitter and reduce jank frames.
If that got your curious, I welcome you to continue reading if you´re still interested!
This project aims to keep most of the subsystems updated, way ahead of the stock kernel, thereby improving security and performance, while keeping stability as the foucs during testing! This includes Linux-Stable, CAF-Upstream and kernel/common.
A very positive development. Google pushed for CFI and SCS to be enabled by default in the android-common kernel. Starting with 5.4 kernel ( SD 888 ) CFI and SCS were enabled by default. It was a lot of work to get these features working nicely on the kernel I did the years back. So it´s nice to see this is now there by default in everybody can profit from it.
I put the explanations and links in hide tags here.
Spoiler: Documentation Control-Flow-Integrity (CFI) / Shadow Call Stacj (SCS)
Kernel Control Flow Integrity (Kernel-CFI), which is achieved by linking the kernel with LLD and Link Time Optimization (LTO), more precisely ThinLTO, are quite unique security features.
The recently released Kirisakura-Kernel for the OnePlus 8 Pro was featured on the XDA-Portal due to the inclusion of CFI. The featured article explains CFI in great details, is easy to understand and definitely worth to read.
If possible the latest Kirisakura-Kernel releases for various devices aim to include CFI in enforcing mode so users can benefit from this security features.
Another security feature is Shadow Call Stack (SCS).
SCS is another security patchset that is aimed at preventing attacks via return oriented programming (ROP).
ROP is a technique where the attacker gains control of the kernel stack to overwrite function return addresses and redirect execution to carefully selected parts of existing kernel code.
If you´re interested here are a few good links:
Google Security Blog explaining SCS.
LLVM doc about SCS
Android DOCs documenting SCS
If reading about upstream in the paragraph above got you curious, have a read about Linux-Stable and why it is important here. The stable-process is not the same for every subsystem, but the general idea, rule of thumb and benefits are applicable for other subsystems as well.
Read more about the Release-Model following this link.
This conversation on the LKML mailing list also shows the power of Linux-Stable and why it´s very beneficial to not just say it´s not worth and a potentiol source for bugs:
Starting with the Initial Message , the following reply and a good summarizing statement.
Quick explanation of QCOM-Upstream. CLO-git is the place where development from Qualcomm for their SoCs happens. This includes the Snapdragon 8+ Gen1 that´s built into the different SKUs of the Zenfone 9.
The kernel-bases available on QCOMs git, are basically the foundations OEMs use, to build their own kernel additions on top for devices featuring Qualcomm SoCs.
The Qualcomm developers push regular updates to the bases of the different SoCs, a bit similar to how Linux-Upstream works. OEMs usually stop updating the initial base after the phone is released.
This kernel focuses amongst the other features to provide the latest CAF-Updates merged in a regular manner, to provide updates, improvements and enhancements for SoC specific drivers and subsystems! This might take a while, because a lot of device specific testing is done on my end to ensure stability.
The kernel includes a lot of improvements and contributions from other developers as well. Without this kernel would not exist.
A big part of improvements originate from @arter97´s, @kdrag0n´s and @Sultanxda´s work. Many others contributed in some way or another to this kernel.
A big thanks to all of them at this place!
Now lets continue with a list of features in the next paragraph!
Main Features:
- Based on latest kernel sources from Asus for Android 13 and intended to be used on the latest Asus Stock-Firmware
- compiled with Clang 16.0.2 and built with -O3 speed optimizations
- Linux-Stable-Upstream included to 5.10.181
- upstreamed QCOM base for the Snapdragon SD8+ Gen1 (qcoms internal codename "cape")
- Lazy RCU which should result in power-savings while the device is lightly-loaded or idling, more information here
- include important fixes/improvements from kernel/common
- SSG IO scheduler for reduced overhead and less CPU cycles (more lightweight and android optimized)
- implement ramoops for easier logs in case of kernel panics
- implement LRNG (see arter kernel OP for more info )
- Flashing the kernel will keep root!
- Flashable via EXKM, FKM or Kernel Flasher (free open source solution, get it here)
- Anykernel zip is based on the Anykernel3 release from @osm0sis
EAS related features:
- Implement dynamic WALT-Window size depending on current FPS, collecting information about CPU-Load to provide more precise information for the scheduler
- EAS implementation patched up to latest CAF state
- updates from kernel/common
CPU related features:
- Power saving workingqueues enabled by default
- Change various drivers (WLAN, MM, audio, charger, power, thermal, glink etc) to use power efficient workingqueues. This compliments EAS in general
- vdso32 patches as found on Google Pixel devices (brief documentation here) (CAF 5.10 default, keep for documentation)
- improve suspend/resume from audio driver (caf-upstream for audio-kernel)
- enable suspend_skip_sync to save power during suspend/resume
- speed up face unlock
- reduce camera launch time
GPU related features:
- GPU driver updated to latest CAF-State
File System related features:
- f2fs improvements
UI/UX/Usability related features from CleanSlate:
- CleanSlate features made by @tbalden
- Disclaimer: All CleanSlate features can be controlled via the free companion and config app found on CleanSlate thread here on the Zenfone 9 Forums on XDA. Please consider buying the premium versions if you enjoy using the CleanSlate features, to give a little something back to @tbalden.
- add option to force 240hz touch sample rate
Network related features:
- Wireguard Support (Details)
- advanced TCP algorithms enabled
- use bbr as default TCP congestion algorithm (fasted algo according to this excellent research from @kdrag0n found here )
- includes new bbr
- Enable support for TTL spoofing
Memory related features:
- Speculative Page Faults left enabled (1. 2) (CAF 5.4 default, keep for documentation)
Security related features:
- Control-Flow-Integration (CFI) and Link-Time-Optimization (LTO) (CAF 5.4 default, keep for documentation)
- Use ThinLTO which was first used in the Pixel 4 XL Android R-Kernel instead of full LTO (CAF 5.4 default, keep for documentation)
- Shadow Call Stack (SCS) Security-Feature ( 5.4 default, keep for documentation)
- enable init_on_alloc for even more security, more information can be found in the commit message (CAF 5.4 default, keep for documentation)
Other features:
- clean up asus drivers and fix a few warnings in kernel log
- enlarge dmesg size to ease debugging
Flashing Guide, Download and Changelog
Requirements:
- unlocked Bootloader (this will void warranty and kill future OTA updates on all asus phones at the moment)
- USB-Debugging in developer options enabled
- latest adb and fastboot binaries
- working adb and fastboot environment
- magisk root
- a backup of stock boot.img, vendor_boot.img, vendor_dlkm.img and dtbo.img so you can go back to stock conditions (simplest way is TWRP or to extract from stock firmware via payload extractor)
How to flash the Kernel:
1. Download the latest kernel.zip and make sure you have properly updated to the latest matching Asus Stock-Firmware. When the Zenfone 9 receives an OTA update it takes Asus a while to release the source code for the new OS and me a while to build a new kernel. If you don´t want to face any issues, wait until I either release an updated kernel or give green light because there were no kernel changes.
Always make sure to run the firmware the kernel is built for!
If you feel adventurous and try in advance, make sure you have a backup ready!
2. Flash the kernel.zip in your favorite kernel app (I personally use Kernel Flasher by @capntrips as it´s free OSS) or TWRP once available.
3. Reboot and profit.
DOWNLOAD:
Download is located always in this folder:
AFH is currently down. Please check release posts for attached files.
https://www.androidfilehost.com/?w=files&flid=335947
Important: Read after Download
Please take a look at the second post after flashing the kernel!
Changelog:
Android 12
1.0.0 Initial Release
1.1.0 https://forum.xda-developers.com/t/...s-zenfone-9-aka-davinci.4489055/post-87544785
1.1.0 https://forum.xda-developers.com/t/...s-zenfone-9-aka-davinci.4489055/post-87641829
1.1.3 https://forum.xda-developers.com/t/...s-zenfone-9-aka-davinci.4489055/post-87761015
Android 13
2.0.0
[Kernel][09.12.2022][Android 13] Kirisakura 2.0.0_T for Asus Zenfone 9 aka "DaVinci"
Kirisakura-Kernel for the Asus Zenfone 9 Hello everyone, To keep it short: Here is Kirisakura - Kernel for the Asus Zenfone 9 aka DaVinci. The Zenfone line-up internal codenames were traditionally derived from alcoholic drinks. Two years ago...
forum.xda-developers.com
2.0.6 https://forum.xda-developers.com/t/...s-zenfone-9-aka-davinci.4489055/post-87945357
2.0.12 https://forum.xda-developers.com/t/...s-zenfone-9-aka-davinci.4489055/post-88194923
2.0.18 https://forum.xda-developers.com/t/...s-zenfone-9-aka-davinci.4489055/post-88332217
2.0.19 https://forum.xda-developers.com/t/...s-zenfone-9-aka-davinci.4489055/post-88360955
2.0.21 https://forum.xda-developers.com/t/...s-zenfone-9-aka-davinci.4489055/post-88384057
2.0.24 https://forum.xda-developers.com/t/...s-zenfone-9-aka-davinci.4489055/post-88600875
Donations:
Donations are not mandatory but very welcome if you want to support development or just buy me a coffee/tea
If you like my work: http://paypal.me/freak07
Credits:
Asus for the development device, giving me the opportunity to create this project! This device is absolutely stunning!
@osm0sis for all his work, including the ak3 installer!
@capntrips for his relentless work on several projects, including kernel flasher!
@tbalden for being the best HTC, Pixel, OnePlus and now Asus wingman!
@LeeDroid and @mwilky for their awesome roms and work I used on multiple devices!
@Captain_Throwback for all the mentoring and guidance!
@Eliminater74 for bringing me into the game and the Inspiration
@nathanchance for his upstream guidance and assistance
@RenderBroken for helping me out
@flar2 for all his work
@joshuous for all the help he provided to me in the past!
@arter97 for giving me advice
@kdrag0n for his help and advices!
@topjohnwu for magisk!
Source Code: https://github.com/freak07/Kirisakura_DaVinci_AI2202/
For necessary changes to other repos, besides the main kernel tree please check tbaldens github, we did the bringup together:
tbalden - Repositories
engineer. Started github with kernel for HTCDoubleshot, migrating version in 2011. kernel follows kernel, patching intuitive new features into CleanSlate line. - tbalden
github.com

F.A.Q:
Question: How do I return back to stock?
Answer: Extract boot.img, dtbo.img, vendor_boot.img and vendor_dlkm.img from the matching factory image provided on googles download page.
If you want to stay rooted make sure to flash a boot.img that has been patched with magisk.
Flash those images via fastboot/fastbootd and you will be back on stock kernel.
boot.img, dtbo.img and vendor_boot.img are to be flashed in regular fastboot.
vendor_dlkm.img is to be flashed in fastbootd (you can get to this with "fastboot reboot fastboot" when you´re in regular fastboot)
Question: How to report bugs properly?
Answer: Have a look at post #3 in the linked thread. The linked guide is a pretty good starting point.
Before reporting any bug make sure you´re running on a stock configuration. That´s means you´re not using any mods, tweaks in kernel managers or other root tweaks , magisk modules, scripts or other modifications that alter various functions like sound mods, data traffic, sleeping behaviour, scheduler, magical battery tweaks etc.
Try to describe the issue as detailed as possible! Give your exact setup, like rom, magisk version, kernel version.
Is the issue reproducible? Does it happen frequently?
Please make sure to meet the points described above, provide logs as detailed in the link above, otherwise debugging is a lot more time consuming and harder. If these requirements aren´t met and I don´t find time to either reproduce the issue myself or I´m not able to reproduce the issue myself reports might just be ignored. If you can already reproduce the issue and provide logs it greatly limits the amount of time I have to spent until I figure out how to reproduce it.
Question: What about unlocking, rooting, passing safetynet, apps detecting root/modifications and other topics that are vaguely related, but not really subject of this thread?
Answer: If you want to modify your phone via root/magisk in any way you need to unlock the bootloader. Unlocking will result in safetynet not passing. This has nothing to do with the kernel. At the moment of writing this, safetynet not passing can be worked around with a magisk module called "Universal SafetyNet Fix".
Not passing safetynet is unrelated to the kernel since hardware attestation is enforced on nearly all newly released devices now.
If you´re not passing safetynet banking apps might for example be detecting root. There are various tricks to hide root/modifications to the phone from banking apps or others but that´s not really subject of this thread.

taken from pixel 6 soon to be adjusted
AOSP Build Environment and Standalone Kernel builds (monolithic builds)
I´m sure some of you followed the movement towards the Generic Kernel Image (GKI) and Qcoms adaption to it called QGKI.
You can find more information about GKI following this link.
What does that mean for custom kernels and this custom kernel?
The last few years the kernel on android devices was more or less compiled as a monolith. That means the kernel is in the zImage with all (most) drivers compiled inline.
However with GKI this changed. There´s the base kernel image while vendor/device specific drivers are compiled as dynamically loadable kernel modules.
On last years devices like the Pixel 5 (using a 4.19 kernel) and this years devices with SD888 on a 5.4 kernel base, there was the possibility to change the QGKI kernel back into a monolithic kernel image. (building the drivers that are on stock kernel external modules back into the zImage to end with a monolithic kernel)
On the Pixel 6 I wasn´t able to achieve this yet. But during my tries I also wondered if maybe finally the time has come to follow suit, instead of trying to enforce old ways, when there´s a new way going forward.
What does that mean. This means that at this point the kernel is shipped as images that are to be flashed via fastboot. At a later stage I´m sure we can modify anykernel3 to allow flashing zips again, but at this early stage fastboot flashable images will be provided.
Those images can be flashed the same way the device is rooted, therefore I think everybody should be able to flash it easily since the device can´t be rooted any other way.
The kernel was compiled using the aosp kernel build environment. Information about it can be found on the documentation page from google.

this one too

and this one as well

Woohoo! Rock'n'roll! ^__^

Update to 1.1.0
Hey guys and girls,
Here´s the next update. It includes quite a few changes.
It also includes the few kernel changes from the latest firmware 32.2040.2040.23.
The link to the latest firmware can be found following this link.
More changes in the changelog below:
Changelog:
- Linux-Stable upstream bumped to 5.10.146
- merge latest CAF-Upstream
- bump clang to prebuilt 14.0.7 from google
- fixed clang warnings in the process
- other improvements and tweaks please check github
Download:
AFH is currently not working properly. Please check this post for the download. Kernel.zip is attached.
https://www.androidfilehost.com/?w=files&flid=335947
Instructions can be found in the OP!
But look at this post too
Have fun, enjoy the kernel and your phone.
Donations are not mandatory but very welcome.
If you like my work and want to buy me a coffee/green tea to keep development going: http://paypal.me/freak07

Freak07 said:
Update to 1.1.0
Hey guys and girls,
Here´s the next update. It includes quite a few changes.
It also includes the few kernel changes from the latest firmware 32.2040.2040.23.
The link to the latest firmware can be found following this link.
More changes in the changelog below:
Changelog:
- Linux-Stable upstream bumped to 5.10.146
- merge latest CAF-Upstream
- bump clang to prebuilt 14.0.7 from google
- fixed clang warnings in the process
- other improvements and tweaks please check github
Download:
AFH is currently not working properly. Please check this post for the download. Kernel.zip is attached.
https://www.androidfilehost.com/?w=files&flid=335947
Instructions can be found in the OP!
But look at this post too
Have fun, enjoy the kernel and your phone.
Donations are not mandatory but very welcome.
If you like my work and want to buy me a coffee/green tea to keep development going: http://paypal.me/freak07
Click to expand...
Click to collapse
Hello sir,
How do you compile the original Kernel? Is any of vendor_boot or vendor_dlkm images the same as original stock or both are different? What about DTBO? I'm trying to build kernel for ROG Phone 6 but I thought kernal was still a monolithic file, so I flashed one only and failed to boot. ROG Phone 6 includes a script that apparently compiles everything but I don't which one is DTBO, vendor boot and vendor dlkm. Where and how you compile this kernel and where does the output go? For example I see kernel-platform/msm-kernel as the one you modified? That one is the vendor_boot?
Thank you for your help
And by the way, any plan for Kirisakura for ROG Phone 6?

Update to 1.1.1
Hey guys and girls,
Here´s the next update. It includes quite a few changes.
It also includes the few kernel changes from the latest firmware 32.2050.2050.29.
The link to the latest firmware can be found following this link.
More changes in the changelog below:
Changelog:
- included few changes from firmware 32.2050.2050.29
- other improvements and tweaks please check github
Download:
https://www.androidfilehost.com/?w=files&flid=335947
Instructions can be found in the OP!
But look at this post too
Have fun, enjoy the kernel and your phone.
Donations are not mandatory but very welcome.
If you like my work and want to buy me a coffee/green tea to keep development going: http://paypal.me/freak07

Lossani said:
Hello sir,
How do you compile the original Kernel? Is any of vendor_boot or vendor_dlkm images the same as original stock or both are different? What about DTBO? I'm trying to build kernel for ROG Phone 6 but I thought kernal was still a monolithic file, so I flashed one only and failed to boot. ROG Phone 6 includes a script that apparently compiles everything but I don't which one is DTBO, vendor boot and vendor dlkm. Where and how you compile this kernel and where does the output go? For example I see kernel-platform/msm-kernel as the one you modified? That one is the vendor_boot?
Thank you for your help
And by the way, any plan for Kirisakura for ROG Phone 6?
Click to expand...
Click to collapse
boot.img contains the zImage, vendor_boot contains first stage kernel modules, vendor_dlkm contains second stage kernel modules.
Kernel is no longer monolithic by default. I´m using the build environment to get the relevant images for GKI.

Freak07 said:
boot.img contains the zImage, vendor_boot contains first stage kernel modules, vendor_dlkm contains second stage kernel modules.
Kernel is no longer monolithic by default. I´m using the build environment to get the relevant images for GKI.
Click to expand...
Click to collapse
Do you have any kind of tutorial to follow to pack the kernel like you do in AnyKernel zip?
Thank you

Lossani said:
Do you have any kind of tutorial to follow to pack the kernel like you do in AnyKernel zip?
Thank you
Click to expand...
Click to collapse
I´m sorry but a step by step tutorial I don´t have the time to type that all down.
Please check tbaldens github for ZF9. We did the "bringup" of the ZF9 GKI environment together.
That here contains the scripts/methods we basically use both.
GitHub - tbalden/android_kernel_asus_zf9_build_env
Contribute to tbalden/android_kernel_asus_zf9_build_env development by creating an account on GitHub.
github.com
Check all the other zf9 repos as well.
We took basically the asus build script inside the ROG 6 source, readjusted it for the ZF9 source, as the build environment for the ROG 6 was more complete than ZF9.
You either need to remove avb from fstab (that lands in vendor_boot) or disable vbmeta flags for verity/verfication before you can flash any modified vendor_dlkm.
Be aware, disabling the flags triggers an inevitable wipe.
Otherwise check the scripts and work yourself through all the repos.
Unfortunately with GKI kernels you need to adjust the ABI. Now it gets complicated. The gki kernel, the zImage is usually compiled, from the common repo, while the qcom specific drivers are built in the msm repo. Since I don´t care about preserving googles abi for the GKI kernel, I compile the zImage from the updated msm repo, as well as the qcom modules.
That means in my build environment common repo is a symlink of msm repo, while I compile with the same script found in ROG 6 source. I think once you start working through the build environment you´ll understand. Tbalden doesn´t need to do that, as his kernel is close to stock with only a few mild changes, so easier to keep abi in check.
Unfortunately at the moment there´s no easy way to compile it.

Freak07 said:
I´m sorry but a step by step tutorial I don´t have the time to type that all down.
Please check tbaldens github for ZF9. We did the "bringup" of the ZF9 GKI environment together.
That here contains the scripts we basically use both.
GitHub - tbalden/android_kernel_asus_zf9_build_env
Contribute to tbalden/android_kernel_asus_zf9_build_env development by creating an account on GitHub.
github.com
Check all the other zf9 repos as well.
We took basically the asus build script inside the ROG 6 source, readjusted it for the ZF9 source, as the build environment for the ROG 6 was more complete than ZF9.
You either need to remove avb from fstab (that lands in vendor_boot) or disable vbmeta flags for verity/verfication before you can modify vendor_dlkm.
Otherwise check the scripts and work yourself through all the repos.
Unfortunately with GKI kernels you need to adjust the ABI. Now it gets complicated. The gki kernel, the zImage is usually compiled, from the common repo, while the qcom specific drivers are built in the msm repo. Since I don´t care about preserving googles abi for the GKI kernel, I compile the zImage from the updated msm repo, as well as the qcom modules.
That means in my build environment common repo is a symlink of msm repo, while I compile with the same script found in ROG 6 source. I think once you start working through the build environment you´ll understand. Tbalden doesn´t need to do that, as his kernel is close to stock with only a few mild changes, so easier to keep abi in check.
Unfortunately at the moment there´s no easy way to compile it.
Click to expand...
Click to collapse
Thank you for your reply. I succeded to compile using ROG 6 script but I end up with a vendor_dlkm.img in out/target/platform/taro and in gki folder "dist" outputs Image, vendor_boot.img and another vendor_dlkm.img + dtbo.img but doesn't seem to be the correct size, I guess there's another step missing to compile or I don't know which one of the dlkm is the correct one or if I need another step to make the Image file and vendor_boot.img.
Thank you anyways

Lossani said:
Thank you for your reply. I succeded to compile using ROG 6 script but I end up with a vendor_dlkm.img in out/target/platform/taro and in gki folder "dist" outputs Image, vendor_boot.img and another vendor_dlkm.img + dtbo.img but doesn't seem to be the correct size, I guess there's another step missing to compile or I don't know which one of the dlkm is the correct one or if I need another step to make the Image file and vendor_boot.img.
Thank you anyways
Click to expand...
Click to collapse
check the scripts I just sent you. the vendor_dlkm and vendor_boot from the environment don´t work on the device.
The thing is, asus just uses the kernel environment to precompile zImage,all the modules, dtb and dtbo, then transfer those to their complete build environment and those get includes into the images that end up in the firmware. The zImage they´re using on the device is actually not the one compiled in the build environment, but the GKI kernel uploaded by google. That´s why abi is so important. You´re not supposed to flash the ones produced by the build environment.
Check the scripts how repacking both of those works. If everything is right, that will get you to boot.
the zImage you can get from ASUS_AI2202-32.2030.2030.26-kernel-src/kernel_platform/out/msm-waipio-waipio-gki/dist

Update to 1.1.3
Hey guys and girls,
Here´s the next update. Linux-Stable up to 5.10.149, which also fixed the CVEs discussed here and here.
The link to the latest firmware can be found following this link.
More changes in the changelog below:
Changelog:
- included few changes from firmware 32.2050.2050.34
- merge latest kernel/common
- linux-stable to 5.10.149
- includes a few fixed CVEs
- other improvements and tweaks please check github
Download:
Attached to release post, AFH is currently broken
https://www.androidfilehost.com/?w=files&flid=335947
Instructions can be found in the OP!
But look at this post too
Have fun, enjoy the kernel and your phone.
Donations are not mandatory but very welcome.
If you like my work and want to buy me a coffee/green tea to keep development going: http://paypal.me/freak07

Update to 2.0.0
Hey guys and girls,
Here´s the next update with source for A13 stable merged. (not much changes, hence the fast release)
Update to A13 stable before flashing this.
The link to the latest firmware can be found following this link.
More changes in the changelog below:
Changelog:
- included few changes from firmware 33.0804.2060.65
- merge latest kernel/common
- linux-stable to 5.10.157
- other improvements and tweaks please check github
Download:
Attached to release post, AFH is currently broken
https://www.androidfilehost.com/?w=files&flid=335947
Instructions can be found in the OP!
But look at this post too
Have fun, enjoy the kernel and your phone.
Donations are not mandatory but very welcome.
If you like my work and want to buy me a coffee/green tea to keep development going: http://paypal.me/freak07

Update to 2.0.6
Hey guys and girls,
Here´s the next update. That´s a bigger one. I´ll explain a few things below in more detail.
The link to the latest firmware can be found following this link.
Monolithic kernel build
Thanks to @arter97 it´s now possible to build the 5.10 qcom kernel now as a monolithic kernel, not needing to build as a GKI style kernel.
To explain it simple: The problem is QCOM/Google are no longer required to test if drivers are loading in the correct order and or test compilation of a monolithic kernel at all.
The gki style kernel has 100s of drivers build as external kernel modules, instead of directly into the zImage.
Having a monolithic build eases development a bit, but won´t directly make an impact to the user.
If you´re interested check my github, it contains the commits. and be sure to drop @arter97 a few thanks somewhere!
Introduction of Lazy RCU
Usually I´m not stating remarks about a change improving battery life notably. But this is one of the few kernel changes that really does make a noticeable difference.
This kernel has the entire(!) RCU subsystem updated to latest linux 6.0 kernel state. This also allowed for Lazy RCU to be merged into the kernel, which should result in power-savings while the device is lightly-loaded or idling (which is basically the case all the time a smartphone isn´t being interacted with (nothing touching the screen and no other workload such as video editing is done).
If you´re interested in details check the slides, which are also linked in the article mentioned/linked above.
A very simplified explanation: RCU functionality can be called 1000s of times a second, batching RCU calls can save power by not calling as often.
Please keep in mind, those are kernel changes and battery life will not be improved magically by huge amounts, but there´s definitely an improvments.
Sony Scheduler Improvements
Import some scheduler changes around Walt from Sony Xperia 1 IV. This improves jitter by a significant amount.
More changes in the changelog below:
Changelog:
- merge latest kernel/common lts branch
- linux-stable to 5.10.160
- merge latest qcom upstream to main branch
- bump clang to latest prebuilt from google 16.0.2
- lazy rcu backported
- scheduler improvements from Sony Xperia 1 IV
- remove wlan rx wakelock as it´s unnecssary
- other improvements and tweaks please check github
Download:
Attached to release post, AFH is currently broken
https://www.androidfilehost.com/?w=files&flid=335947
Instructions can be found in the OP!
But look at this post too
Have fun, enjoy the kernel and your phone.
Donations are not mandatory but very welcome.
If you like my work and want to buy me a coffee/green tea to keep development going: http://paypal.me/freak07

is there any possibility you could try to make such a kernel for rog 6 ? if you had a tester

luki2411 said:
is there any possibility you could try to make such a kernel for rog 6 ? if you had a tester
Click to expand...
Click to collapse
hi everybody. this is a very voluminous work, but still, if you decide, I am ready to take an active part in testing.

Hi Freak Will you port this kernel to ROG Phone 6 ?

Related

[KERNEL] Jesse's Kernel for Galaxy S8 and S8+ (Exynos)

Jesse's Kernel (I am not good at naming sth.)
for Galaxy S8 and S8+ (Exynos)
(G950F/FD/X/N) and (G955F/FD/X/N)
This kernel is designed to be SIMPLE and STABLE with improved performance and battery life.
Just flash and enjoy your phone. No additional setting required.
This kernel has 3 series,
Early-Testing: Contains latest changes, experimental features. This build will be released to testers only.
Stable: Changes, features in early-testing build will be picked into stable once they are confirmed to be stable.
Semi-Stock: For those who want maximum stability or ROM developers who want to integrate with their ROMs. This build is very similar to stock but it will have some useful changes like SELinux permissive, disabled security features, etc. This build will be released to public in low update frequency(usuallly based on stock kernel changes).
LICENSE:
Kernel sources:
GPL 2.0: https://www.gnu.org/licenses/gpl-2.0.html
Kernel binaries, patches to system, ramdisk modifications, etc.:
Code:
You can use, mirror, modify and/or integrate it/them with your own works, WITHOUT inform me, subject to the following conditions:
1. Credit MUST be given. (a possible form: thanks *** for ***)
2. Warranty is NOT provided. I am not responsible for any possible losses.
3. Authorization may be TERMINATED for selected person without prior notice under certain conditions (subject to my sole discretion).
4. Above conditions must be preserved. (You have the responsibilities to inform your users about these conditions. A possible way is to add "LICENSE: (link to this post)" to "thanks *** for ***")
Features:
STABLE: (Mainline)
Toolchain: Linaro GCC 7
Linux 4.4.79 (updated from 4.4.13)
Always SELinux Permissive (with fake SELinux Enforcing status.)
Kernel Security Features, Root Restrictions are DISABLED
Linux mainline random generator driver backported
Max frequency of big cores set to 2.5GHz
Other optimizations, backports for best performance and power efficiency
BFQ I/O scheduler
Versioning: VERSION x.x
Release Frequency: Regularly
SEMI-STOCK:
Toolchain: Linaro GCC 7
Linux 4.4.79 (updated from 4.4.13)
Always SELinux Permissive (with fake SELinux Enforcing status.)
Kernel Security Features, Root Restrictions are DISABLED
Versioning: RELEASE x
Release Frequency: Rare (only stock kernel updates and bug fixes)
NOTE: As of VERSION 0.3 and SEMI-STOCK RELEASE 6, AQG5 or newer bootloader is required.
Download:
STABLE:
VERSION 0.3: (Source Tag)
https://www.androidfilehost.com/?fid=673368273298975229
SEMI-STOCK:
RELEASE 6: (Source Tag)
https://www.androidfilehost.com/?fid=889764386195919462
NOTE:
1. Existing Bluetooth Pairs, Wi-Fi Passwords will be forgot when you flash this kernel for the first time.
2. You need to flash root package (Magisk or SuperSU) AFTER flash kernel if you want root access.
Show your appreciation:
Click Thanks!, Rate 5-star or/and Donate to me.
Get informed about news and updates:
Join Official Telegram Channel
AND/OR
Follow this project on XDA
XDA:DevDB Information
Jesse's Kernel for Galaxy S8 and S8+, Kernel for the Samsung Galaxy S8+
Contributors
jesec
Source Code: https://github.com/jesec/android_kernel_samsung_universal8895
Kernel Special Features:
Version Information
Status: Stable
Created 2017-05-08
Last Updated 2017-07-30
Changelog:
STABLE:
VERSION 0.3, July 29th:
Merge AQG5 kernel updates from Samsung
Merge Linux 4.4.79
Merge BFQ-v8r12
Backport latest F2FS
Switch to latest Linaro GCC 7 toolchain with processor specific tunes.
Use -Ofast optimization.
VERSION 0.2.2, June 26th:
Merge AQF7 kernel updates from Samsung
Merge Linux 4.4.74
VERSION 0.2.1, May 27th:
Merge AQE5 kernel updates from Samsung
Merge Linux 4.4.69
Update system patches
VERSION 0.2, May 19th:
Updated to Linux 4.4.68
Full F2FS file system support (with latest driver backported from Linux 4.12) is added.
Possible kernel panic (random reboots) addressed.
Possible battery life improvements for CPU frequency boosts.
BFQ is added and set as the default I/O scheduler.
VoLTE & VoWiFi problem fixed. (verified by testers)
NOTE: VoLTE logo may not be an accurate indicator of VoLTE support.
VERSION 0.1, May 11th:
Initial Release.
SEMI-STOCK:
RELEASE 6, July 29th:
Merge AQG5 kernel updates from Samsung
Merge Linux 4.4.79
Backport latest F2FS
Switch to latest Linaro GCC 7 toolchain with processor specific tunes.
Use -Ofast optimization.
RELEASE 5, June 26th:
Merge AQF7 kernel updates from Samsung
Merge Linux 4.4.74
RELEASE 4, May 27th:
Merge AQE5 kernel updates from Samsung
Merge Linux 4.4.69
Update system patches
RELEASE 3, May 19th:
Updated to Linux 4.4.68
Switched to GCC 8.X
Full F2FS file system support (with latest driver backported from Linux 4.12) is added.
Possible kernel panic (random reboots) addressed.
VoLTE & VoWiFi problem fixed. (verified by testers)
NOTE: VoLTE logo may not be an accurate indicator of VoLTE support.
RELEASE 2, May 11th:
Storage and CPU performance problems fixed.
Guides:
HOW-TO FLASH THIS KERNEL:
1. Make sure TWRP is installed. (https://forum.xda-developers.com/showpost.php?p=72004368&postcount=3)
2. Download the flashable zip from download section in OP.
3. Transfer the zip to your phone.
4. Go to "Install" menu of TWRP and flash the zip.
(for devs) HOW-TO PROPERLY INTEGRATE THIS KERNEL TO YOUR ROM:
1. Download the flashable zip from download section in OP.
2. Rename the downloaded zip to "jesse-kernel.zip".
3. Delete original boot.img of your ROM.
4. Place the zip to kernel (create if not exists) folder of your ROM.
Example Structure:
->META-INF
->->com
->->...
->system
->->app
->->priv-app
->->...
->kernel
->->jesse-kernel.zip
->...
5. Delete original kernel flashing lines from installation script (META-INF/com/google/android/updater-script) of your ROM.
tip: usually start with package_extract_file("boot.img" after "ui_print("Extracting boot image...");".
6. Add these lines to the installation script of your ROM:
Code:
ui_print("Installing Jesse's Kernel...");
package_extract_dir("kernel", "/tmp/kernel");
run_program("/sbin/busybox", "unzip", "/tmp/kernel/jesse-kernel.zip", "META-INF/com/google/android/*", "-d", "/tmp/kernel");
set_perm(0, 1000, 0755, "/tmp/kernel/META-INF/com/google/android/update-binary");
run_program("/tmp/kernel/META-INF/com/google/android/update-binary", "3", "1", "/tmp/kernel/jesse-kernel.zip");
ui_print("Jesse's Kernel Installed");
(for devs) Tips about kernel compile: (Note: NO technical support for such things. Inquires will be ignored.)
1. There is a kernel build script in my kernel. (build_kernel.sh)
2. Two variables must be specified before you can run it.
export $KERNEL_TOOLCHAIN=/path/to/your-toolchain/bin/toolchain-prefix-
export $KERNEL_DTBTOOL=/path/to/dtbtool/dtbhtoolExynos
3. If you are building for Galaxy S8 (dreamlte), run it with "bash build_kernel.sh dreamlte".
If you are building for Galaxy S8+ (dream2lte), run it with "bash build_kernel.sh dream2lte".
4. Default output dir is "../kernel_out". "dt.img" and "Image" will be generated.
That's what I'm talking about! Thank you!!
Thanks @jesec for this and twrp. Without u development would be so far behind
sent from the R.I.C.E powered V8+
Great work mate :fingers-crossed:
State-wide provider blackout the very second i flashed. No worries!
Thanks for your hard work. Great job as always.
Sent from my SM-G955F using Tapatalk
what is the difference between stock and semi stock?
GreyFox777 said:
what is the difference between stock and semi stock?
Click to expand...
Click to collapse
Got the same question.. I've installed it, but it doesn't seem to have any advanced governors, etc on board.
But still very nice to have the first kernel on!!!!!
Jesec, you're just great
Btw: does the name Jesse's kernel was chosen on purpose or just a mistake?
GreyFox777 said:
what is the difference between stock and semi stock?
Click to expand...
Click to collapse
This kernel look like a basic kernel update from 4.4.13 to 4.4.66
@jesec
Awesome, thanks a lot bro!
Thank you for the first custom kernel
Can we expect a permissive kernel for this device soon?
tiho5 said:
Thank you for the first custom kernel
Can we expect a permissive kernel for this device soon?
Click to expand...
Click to collapse
Per github commit, the big news here is that this kernel is permissive!
@jessec, you are totaly awesome:good:
Thank you for being here!
Update; appear kernel selinux is still enforcing
It is SELinux permissive. That enforcing is fake actually. (just let userspace think status change is successful)
Changelog: (May. 9th)
I fixed a bug of script. Now new build (May. 9th) should work fine on non-plus variants.
finally i can use ARISE completely. thx a lot
Great one. Many thanks. I will try and report.
Sent from my SM-G955F using Tapatalk
Feels good to see development here, used to love ur work on GS7.
One question, where can I get the Magisk Flashable? I got it when flashed the ROM but I cant flash the ROM over the kernel or I will lose the kernel
jesec said:
It is SELinux permissive. That enforcing is fake actually. (just let userspace think status change is successful)
Changelog: (May. 9th)
I fixed a bug of script. Now new build (May. 9th) should work fine on non-plus variants.
Click to expand...
Click to collapse
Great.
Thanks. That's what I've been waiting for.
metuskale said:
Feels good to see development here, used to love ur work on GS7.
One question, where can I get the Magisk Flashable? I got it when flashed the ROM but I cant flash the ROM over the kernel or I will lose the kernel
Click to expand...
Click to collapse
here it is:

[KERNEL][DEV][3.4+] U8500 Linux kernel upgrading project

Hello!
This is a development thread for the project of upgrading of the Linux kernel for the U8500 platform.
Builds provided here (at the moment of writing this message) are not considered to be used as a daily driver, by any means, - these are rather a dev preview versions.
For now, there are a several LK builds (the highest currently supported kernel version is 3.10).
Because builds here are really not stable, I'll just leave a disclaimer here.
Code:
#include <std/disclaimer.h>
/*
* I am not responsible for bricked devices, dead SD cards, thermonuclear
* war, or the current economic crisis caused by you following these
* directions. YOU are choosing to make these modificiations, and
* if you point your finger at me for messing up your device, I will
* laugh at you.
*/
Working features
RIL
Camera (front & rear) - only works in <3.8
Video (playback & recording)
Audio (playback & recording)
Wifi
Bluetooth (broken in >=3.8, needs a workaround to manually startup)
USB, ADB
Tethering (not tested)
GPS (not tested)
Sensors
Known bugs
IRQs are mishandled by some device drivers (abb_btemp, abb_fg)
proximity sensor might not work (not tested, cause it's broken on my device)
deep sleep might not work at a times
MMC driver works unreliably in >=3.8 (contiguous usage might lead in a data corruption)
networking is not fully-functional (no mobile data)*
camera is broken in 3.8
*some other features of the android kernel might not present - it's because these kernels lacks android-specific patches.
Sources
LK 3.5
LK 3.6
LK 3.7
LK 3.8
LK 3.9
LK 3.10
Downloads
http://xda.mister-freeze.eu/XDA-files/ChronoMonochrome/misc/upgrading
Installation
install chrono kernel r5.2 or higher (this is needed to pick up the necessary scripts, incl. bootscripts, etc)
reboot to recovery
install build linked in "Downloads" section
Credits
Linux kernel development community
Google
ST-Ericcson
Samsung
Team Canjica
XDA:DevDB Information
U8500 Linux kernel upgrading project, Kernel for the Samsung Galaxy Ace II
Contributors
ChronoMonochrome
Kernel Special Features:
Version Information
Status: Alpha
Created 2017-05-09
Last Updated 2017-05-10
Reserved
Porting
The porting a higher kernel version tehnique I'll describe here is not intended to be a guide for dummies. I'll assume you've already built a kernel for your device, familiar with git versioning control usage and with some porting / coding tehniques.
Firstly, you need a cleaned source for your device. By "cleaned" I mean, there are no Linux incremental patches, android changes applied, manufacture-specific patches are avoided when possible and so on - you need sources as closest to a "pure" Linux kernel as possible. Otherwise you'll have later need to deal with conflicts resolution, you'll most likely be unable to resolve and the kernel won't boot.
So, without a further forewords, the tehnique is below:
1) As was previously mentioned, a clean kernel source is required, I'll assume we are starting from LK-3.4 ( https://github.com/ChronoMonochrome/Chrono_Kernel-1/commits/ea228ee0f5e9935841aff25c62fa163cd78dc01d ) and porting a higher kernel versions. A kernel base needs to be tested for any bugs just to distinguish, which bugs were intruduced during porting from those ones that already present in a kernel base.
2) The following steps will mostly use git bisect and git merge commands in order to merge all the changes from a higher kernel versions and help to find / resolve the bugs that were introduced. I suggest copying a git kernel repo that you use for building to a somewhere else, so you can use it , e.g. for grepping a different versions source, bisecting the revisions and so on, so don't need to bother messing up in your main repo that you use for build.
3) Firstly, lets just try to merge a higher kernel version, e.g. LK 3.5 by issuing a command git merge lk-3.5. You'll likely have a lot of merge conflicts, most of which you can resolve with resetting the paths to a some revision (either a kernel base - lk 3.4, or the version you do port, or just another suitable conflict resolution). So I suggest to write those paths to a text file, like so:
Code:
arch/arm/boot
arch/arm/mach-ux500
arch/arm/plat-nomadik
drivers/mmc
include/linux/mmc
drivers/usb
include/linux/usb
drivers/mfd
include/linux/mfd
...
Write all the paths you intend to reset to the kernel base, you most likely need to re-use them later. To actually perform a resetting source, you can issue
Code:
for path in $(cat file_with_a_paths.txt | xargs)
do
git checkout COMMIT $path
done
Be sure not to put to this file anything not the device-specific! Resetting to the kernel base should be avoided when possible (never ever try resetting archictecture-specific paths, e.g. arch/arm/kernel, arch/arm/mm and so on - unless you really know that kernel will boot thereafter, instead, you have to manually resolve such conflicts). Resolve any other conflicts by resetting paths to the porting source (e.g. LK 3.5).
Note. While resetting with a paths is probably not the most accurate tehnique, but people don't live that long to use more accurate approach, e.g. performing git cherry-pick for every upstream commit and then manually resolving all the conflicts, you'll just sooner or later get bothered and will abandon it.
4) When you're done with the previous steps you can try building kernel. You'll likely have a build errors - because some part of a source got not updated (e.g. the device-specific drivers), you need manually implement the necessary by a higher kernel version changes. Firstly check if an upstream kernel contains the necessary fixes (example: https://github.com/ChronoMonochrome/Chrono_Kernel-1/commit/9fae8c449b710f502662da1cbcf26ece5a098af9 , https://github.com/ChronoMonochrome/Chrono_Kernel-1/commit/fe027c25d6db0d100937deb5248e249ec5b24ee7 ). If the driver you are porting doesn't exist in the upstream, you can also try to find a similar change and mimic it: https://github.com/ChronoMonochrome/Chrono_Kernel-1/commit/5f2e7afbf2ac3284dc62b3d96a0627c7f99ed4e9 ( ported similarly to https://github.com/ChronoMonochrome/Chrono_Kernel-1/commit/526c597 ). In the worst case scenario you will need to examine the upstream changes and apply the changes so that the drivers complies to the upstream changes: https://github.com/ChronoMonochrome/Chrono_Kernel-1/commit/ea6432d167 .
5) If everything is done properly and you're lucky enough, the compiled kernel might already bootup. If not, you'll need to find a culprint that doesn't let the device to boot up. Switch to a copy of your kernel sources, reset the source to the base kernel version (e.g. LK 3.4), issue git bisect good, then issue git bisect bad lk-3.5, git will reset to a somewhere in a middle between of LK 3.4 and LK 3.5.
6) Save your changes in the kernel repo, by assigning a some branch to it, switch to the source base, merge all the fixes you've already introduced, then merge the revision you have got in the previous step by bisecting the tree. Repeat these steps until you'll find a first bad commit.
7) If you are already on this step, the most trickiest part starts here - testing (hopefully) working kernel for bugs (if any). While logs can be useful sometimes (so you can google the failing messages and find something useful), there are also many bugs you can find only performing git bisect tehnique decribed above.
The decribed algorithm only possible thanks to having a clean kernel source. The usage of this guide is not limited only to the kernel porting, it can be used on other projects as well, this is just what I've come across to, when I've ever started porting Linux kernel versions higher than LK3.4.
Reserved
I wonder if any of this expertise couldn't look pretty cool here too.
Wooooowwwewe
Oooh
Look whose good boys have been trying to win the STE mastermind prize as of lately
https://github.com/novathor-mainline/linux
https://git.kernel.org/pub/scm/linu...inux-nomadik.git/log/?h=ux500-skomer-v5.5-rc1
mirhl said:
Oooh
Look whose good boys have been trying to win the STE mastermind prize as of lately
https://github.com/novathor-mainline/linux
https://git.kernel.org/pub/scm/linu...inux-nomadik.git/log/?h=ux500-skomer-v5.5-rc1
Click to expand...
Click to collapse
Seriously!
mirhl said:
Oooh
Look whose good boys have been trying to win the STE mastermind prize as of lately
https://github.com/novathor-mainline/linux
https://git.kernel.org/pub/scm/linu...inux-nomadik.git/log/?h=ux500-skomer-v5.5-rc1
Click to expand...
Click to collapse
Wow, that's incredible
Exynos4412 already got some mainline support, it would be very nice to have this one supported too.
Aaaaand it's done, kinda.
ST-Ericsson NovaThor U8500 - postmarketOS
wiki.postmarketos.org
device/testing/linux-postmarketos-stericsson · master · postmarketOS / pmaports · GitLab
postmarketOS package build recipes
gitlab.com

[GUIDE]Working with Android Kernel from Scratch

Introduction
I am writing this guide as I was unable to find a well-documented thread over XDA (there are just a lot of them). In case there is anything that concerns this guide, feel free to ask in this thread. I expect you to know the basics of Linux, GIT, Android. Please look over some guides in the forum in case you are not familiar with them. In case you want to contribute to this, feel free to do so. I welcome everyone's contribution to be it fixing my derp, pointing a mistake or adding a new section.
Links to some nice documentations:
Git Documentation
Linux Kernel Newbies
How to take logs in Android
How to get an Android kernel up to date with linux-stable
Checking Current CAF Tag of the Kernel
We will be using best_kernel for this purpose, whose aim is to compare your current kernel source code with different CAF tags and select the best possible match using git diff.
Clone/Download your kernel repo and commit your changes(if not already committed) as best_kernel depends upon git diff to compare changes.
Depending upon your kernel version, add required CAF kernel repo as remote and fetch it. best_kernel will use this fetched data to compare changes.
After fetch is done, run best_kernel. It should run automatically if you have placed dotfiles in the $BIN directory and have the necessary dependencies installed.
best_kernel will compare changes and will provide results based on that. However, depending on the number of tags, it will take time. A lot of time, so go and grab a cup of coffee till then.
A Dummy Example:
Downloading stock kernel source code from OEM’s website
Code:
wget http://nokiaphones-opensource.azureedge.net/download/phones/Nokia6.1_V2.22J.tar.bz2 && tar xvjf Nokia6.1_V2.22J.tar.bz2 && cd kernel
Adding and committing all files due to lack of a .git dir.
Code:
git init && git add --all && git commit -m "Initial Commit"
As the kernel source code version is 4.4, I will add 4.4 remotes from CAF and fetch it.
Code:
git remote add caf https://source.codeaurora.org/quic/la/kernel/msm-4.4/ && git fetch caf
After fetch, I will check for the current CAF tag using best_kernel. As my device platform is sdm660 and CAF has been releasing sdm660 tags as sdm660.0, I will be using it as an argument in best_kernel. This will ensure that best_kernel doesn’t waste time checking CAF Tags of other platforms and will speed up the process considerably.
Code:
best_kernel "*sdm660.0"
RESULT will be something like this:
Code:
Best match TAG: LA.UM.6.2.r1-06900-sdm660.0 Lines changed: 177924
What is CAF/Code Aurora | CodeAurora Android Releases Page | CAF Kernel Sources​
Creating/Importing GIT History for Kernel Source
A lot of OEMs release kernel sources in a compressed format excluding the .git dir which results in no git history. Creating or it's better to say to import one is simple and easy.
Download and check the current CAF tag of your Android kernel source.
Note: If your chipset is not Qualcomm, you should visit Linux Kernel Source or AOSP's Kernel Common and use that as a base while checking out to the specific version of your kernel source you are going to copy-paste. Qualcomm devices can also use that as a ref but I will recommend them to use CAF source.
Based on that CAF tag, download the respective kernel repository from CAF and checkout for that specific tag.
Copy and paste your downloaded kernel source (with no history) over the CAF one (which has the history of that CAF tag).
Commit the changes.
You have accomplished creating/importing history.
A Dummy Example:
My current CAF tag is LA.UM.6.2.r1-06900-sdm660.0.
Therefore, cloning kernel source from CAF and checking out for this tag while creating a new branch named rebase.
Code:
git clone https://source.codeaurora.org/quic/la/kernel/msm-4.4/
cd msm-4.4/
git checkout tags/LA.UM.6.2.r1-06900-sdm660.0 -b rebase
Now, I will copy-paste the kernel source that I downloaded from OEM's website over the CAF one. Assuming the downloaded kernel is in ~/Downloads/kernel and CAF kernel source is in ~/msm-4.4 directories.
Code:
#Renaming the dir so, that it will get merged while copying due to similar names
mv kernel/ msm-4.4/
cp -avr msm-4.4/ ~/msm-4.4
cd ~/msm-4.4
git status
git commit -m "Import Nokia Kernel Source"
Keep in mind that a .gitignore is generated which can and will ignore files during commit which were not getting ignored earlier due to its absence. In case during compilation you encounter any error stating about missing file, add it forcefully and commit again.
Remember, its always good to split that one big commit into small parts. It's helpful when you start rebasing your kernel usually when new CAF Tag for new android versions come out. Solving a few conflicts ina lot of commit is much better than solving a load of them in one. It also gives you a chance to easily diff on websites like GitHub so that you can figure what's a particular line is doing.
Doing that is also easy. Just reset head for a particular folder like driver/touchscreen and commit them separately. Check git rebase documentation which will help you with this.
Upstreaming your Kernel
Merging upstream versions is a really good thing. It brings in security patches, stability, new features and much more. The usual and best way is to visit Linux Kernel Source and check if there are upstream updates available. If yes, start merging them in your kernel source one by one.
Note: If your chipset is not Qualcomm, you should visit Linux Kernel Source or AOSP's Kernel Common and use that as a base. Qualcomm devices can also use that as a ref but I will recommend them to use CAF source.
A Dummy Example:
Assuming my current kernel version is v4.4.205, I will fetch v4.4.206 from Linux Kernel Source and merge that. I can also fetch and merge different branches from CAF Source which are usually upstreamed with Linux-stable (for example, aosp/upstream-linux-4.4.y branch)
Code:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git v4.4.206
git merge FETCH_HEAD
Fix conflicts if you get some. What to keep and what not is a question that depends upon the device to device. Usually, you should compare local changes and upstream and try to figure out what could be the best way to fix it. I will advise to check the history of that file in upstream and see which commit caused that conflict and why. You can also check similar merges by other same kernel versions to see if they had the same conflict and how they fixed it.
I will also advise merging AOSP's kernel/common and new CAF upstream tags (Only QCOM devices should merge new CAF tags) regularly when available. The reason is pretty simple. There are commits that get merged in AOSP like which improves performance or other stuff which doesn't get merged in Linux Kernel Source. This way you can get the benefit from all sources. This, however, is not pretty easy and might result in a huge number of conflicts considering if OEM has modified the source a lot from upstream.
CAF also hosts f2fs and other file system changes on their servers. Merge it if you want and use it.
Compiling Standalone Kernel
Compiling a kernel standalone requires you to have a compatible toolchain like GCC or Clang. The best way to figure out which one suits your need is testing and debugging. The standard AOSP GCC toolchains are recommended for devices with old kernels, to begin with, while newer ones can use clang with backports or upstream merges. In case you want to compile with clang, checking out android-kernel-clang is a good way, to begin with.
Compiling standalone kernels can give a lot of missing headers errors/warnings. This is due to not compiling it in a ROM environment. This can be easily fixed either by correcting paths of those header files being included or creating an out dir manually and using it as output. You can also use this commit to do that automatically.
Clone your kernel source and desired toolchain(s). Export arch and cross compiler arguments. Choose the desired defconfig to make and compile.
A Dummy Example:
I will clone the kernel source and toolchain in the same dir and export the following arguments in kernel source root dir.
Code:
export ARCH=arm64
export CROSS_COMPILE=/media/hdd/aayush/kernel/aarch64-elf-gcc/bin/aarch64-elf-
make nokia_defconfig
make -j$(nproc --all)
Kernel conflicts might occur. You can search on GitHub to check if someone has fixed that already, otherwise fix the issues yourself. Comparing code with upstream repositories is also a way to figure out the differences. Choosing defconfig can be a bit tricky if you are doing bringups. I recommend pulling the current defconfig from your device itself. Its usually by the name of config.gz in /proc/ of your device.
Links to some cross compiler
GNU Toolchain by ARM
DragonTC
GNU and Linaro
Working with TWRP from Scratch
This post is supposed to help you with building TWRP from scratch for the first time if you are a newbie. There are some good resources already available for that over the web, specially XDA. I am linking some good ones below that you can read for more info on it.
How to compile TWRP Touch Recovery
The aim of a device tree is to contain the device-specific code for the build you are doing. In this case, as we are building TWRP which is a custom recovery, only flags relating to building TWRP and a normal recovery are enough to build it. Adding system specific codes like partition sizes for the system, vendor, boot and other doesn't contribute anything. An example tree can be begonia's tree hosted on TeamWin's org maintained by me.
Now coming to the device you want to build TWRP for, you will the following :
- A working kernel
- Device-specific binaries/libraries etc required for features like encryption which heavily differs on OEM implementation
AB devices need an extra commit in their kernel to make 'fastboot boot' command work: init: initramfs: disable do_skip_initramfs . Additionally if your device ships a separate DTBO image you will also need the following flag and the DTBO image: begonia: Build DTBO image into recovery
Newer devices are nowadays coming with 'fastboot boot' command disabled. Nokia 8.1 is an example of it. To make it work again, you might need to tweak bootloader which can prove to be risky.
Now coming to creating a device tree for TWRP. The very first step is to look out if someone else has booted TWRP on a similar SOC, OEM or same device. It can be used as a reference to fix similar/OEM related bugs and hacks quickly. In case, one doesn't exist, just pick a latest one from Teamwin's Github org for the android version you are compiling for.
Reserved (2)
Wew many thanks,
Thanks
Have just started exploring xda chef central.
I cam across this guide, really ahlepful Hope you complete it soon.
Updated the thread. Fixed formatting, links and added a new section.
How To Unofficially Unlock Bootloader For LG G8
We all know LG G8 is a android device. It's open source. But I recently bought a LG G8 only but it's locked to sprint sim . No any sim work. I can't unlock bootloader. I can't root. I can't flag firmware or install custom recovery. Anyone know here , how to totally remove firmware and but another firmware ? Why we can't build a method to do that?
TheImpulson said:
Updated the thread. Fixed formatting, links and added a new section.
Click to expand...
Click to collapse
Can you create a guide for, "How to Rebase an Android Kernel". Like from Android 9 to Android 10?
thanks for this guide bro
While using best caf kernel, Prefix of the caf tag should start with a -
For example, "*- sdm660.0"
@theimpulson
Hey there,
Am getting this error del.dog/megupebinu.txt
While trying execute best_kernel script
This is helpful, thanks mate
@theimpulson I had a question: (Before reading this guide) I had already downloaded stock Samsung sources and git init push the thing to my Github. So will anything bad happen if I did it this way or do I have to rebase it with CAF?
Also what are the benefits of these so-called CAF based kernels everywhere? Improved performance? Cuz I really wanted to compile my own kernel specifically for performance with WSL-2 (shameless plug)
Thanks in advance and sorry if the @ bothered you,
Ishaq
NullCode said:
@theimpulson I had a question: (Before reading this guide) I had already downloaded stock Samsung sources and git init push the thing to my Github. So will anything bad happen if I did it this way or do I have to rebase it with CAF?
Also what are the benefits of these so-called CAF based kernels everywhere? Improved performance? Cuz I really wanted to compile my own kernel specifically for performance with WSL-2 (shameless plug)
Thanks in advance and sorry if the @ bothered you,
Ishaq
Click to expand...
Click to collapse
The existing sources are fine, no issues if you are fine without any git history.
SOC specific optimizations, bug fixes etc. Nothing more. So, yeah, if you want SOC specific optimizations, performance improvements, you will want to merge latest CAF tags for your kernel.
theimpulson said:
The existing sources are fine, no issues if you are fine without any git history.
SOC specific optimizations, bug fixes etc. Nothing more. So, yeah, if you want SOC specific optimizations, performance improvements, you will want to merge latest CAF tags for your kernel.
Click to expand...
Click to collapse
thanks a lot for the reply! Another thing, because of your suggestion I tried to Import the git history (and i succeeded). Then I wanted to upload these sources to my own Github, which I can't figure out how to do. It only gives Github repo for the place where it came from (msm-3.18). Help me please
Edit: The guides which I found for merging CAF tags say that my base also has to be CAF (which it isn't) and this guide here basically does not work

Development [Kernel][12.04.2023][Android 13] Kirisakura 3.0.1 for Sony Xperia 1 III aka "Sagami"

Kirisakura-Kernel for the Sony Xperia 1 III
Hello everyone,
To keep it short: Here is Kirisakura - Kernel for the Sony Xperia 1 III aka Sagami. Sagami is the internal codename for this years development platform of Sony Mark III devices. Please note this kernel is made to run only on Xperia 1 III.
I would appreciate if everybody that flashes the kernel, reads at least once through this opening post and the following ones.
Kirisakura - Kernel is designed to bring a handful of beneficial features to the device, while ensuring excellent performance and smoothness to get you safely through the day!
If you expect a custom kernel to magically improve your devices battery life manifold and this is your only priority then this might not be the right place for you.
However the kernel is built to keep battery life close to the same as you would experience the on stock kernel while being tuned to perform better in various UI related benchmarks. The same benches are used by google to verify and ensure UI smoothness on the Pixel devices.
There´s also a cpu-battery saver mode that cuts back the CPU max- freqs, but without the disadvantages like delayed notifications from built into the system user-space power-saving modes.
If that got your curious, I welcome you to continue reading if you´re still interested!
The kernel includes a lot of improvements and contributions from other developers as well. Without this kernel would not exist.
A big part of improvements originate from @arter97´s, @kdrag0n´s and @Sultanxda´s work. Many others contributed in some way or another to this kernel.
A big thanks to all of them at this place!
Now lets continue with a list of features in the next paragraph!
Main Features:
- Based on latest kernel sources from Sony for Android 12 and intended to be used on the latest Stock-Firmware
- compiled with Clang 14.0.7 and built with -O3 speed optimizations
- Linux-Stable-Upstream included to 5.4.202
- upstreamed CAF base for the Snapdragon 888 (qcoms internal codename "lahaina")
- CPU-Battery saver to be able to restrict max cpufreqs on the fly, without enabling powersaving modes that might cause missed notifications (more info here)
- include important fixes/improvements from kernel/common
- reduce power consumption during deep sleep
- remove logging while device is suspended
- add SSG-IO scheduler from samsung (less overhead, better tuned towards android)
- disable various debugging mechanisms for drivers which are not needed on a perf build (e.g. binder)
- disable selinux auditing (we don´t have to adress selinux denials running a stock rom)
- disable unnecessary CPU errata for our specific SoC
- implement LRNG (thanks @arter97, see arter kernel OP for more info )
- Flashing the kernel will keep root!
- Flashable via EXKM, FKM or TWRP (if available) on a rooted system!
EAS related features:
- Implement dynamic WALT-Window size depending on current FPS, collecting information about CPU-Load to provide more precise information for the scheduler
- EAS implementation patched up to latest CAF state
- updates from kernel/common
- scheduler updates from sd888/ 5.4 kernel
CPU related features:
- Power saving workingqueues enabled by default (toggleable in EXKM)
- Change various drivers (WLAN, MM, audio, charger, power, thermal, glink etc) to use power efficient workingqueues. This compliments EAS in general
- improvements to cpufreq/times/stats
- vdso32 patches as found on Google Pixel devices (brief documentation here) (CAF 5.4 default, keep for documentation)
- remove event debug logging
- disable broken irq detection, disable debugmon
- improve suspend/resume from audio driver (caf-upstream for audio-kernel)
- cpuidle: wake only cpus for which qos has changed (this allows cores to keep idle states better)
- disable debugging during sleep states as per qcom recommendation
- remove RTB logging to reduce overhead
- disable trace_printk as it shouldn´t be used on production/perf kernel builds
- enable suspend_skip_sync to save power during suspend/resume
- disable edac and coresight (following google on the pixel kernels)
- disable jtagv8 debugging as recommended by qcom for perf builds to avoid potential power, performance and memory penalty
- disable s2idle in favor of deep idle state -> improves deep sleep drain (google initially used 2idle for improved suspend/resume latency on pixel 3 and pixel 4, but disabled it on pixel 5. qcom followed suit for sd 888, but apparently didn´t see google reverting it on pixel 5. Other OEMs such as Xiaomi or OnePlus already disabled s2idle on their SD888 devices in favor of deep- read more about s2idle vs deep here)
GPU related features:
- GPU driver updated to latest CAF-State
- gpu/kgsl improvements from pixel 4/pixel 5 kernel
- add low_prio_worker thread for gpu driver (Improves performance when tearing down processes (eg, via LMK) and not blocking currently running UI from submitting work to the GPU
File System related features:
- upstream BFQ-MQ to latest state in linux-mainline and default to 128KB readahead
- improve memory allocations in kernfs
- ufs improvements from pixel 4/ pixel 5 kernel
- improve GC as to not interfere while user interaction is happening and prevent possible jitter or latency spikes
Network related features:
- Wireguard Support (Details)
- advanced TCP algorithms enabled
- use bbr as default TCP congestion algorithm (fasted algo according to this excellent research from @kdrag0n found here )
- improved networking drivers from caf-upstream (especially wifi)
- remove unnecessary wakelock from WLAN driver to reduce thousands of very short wakeups during a 7 hour deep sleep period
- improved bluetooth performance (¹, ²)
- Enable support for TTL spoofing
Memory related features:
- Speculative Page Faults left enabled (1. 2) (CAF 5.4 default, keep for documentation)
- Fix various memory leaks in different subsystems
- improved mm with patches from mainline
- patches from kernel/common
- improve memory allocations in various subsystems, video encode/decode, kernfs, cgroup
- Backport to enable CONFIG_HAVE_MOVE_PMD (see here) , thanks @arter97
- Backport to enable CONFIG_HAVE_MOVE_PUD (commit here) , thanks @arter97
- free more RAM by removing unused reserved memory regions
- mm: Micro-optimize PID map reads for arm64 (improves game performance, especially unity based games such as genshin impact)
- MGLRU added (info here and here
Security related features:
- Control-Flow-Integration (CFI) and Link-Time-Optimization (LTO) (CAF 5.4 default, keep for documentation)
- Use ThinLTO which was first used in the Pixel 4 XL Android R-Kernel instead of full LTO (CAF 5.4 default, keep for documentation)
- Shadow Call Stack (SCS) Security-Feature ( 5.4 default, keep for documentation)
- enable init_on_alloc for even more security, more information can be found in the commit message (CAF 5.4 default, keep for documentation)
Misc Features:
Wakelock Blocker:
- advanced wakelock blocker with the ability to block any wakelocks (dangerous, use with caution)
- please read [URL="https://arstechnica.com/gadgets/2018/08/p-is-for-power-how-google-tests-tracks-and-improves-android-battery-life/"]this for further info
- blocking a kernel wakelock should only be done in case of firmware incompatabilities (WiFi network at work (can´t be changed) causes deep sleep to not work on the phone.) That´s the only use case I see for this feature. The kernel does not features this to improve battery life!
Other features:
- clean up asus drivers and fix a few warnings in kernel log
- disable logging and debugging to make the kernel more lightweight in various places (includes binder, mm, vma, gpu, ipa etc)
- fix several coding issues detected by newer Clang-Toolchains
- enlarge dmesg size to ease debugging
Flashing Guide, Download and Changelog
Requirements:
- unlocked Bootloader
- USB-Debugging in developer options enabled
- latest adb and fastboot binaries
- working adb and fastboot environment
- magisk root
- a backup of stock boot.img or your magisk patched boot.img in case you want to go back to stock.
How to flash the Kernel:
1. Download the latest kernel.zip and make sure you have properly updated to the latest matching Firmware (check the feature list for the current firmware the source is based on). When there´s an OTA update for the Sony Xperia 1 III it takes Sony a while to release the source code for the new OS and me a while to build a new kernel. If you don´t want to face any issues, wait until I either release an updated kernel or give green light because there were no kernel changes.
If you want to be sure there are no issues, always make sure to run the firmware the kernel is built for!
If you feel adventurous and try in advance, make sure you have a backup ready!
2. Flash the kernel.zip via latest TWRP (if available), EXKM or FKM app and do a full reboot.
3. Reboot and profit.
DOWNLOAD:
Download is located always in this folder:
https://www.androidfilehost.com/?w=files&flid=331114
Or attached to the release post starting with Android 13 as AFH is currently not working correctly
Important: Read after Download
Please take a look at the second post after flashing the kernel!
Changelog:
Android 11
1.0.0 Initial Release
1.0.1 https://forum.xda-developers.com/t/...xperia-1-iii-aka-sagami.4377449/post-86140929
Android 12
2.0.0
[Kernel][02.07.2022][Android 12] Kirisakura 2.0.0 for Sony Xperia 1 III aka "Sagami"
Kirisakura-Kernel for the Sony Xperia 1 III Hello everyone, To keep it short: Here is Kirisakura - Kernel for the Sony Xperia 1 III aka Sagami. Sagami is the internal codename for this years development platform of Sony Mark III devices. Please...
forum.xda-developers.com
Android 13
3.0.0 https://forum.xda-developers.com/t/...xperia-1-iii-aka-sagami.4377449/post-88048199
3.0.1 https://forum.xda-developers.com/t/...xperia-1-iii-aka-sagami.4377449/post-88404445
Donations:
Donations are not mandatory but very welcome if you want to support development or just buy me a coffee/tea
If you like my work: http://paypal.me/freak07
Credits:
Sony for the development device, giving me the opportunity to create this project!
@osm0sis for all his work, including the ak3 installer!
@tbalden for being the best HTC, Pixel, OnePlus and now Asus wingman!
@LeeDroid and @mwilky for their awesome roms and work I used on multiple devices!
@Captain_Throwback for all the mentoring and guidance!
@Eliminater74 for bringing me into the game and the Inspiration
@nathanchance for his upstream guidance and assistance
@RenderBroken for helping me out
@flar2 for all his work
@joshuous for all the help he provided to me in the past!
@arter97 for giving me advice
@kdrag0n for his help and advices!
@topjohnwu for magisk!
Source Code: https://github.com/freak07/Kirisakura_Sagami
F.A.Q:
Question: Is root preserved when flashing this kernel?
Answer: Yes, the AnyKernel.zip will detect root and keep it.
Question: Safetynet does not pass on my phone since I unlocked the phone, why is this so?
Answer: Google introduced hardware backed attestation recently. Unfortunately the old kernel tricks to still get safetynet passing won´t work. Instead you will have to rely on some magisk modules. Short guide in post #4 below.
Question: How do I return back to stock or another kernel.
Answer: Extract boot.img from the matching firmware you are on (you can do so by using this tool or similar ones found on XDA and when googling around) and flash them via fastboot. If you want to keep root flash back the magisk_patched_boot.img. Or dirty flash your rom and re-root.
Question: Why is having Magisk installed mandatory for this kernel?
Answer: The kernel uses a ramdisk overlay to apply some settings after boot. If you are not rooted these settings will not get applied and you miss some of the optimizations.
Question: How to report bugs properly?
Answer: Have a look at post #3 in the linked thread. The linked guide is a pretty good starting point.
Before reporting any bug make sure you´re running on a stock configuration. That´s means you´re not using any mods, tweaks in kernel managers or other root tweaks , magisk modules, scripts or other modifications that alter various functions like sound mods, data traffic, sleeping behaviour, scheduler, magical battery tweaks etc.
Try to describe the issue as detailed as possible! Give your exact setup, like rom, magisk version, kernel version.
Is the issue reproducible? Does it happen frequently?
Please make sure to meet the points described above, provide logs as detailed in the link above, otherwise debugging is a lot more time consuming and harder. (kernel flashing apps usually support exporting logs of flashes too) If these requirements aren´t met and I don´t find time to either reproduce the issue myself or I´m not able to reproduce the issue myself, reports might just be ignored. If you can already reproduce the issue and provide logs it greatly limits the amount of time I have to spent until I figure out how to reproduce it.
If the device force reboots/randomly reboots (that means you see the bootloader unlocked screen!) provide a .zip of /asdf.
Easiest way is immediately after booting up, with a root explorer navigate to /asdf. Copy the contents to your internal storage, zip it up and send it to me.
If the issue happens while the device is running provide a dmesg plus a logcat that you take while/shortly after the issue happens. This will log what´s running in the current session. Try to be as detailed as possible what´s happening when the issue appears. It will also help me in reading the log!
Feature Documentation:
Here´s a brief documentation about some of the features included in the kernel that can be changed as the user desires.
They can be accessed via either terminal, scripts or for example EXKM manager ( tools -> user settings).
CPU-Frequency Limiting:
Another option is CPU-Freq Limiting. You can now limit the CPU frequency to a few different levels with a sysfs interface. Original implementation is from @tbalden, I only changed it to be accessible via traditional root methods.
Main Switch:
sys/module/cpufreq/parameters/batterysaver
Set this option to "1" to enable the feature
Max-Frequency Selection (Input boosts, such as scrolling boost or app launching boosts will still apply, if touch boost restriction is not set to 1)
sys/module/cpufreq/parameters/batterysaver_level
Set this to "1" to restrict the max CPU-Freqs to 1,7GHZ/2,1GHZ/2,49GHZ (Little Cluster/Big Cluster/Prime Core)
Set this to "2" to restrict the max CPU-Freqs to 1,6GHZ/1,7GHZ/2,0GHZ (Little Cluster/Big Cluster/Prime Core)
Set this to "3" to restrict the max CPU-Freqs to 1,49GHZ/1,4GHZ/1,6GHZ (Little Cluster/Big Cluster/Prime Core)
Touch-Boost Restriction
sys/module/cpufreq/parameters/batterysaver_touch limiting
Set this to "1" to restrict the powerhal from boosting over the limit defined in batterysaver_level
Set this to "0" to allow the powerhal to boost above the values defined in batterysaver_level, but only during interaction with the Phone!
Screenshots:
View attachment 5309899View attachment 5309901View attachment 5309903
This is for example very useful during gaming to prevent additional heat, if not the highest performance from the CPU is required. Check if the game is running fine on level 1 or 2, and you´ll notice much less heat. Powerdraw will be reduced as well.
Another very useful trick while doing video calls or long extended navigation sessions with google maps to preserve battery or keep the phone from heating. Especially during summer if the ambient temperatures are high.
This is a very easy way to preserve battery or reduce heat without toggling the battery save mode in settings as that restricts background data usage, which can lead to delayed notifications.
How to pass Safetynet after unlocking the bootloader
With the introduction of hardware backed safetynet attestation, passing safetynet has become a lot more complicated.
Some probably remember a while ago, flashing a kernel that forced some flags was enough to pass it. However these days are gone.
Below is a short guide how to pass safetynet on phones that are flagged to use HW attestation (such as the ROG 5).
1. Make sure you´re running latest magisk canary.
2. In Magisk Manager enable both zygisk and deny list.
4. Download the latest Universal Safety Net Fix from @kdrag0n ´s github for zygisk cand flash it in Magisk Manager. Reboot.
5. Profit
this one is the last one
Freak07,
Please not this kernel is made to run only on Xperia 1 II
Click to expand...
Click to collapse
I guess it should be "Please note this kernel is made to run only on Xperia 1 III"
By the way, is there any plans to make same kernel for 5 III ?
Source Code: https://github.com/freak07/Kirisakura_Sagami
Click to expand...
Click to collapse
Leads me to nowhere (404).
dron39 said:
Freak07,
I guess it should be "Please note this kernel is made to run only on Xperia 1 III"
By the way, is there any plans to make same kernel for 5 III ?
Leads me to nowhere (404).
Click to expand...
Click to collapse
Fixed the typos and the link.
No, I only have the Xperia 1 III to work on.
Amazing work mate, very meticulous tuning. Would love to have this kernel on the 5 III. I understand the device architectures are quite similar?
treff89 said:
Amazing work mate, very meticulous tuning. Would love to have this kernel on the 5 III. I understand the device architectures are quite similar?
Click to expand...
Click to collapse
I asked the same question above
And unfortunatelly Freak07 do not support 5 III because he doesn't have it. Hope someone else could transfer his patches and things to 5 III.
Thanks for the kernel. However after installing the kernel my SD card gave an error. It says issue with the SD Card tap to fix and then asks me to format it?
BlazingKahn35 said:
Thanks for the kernel. However after installing the kernel my SD card gave an error. It says issue with the SD Card tap to fix and then asks me to format it?
Click to expand...
Click to collapse
I see. Thanks for the report!
I think i know whats up. They use a proprietary driver for exfat formatted sdcards ( I assume yours is formatted as exfat?) so it's not included in the source i build the kernel from.
I don't use a sdcard, that's why I missed it.
treff89 said:
Amazing work mate, very meticulous tuning. Would love to have this kernel on the 5 III. I understand the device architectures are quite similar?
Click to expand...
Click to collapse
dron39 said:
I asked the same question above
And unfortunatelly Freak07 do not support 5 III because he doesn't have it. Hope someone else could transfer his patches and things to 5 III.
Click to expand...
Click to collapse
They are similar, but I can't support a device i don't own. I also lack the time to do any remote debugging.
The phones however are similar as you mentioned, so if somebody is interested in starting to work on it all my work is up on GitHub. That might make it a lot easier than it would be otherwise.
Freak07 said:
I see. Thanks for the report!
I think i know whats up. They use a proprietary driver for exfat formatted sdcards ( I assume yours is formatted as exfat?) so it's not included in the source i build the kernel from.
I don't use a sdcard, that's why I missed it.
Click to expand...
Click to collapse
Yes mine is exfat since it's 256gb but not a big issue. I just transferred all my files to PC formatted the SD and transferred back now it works.
Also I'm using forced 4K all the time. But the only downside is the slowing down of the FP sensor. I think it's a kernel panic can you look in to that also maybe? (It was also slow on stock kernel)
Dear developer, if there is an opportunity, I would like to receive a kernel for PRO-I products!
I promise to donate
Update to 1.0.1
Good morning everybody,
thanks to @BlazingKahn35 ´s report exfat formatted sdcards are now working fine again.
Included an open source driver, that spoofs texfat support (the proprietary exfat driver) once an exfat sdcard is detected.
Download link can be found in the OP.
BlazingKahn35 said:
Also I'm using forced 4K all the time. But the only downside is the slowing down of the FP sensor. I think it's a kernel panic can you look in to that also maybe? (It was also slow on stock kernel)
Click to expand...
Click to collapse
Not sure what you mean. A kernel panic crashes the device so that it reboots.
The fingerprint scanner works fine for me. I place my finger on it, it scans and proceeds to unlock. It's not the fastest around, but it's quick enough for me.
Also used the adb commands to enable 4k and the speed of the fingerprint sensor stayed the same on my end.
I noticed just as I woke up that my phone was charged to 100%. Did you removed battery care from the kernel?
Freak07 said:
Not sure what you mean. A kernel panic crashes the device so that it reboots.
The fingerprint scanner works fine for me. I place my finger on it, it scans and proceeds to unlock. It's not the fastest around, but it's quick enough for me.
Also used the adb commands to enable 4k and the speed of the fingerprint sensor stayed the same on my end.
Click to expand...
Click to collapse
For me there is a big delay sometimes. Do you have AOD enabled?
BlazingKahn35 said:
I noticed just as I woke up that my phone was charged to 100%. Did you removed battery care from the kernel?
Click to expand...
Click to collapse
Not intentionally no. It might be not enabled the way I built the source or i need to see if the drivers is available somewhere else to be able to build it in.
I'll play around with it the next few days, see if I can reproduce the issue and find what's missing or broken. Thanks for the report again.
BlazingKahn35 said:
For me there is a big delay sometimes. Do you have AOD enabled?
Click to expand...
Click to collapse
Not constant AOD. Only waking to AOD screen when lifting the phone is enabled.

[KERNEL][06/12/2022] fsociety tribute for Google Pixel 4a 5G [A12/L]

{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Hello, friend.
Inspired by @wrongway213's original custom kernel for Pixel 4/XL, I decided to make my own project starting with the PIxel 4a 4G, and then wanted to expand the support to the Pixel 4a 5G. The naming is a tribute to both his ideas and Mr. Robot. fsociety tribute's goal is to give the device a set of useful features while ensuring its stability for a daily life usage. Those features and changes are pulled from different places like Sultan kernel, Arter97 kernel, Kirisakura and many more.
Features
General features
Built with Google Clang version 14.0.2 + LLD linker
Full -O3 build with chipset's flags included (thanks to @eng.stk and @Sultanxda)
AnyKernel3 powered installation to stay OTA and flashers (EXKM, FKM...) friendly
ARM64 architecture optimization and performance patches
Merged security and code fixes from Google and Qualcomm - CAF
Filesystem (ext4/f2fs) optimizations
Scheduler code improvements for better CPU tasks assigning
Disabled several debugging cruft
Memory related features
Merge zRAM and zRAM's compression algorithm code updates
Increase zRAM's disksize to 4GB (from the stock 2GB). Apps can be easily memory intensive nowadays...
Swap 1 page at a time instead of the default's 8, so that it may help in case "the device is under extreme memory pressure"
(source: https://source.android.com/devices/tech/perf/low-ram)
Reduce memory and CPU time usage by avoiding dynamic memory allocations in different kernel components (thanks to @arter97 and @Sultanxda)
Network related features
Set BBR as the default TCP network congestion control and switch to fq_codel queue discipline
(this combination improves network speed and reliability - thanks to @kdrag0n)
Enable support for TTL spoofing
Update Wireguard to its latest release
Power-saving related features
Some of the main kernel parts (such as the audio drivers and the WLAN driver's delayed work/tasks) now use power-efficient workqueues (thanks to @Freak07)
Display "power-saving tweaks" merged-in (from Proton kernel)
Reduce the GPU idle timeout set to 64 ms and implement GPU power-saving changes from Sultan kernel
battery: Tweak QG SOC to be more linear/monotonic (from Proton kernel)
That fixes the stock kernel's unlinear battery level curve, especially between 100% and 90%. The device will need a few charge-discharge cycles to take it into consideration
Performance related features
Faster system call filtering using BPF JIT (from Proton kernel)
Implement LRNG and enable it as default for better performance (more info at: https://www.phoronix.com/scan.php?page=news_item&px=LRNG-Random-2021-v41)
fuse: give wakeup hints to scheduler to speed up compress/decompress in internal storage (from Qualcomm,
found in P6's Kirisakura kernel)
Disable the GPU memory usage tracing (which was enabled for debugging purposes)
Return before thermal trip evaluates (it is a workaround for the lag occurring when the device is low on battery and automatically switches to battery saving mode)
Other under the hood changes
Extra features
KCAL Color Control support (from ElementalX/Cleanslate - thanks to @savoca, @tbalden, and @flar2)
Haptic Feedback level Control with Fingerprint Haptic Feedback Control support from blu_spark kernel (thanks to @eng.stk)
Boeffla Wakelock Blocker (to use with caution, and only if it is necessary)
Download & Links
#1.57 ZIP download: https://sourceforge.net/projects/fsociety-tribute/files/pixel4a-5g/fsociety-tribute-stable%231.57.zip/download
Android 12/L Franco Kernel Manager custom json: https://github.com/fsociety-tribute/redbull/raw/a12-rebase/fkm/bramble/fkm.json
Support: Telegram group
Donations: PayPal
Credits go to
LineageOS and GrapheneOS for providing their initial source drops
@wrongway213 for inspiring me to achieve this project and his contributions (especially this thread template)
@eng.stk for blu_spark kernel, for his contributions and his personal pieces of advice
@tbalden for Cleanslate kernel, KCAL support, providing the building script and his contributions
@Freak07 for his guidance in solving my first kernel compiling issues and for his amazing contributions
@kdrag0n for Proton kernel and his innovative contributions
@Sultanxda for Sultan kernel and his outstanding contributions
@arter97 for Arter97 kernel and his efficient contributions
@osm0sis for AnyKernel3 and his contributions
@flar2 for ElementalX, KCAL support and his contributions
@nathanchance for his compilation guides and repos
Thanks to
@Anonshe, @redsmith, @badaas and all my Telegram's group members for being the awesome testers they are
@lacia-chan and @JoshuaDoes for their technical support and the discussions we had together
Every person that submitted a donation, including Shane that gave me his financial contribution which pushed me to work on redbull
XDA:DevDB Information
fsociety tribute for Pixel 4a 5G, Kernel for the Google Pixel 4a 5G
Contributors
momojuro
Source code: Github repository
Kernel Special Features: KCAL, Vibration Control, Wireguard
Version Information
Status: Stable
Current Stable Version: 1.57
Stable Release Date: 2022-06-12
Created 2022-02-22
Last Updated 2022-06-12
Reserved #1
Hey nice kernel! I'm planning on using this in a custom rom(lighthouse sailboat) i plan on building and maintaining for the 4a5G. Is this ready to be built with roms or does it need any modifications? If unsure, i'll just test and see myself.
xxseva44 said:
Hey nice kernel! I'm planning on using this in a custom rom(lighthouse sailboat) i plan on building and maintaining for the 4a5G. Is this ready to be built with roms or does it need any modifications? If unsure, i'll just test and see myself.
Click to expand...
Click to collapse
Hi,
I appreciate your support! It is indeed ready to use, but feel free to contact me if you want to have the build script. I suggest you to fork the repository after the upcoming March build release (as I often force push during my testing phases)!
momojuro said:
Hi,
I appreciate your support! It is indeed ready to use, but feel free to contact me if you want to have the build script. I suggest you to fork the repository after the upcoming March build release (as I often force push during my testing phases)!
Click to expand...
Click to collapse
Ahaha no worries, the rom will be in testing for a while anyways. As for the build script, yea sure send it over!
xxseva44 said:
Ahaha no worries, the rom will be in testing for a while anyways. As for the build script, yea sure send it over!
Click to expand...
Click to collapse
You can contact me on Telegram! (username same as here)
Might be a stupid question, but can this be flashed without rooting?
Edikuun said:
Might be a stupid question, but can this be flashed without rooting?
Click to expand...
Click to collapse
Unfortunately, no.
I also want to mention that the next build is currently being tested on the Telegram group. It shall be released on XDA very soon!
Hello friends,
Here we are for a new update!
The project which started with the Pixel 4a 4G, then extended its support to the Pixel 4a 5G, Pixel 5 and Pixel 5a, has reached 2000+ downloads over 60+ countries, and it is a milestone I wouldn't have reached without your support! Thank you.
You're kindly asked to make sure you're using the stable v24.3 of Magisk before flashing fsociety tribute!
Changelog
fsociety tribute stable#1.43
- Full code rebase for better stability and address the previous reported issues on #1.00
- Android 12L - March 2022 security patch ready (thanks to @lacia-chan for providing the complementary merges)
- Merge the fix for the dirty pipe exploit (more info at: https://dirtypipe.cm4all.com/)
- Reduce the GPU idle timeout from 64ms to 58ms (stock is 80ms)
- Reset zRAM's disksize to stock's default
- Update the compiler from Clang 14.0.1 to Google's latest Clang 14.0.2
- Implement LRNG and enable it as default for better performance (more info at: https://www.phoronix.com/scan.php?page=news_item&px=LRNG-Random-2021-v41)
- Misc. under-the-hood changes
Download & Links
Android 12/L ZIP download: https://sourceforge.net/projects/fsociety-tribute/files/pixel4a-5g/fsociety-tribute-stable%231.43.zip/download
Android 12/L Franco Kernel Manager custom json: https://github.com/fsociety-tribute/redbull/raw/a12-rebase/fkm/bramble/fkm.json
Telegram group: https://t.me/fsociety_tribute_redbull
Donations: https://paypal.me/momojuro
Thank you for making this. Eager to give it a try.
You accidentally posted the 1.43 update file for the pixel 5. We can't flash the update as it says wrong device.
I also manually edited the script to allow it to install on bramble instead of redfin and of course when I booted my device I could not control the touchscreen (aka a pixel 5 kernel installed on pixel 4a 5g).
I checked the files on Sourceforge and I cannot actually locate the real pixel 4a 5g 1.43 update. Those are mislabeled for the wrong device.
I'm surprised no one has said anything since you released this update.....
kratosjohn said:
You accidentally posted the 1.43 update file for the pixel 5. We can't flash the update as it says wrong device.
I also manually edited the script to allow it to install on bramble instead of redfin and of course when I booted my device I could not control the touchscreen (aka a pixel 5 kernel installed on pixel 4a 5g).
I checked the files on Sourceforge and I cannot actually locate the real pixel 4a 5g 1.43 update. Those are mislabeled for the wrong device.
I'm surprised no one has said anything since you released this update.....
Click to expand...
Click to collapse
well someone did mention in the telegram group. But yes, it is as you wrote.
Hello everyone!
I hope you're all doing well. First of all, thank you for your support as always. I would also like to apologize for the sudden communication silence which wasn't planned. Sometimes life gets in the way, and you've got to make choices.
I fortunately found a part-time job and the first weeks were mentally and physically draining. If everything goes well, I will be able to buy a Pixel 5a soon in June, so that I may work again on the redbull/barbet kernel builds while also keeping my 4a 4G as my second device to maintain the original fsociety tribute project!
Excited to come back and exchange with the lots of you, but also address the reported issues.
Hello friends,
Let's finally get back to business! I would like to thank each one of you for your patience, and all my Telegram testers for their feedback and support throughout the past weeks testing phase.
Note: Even though the kernel works with Android 13, I will not provide any support until it is officially released.
Changelog
fsociety tribute stable#1.57
Full code rebase to make the updating process easier and address the reported issues from the previous releases (such as the momentary display rendering lags)
Android 12L - June 2022 security patch ready with Android 13 security and code fixes merged-in
Merged-in Qualcomm's 4.19 repo latest code and scheduler improvements
Updated Wireguard to its latest version's changes
Removed the support of the following features for stability purposes:
Haptic Feedback level Control with Fingerprint Haptic Feedback Control (Vibration control is still supported however)
Boeffla Wakelock Blocker
Download & Links
Android 12/L ZIP download: https://sourceforge.net/projects/fsociety-tribute/files/pixel4a-5g/fsociety-tribute-stable#1.57.zip/download
Android 12/L Franco Kernel Manager custom json: https://github.com/fsociety-tribute/redbull/raw/a12-rebase/fkm/bramble/fkm.json
Telegram group: https://t.me/fsociety_tribute_redbull
Donations: https://paypal.me/momojuro
momojuro said:
Hello friends,
Let's finally get back to business! I would like to thank each one of you for your patience, and all my Telegram testers for their feedback and support throughout the past weeks testing phase.
Note: Even though the kernel works with Android 13, I will not provide any support until it is officially released.
Changelog
fsociety tribute stable#1.57
Full code rebase to make the updating process easier and address the reported issues from the previous releases (such as the momentary display rendering lags)
Android 12L - June 2022 security patch ready with Android 13 security and code fixes merged-in
Merged-in Qualcomm's 4.19 repo latest code and scheduler improvements
Updated Wireguard to its latest version's changes
Removed the support of the following features for stability purposes:
Haptic Feedback level Control with Fingerprint Haptic Feedback Control (Vibration control is still supported however)
Boeffla Wakelock Blocker
Download & Links
Android 12/L ZIP download: https://sourceforge.net/projects/fsociety-tribute/files/pixel4a-5g/fsociety-tribute-stable#1.57.zip/download
Android 12/L Franco Kernel Manager custom json: https://github.com/fsociety-tribute/redbull/raw/a12-rebase/fkm/bramble/fkm.json
Telegram group: https://t.me/fsociety_tribute_redbull
Donations: https://paypal.me/momojuro
Click to expand...
Click to collapse
Thank you Momojuro, happy to have you back, and really appreciate your efforts.
I just flashed this and am excited to see how it works. The stock kernel leaves a lot to be desired.
Hi ! How install it on root devices ? And the adaptative charging work with kernel custom ?
Thanks
Could someone please advise if this Kernel will work with Lineage OS 19.1?
If so, do I need to flash it in Fastboot mode: Fastboot boot 'Kernel Image' or from Recovery > Apply Update > ADB Push.
Thank you!
brickwall99 said:
Could someone please advise if this Kernel will work with Lineage OS 19.1?
If so, do I need to flash it in Fastboot mode: Fastboot boot 'Kernel Image' or from Recovery > Apply Update > ADB Push.
Thank you!
Click to expand...
Click to collapse
Why don't you just ask someone to read the OP to you?
Try starting there before asking questions answered in the OP.

Categories

Resources