Introduction
Based on samsung sources and android common tree. Supported devices: G970F/N, G973F/N, G975F/N G977B/N, N970F, N975F, N971N, N976B/N. All sources are open on GitHub.
Continuous integration with GitHub Actions set up. This means you can customize the kernel from browser and build the version suitable for you without leaving the browser (see сustomization section).
Features
Customizable build with config presets
Only part of samsung security features disabled (DEFEX, Process Authentification, root restrictions)
Switchable SELinux (by default it's locked in "always enforcing" mode in samsung sources)
Built-in in Magisk v21.1
Various toolchains (cruel,arm,samsung,proton,arter97...) supported
Wireguard for VPN
CIFS for SMB
Iptables TTL and HL editing modules for bypassing tethering restrictions
NTFS module for OTG usb drives
Moro sound module
Boeffla WakeLock Blocker
sdfat driver for vfat and exfat filesystems
reiser4 filesystem added. reiser4progs (https://github.com/CruelKernel/reiser4progs/releases)
DEX cable vendor lock for WQHD resolution removed
ZIP installer with XZ compression
ZIP installer with automatic os_patch_level patching
Build commands (configuration presets) used for V3.9 kernel:
Code:
$ ./cruelbuild pack model=<MODEL> name=CRUEL-V3.9 +magisk +nohardening +force_dex_wqhd +ttl +cifs +ntfs +sdfat +nodebug +noaudit +noksm +nomodules +wireguard +usb_serial +sched_powersave +sched_performance +morosound +boeffla_wl_blocker +fake_config +dtb
Where model can be one of G970F/N, G973F/N, G975F/N G977B/N, N970F, N975F, N971N, N976B/N.
Installation Instructions
First of all, TWRP Recovery + multidisabler should be installed in all cases. This is a preliminary step. Backup your existing kernel. You will be able to restore it in TWRP Recovery in case of any problems. Download an *.zip file. Reboot to TWRP. Install > Install ZIP > Flash CruelKernel.zip. Reboot to system.
ChangeLog
V3 - Support for G970F, G975F, G977B, N970F, N975F, N976B models.
V3.1 - Boeffla wl blocker, BTB5 sources for N10 models.
V3.2 - Magisk update v20.4, wireguard update, sdfat for VFAT, exFAT, ntfs module.
V3.3 - CTC9 sources. The camera will work only on CTC9 based firmwares.
V3.4 - CTE9/CTF1 sources. Small fixes, overall improvements, more customization configs for building on github.
V3.7 - Various toolchains added (arm, arter97, samsung, proton, system, default)
V3.8 - DTI1 sources added for N971N, N976N.
DTH7 sources added for G977N model.
Some debugging flags disabled. performance config fixed (-O3).
Cruel toolchain added (gcc 10.2 with PGO/LTO and inlining params from gcc 9 branch)
simple_lmk added (github.com/kerneltoast/simple_lmk)
V3.9 - G977N, G973N models added.
G970F/N, G975F/N, G973F/N updated to DTJA.
N976B, N970F, N975F updated to DTJ4.
Magisk updated to v21.1 version.
Vendor lock for dp cable for DEX removed (thanks, fart1-git).
Zip installer implemented.
Automted os_patch_level level patching in installer (https://github.com/CruelKernel/clone_header).
Downloads
OS Patch Level: 2020-11
V3.9 Download folder
Sources
If you like the work and want to help me with hosting: https://www.paypal.me/evdenis Hitting star button on GitHub and thanks button on XDA really helps to stay motivated.
Instructions here could be outdated a bit, one can find the latest version in project's readme at github.
How to customize the kernel build
It's possible to customize the kernel and build it from the browser. First of all, create and account on GitHub. Next, fork this repository. Switch to the "Actions" tab and activate GitHub Actions. At this step you've got your own copy of the sources and you can build it with GitHub Actions. You need to open github actions configuration file (.github/workflows/main.yml) and edit it from the browser. For example, to alter the kernel configuration you need to edit lines:
Code:
- name: Kernel Configure
run: |
./build config
model=G973F
name="CRUEL-V3.3"
+magisk
+nohardening
+ttl
+wireguard
+cifs
+sdfat
+ntfs
+tcp_cibuc
+morosound
+boeffla_wl_blocker
First of all, you need to change G973F model to the model of your phone. Supported models: G970F/N, G973F/N, G975F/N G977B/N, N970F, N975F, N971N, N976B/N.
You can change the name of the kernel by replacing name="CRUEL-V3" with, for example, name="my_own_kernel". You can remove wireguard from the kernel if you don't need it by changing "+" to "-" or by removing the "+wireguard" line and "" on the previous line. OS patch date can be changed with os_patch_level=2020-02 argument, the default current date is in build.mkbootimg.G973F file.
Available configuration presets can be found at kernel/configs folder. Only the *.conf files prefixed with "cruel" are meaningful. For example:
+magisk - integrates magisk into the kernel. This allows to have root without booting from recovery. Enabled by default.
magisk+canary - integrates canary magisk into the kernel.
bfq - enable bfq I/O scheduler in the kernel.
sched_... - enable various (conservative, ondemand, powersave, userspace, performance) CPU schedulers in the kernel.
ttl - adds iptables filters for altering ttl values of network packets. This helps to bypass tethering blocking in mobile networks.
wireguard - adds wireguard VPN module to the kernel.
cifs - adds CIFS (SMB) support.
tcp_cubic - use CUBIC as default TCP congestion control.
tcp_westwood - use WestWood as default TCP congestion control.
sdfat - use sdfat for exFAT and VFAT filesystems.
ntfs - enable ntfs filesystem support (read only).
boeffla_wl_blocker - enable boeffla wakelock blocker module.
morosound - enable moro sound control module.
+nohardening - removes Samsung kernel self-protection mechanisms. Potentially can increase the kernel performance. Enabled by default. Disable this if you want to make your system more secure.
nohardening2 - removes Android kernel self-protection mechanisms. Potentially can increase the kernel performance. Don't use it if you don't know what you are doing. Almost completely disables kernel self-protection. Very insecure.
nodebug - remove debugging information from the kernel.
noksm - disable Kernel Samepage Merging (KSM).
nomodules - disable loadable modules support.
noaudit - disable kernel auditing subsystem.
300hz - increases kernel clock rate from 250hz to 300hz. Potentially can improve ui responsiveness.
1000hz - increases kernel clock rate from 250hz to 1000hz. Potentially can improve ui responsiveness.
For example, you can alter default configuration to something like:
Code:
- name: Kernel Configure
run: |
./build config
os_patch_level=2020-12
model=G975F
name="OwnKernel"
+magisk+canary
+wireguard
+nohardening
+1000hz
After editing the configuration in the browser, save it and commit. Next, you need to switch to the "Actions" tab. At this step you will find that GitHub starts to build the kernel. You need to wait about 25-30 mins while github builds the kernel. If the build is successfully finished, you will find your boot.img in the Artifacts section. Download it, unzip and flash.
To keep your version of the sources in sync with main tree, please look at one of these tutorials:
How can I keep my fork in sync without adding a separate remote?
How do I update a GitHub forked repository?
Support
This thread. Feature requests accepted.
Telegram (testing and intermediate releases).
GitHub Pull Requests if you want to contribute.
Credits
Samsung for kernel sources
fart1-git for disabling DEX cable vendor lock
corsicanu for default blocklist of wakelocks for boeffla_wl_blocker driver
Nico (@NicoMax2012) for porting moro sound module
bamsbamx for porting boeffla_wakelock_blocker
thehacker911 for general improvements and advices
ExtremeGrief for overall improvements, porting maple scheduler
geiti94 for his advices
topjohnwu for Magisk
franciscofranco for FK Kernel Manager
and testers.
I'm sorry if I missed someone, just write me and I will update the list.
XDA:DevDB Information
[KERNEL] CRUEL KERNEL S10/Note10, Kernel for the Samsung Galaxy S10
Contributors
evdenis, evdenis
Source Code: https://github.com/CruelKernel/samsung-exynos9820
Kernel Special Features:
Version Information
Status: Testing
Current Stable Version: v3.9
Stable Release Date: 2020-12-01
Created 2020-03-08
Last Updated 2020-12-01
How to build the kernel locally on your PC
This instructions assumes you are using Linux. Install mkbootimg (AIK tool) from osm0sis, heimdall (if you want to flash the kernel automatically).
Next:
Code:
# Install prerequisites
# If you use ubuntu or ubuntu based distro then you need to install these tools:
$ sudo apt-get install build-essential libncurses-dev libtinfo5 bc bison flex libssl-dev libelf-dev
# If you use Fedora:
$ sudo dnf group install "Development Tools"
$ sudo dnf install ncurses-devel ncurses-compat-libs bc bison flex elfutils-libelf-devel openssl-devel
# Install mkbootimg
$ wget https://github.com/osm0sis/mkbootimg/archive/master.zip
$ unzip master.zip
$ cd mkbootimg-master
$ sed -i -e 's/-Werror//g' Makefile
$ make
$ sudo mv mkbootimg /usr/local/bin/mkbootimg
# Get the sources
$ git clone https://github.com/CruelKernel/samsung-exynos9820
$ cd samsung-exynos9820
# List available branches
$ git branch -a | grep remotes | grep cruel | cut -d '/' -f 3
# Switch to the branch you need
$ git checkout cruel-v3
# Install compilers
$ git submodule update --init --recursive
# Compile
$ ./build mkimg name=CustomCruel model=G973F +magisk+canary +wireguard +ttl +cifs +nohardening
# You will find your kernel in boot.img file after compilation.
$ ls -lah ./boot.img
# You can automatically flash the kernel with heimdall
# if you connect your phone to the PC and execute:
$ ./build :flash
# Or in a single command (compilation with flashing)
# ./build flash name=CustomCruel model=G973F +magisk+canary +wireguard +ttl +cifs +nohardening
Pin problem
The problem is not in sources. It's due to os_patch_level mismatch with you current kernel (and/or twrp). CruelKernel uses common security patch date to be in sync with the official twrp and samsung firmwares. You can check the default os_patch_level in build.mkbootimg.* files. However, this date can be lower than other kernels use. When you flash a kernel with an earlier patch date on top of the previous one with a higher date, android activates rollback protection mechanism and you face the pin problem. It's impossible to use a "universal" os_patch_level because different users use different custom kernels and different firmwares. CruelKernel uses the common date by default in order to suite most of users.
How can you solve the problem? 5 ways:
You can restore your previous kernel and the pin problem will gone
You can check the os_patch_level date of your previous kernel here https://cruelkernel.org/tools/bootimg/ and patch cruel kernel image to the same date. If your previous kernel is nemesis, patch cruel to 2099-12 date.
You can reboot to TWRP, navigate to data/system and delete 3 files those names starts with 'lock'. Reboot. Login, set a new pin. To fix samsung account login, reinstall the app
You can rebuild cruel kernel with os_patch_level that suites you. To do it, you need to add the line os_patch_level="<your date>" to the main.yml cruel configuration. See the next section if you want to rebuild the kernel.
You can do the full wipe during cruel kernel flashing
Good job!
Thanks Dev! Does this kernel work also with LineageOS and AOSP roms?
evdenis said:
...
After that you need to add the line os_patch_level="<your date>" to the main.yml cruel configuration and rebuild it. See the customization section if you want to rebuild the kernel.
Click to expand...
Click to collapse
Did you checked it if it works for you? For me the oneliner didnt work in main.yml. I must edit the build.mkbootimg.G975F file and rebuild. Then i got no pin problems cause the OPL was now changed.
hanspampel said:
Did you checked it if it works for you? For me the oneliner didnt work in main.yml. I must edit the build.mkbootimg.G975F file and rebuild. Then i got no pin problems cause the OPL was now changed.
Click to expand...
Click to collapse
Yes, I checked that it works. Here you did't use os_patch_level setting and the date is 2020-02. Next, you updated os_patch_level and you can see the date changed if you unfold "Show information about build" section in build log. In the third commit you removed the os_patch_level and cancelled the build, so the date reverted to default one 2020-02. And in finial commit the date was changed in build.mkbootimg.G975F file. If you doubt the date changed, you can check the build settings either in "Show information about build" section in build log or in "Kernel Configuration Info" file next to the kernel image in "Artifacts". Thanks!
Valentino911 said:
Thanks Dev! Does this kernel work also with LineageOS and AOSP roms?
Click to expand...
Click to collapse
As for now, it compatible only with Samsung based firmwares. Works on native samsung firmwares, BeyondROM, on Ambasadii it's better to use Nemesis kernel (you will face pin problem if you try to install cruel). The kernel doesn't work on LOS.
Anybody want gcam for exynos.. u can see tgis video it for android Q one ui 2.0 for s10plus exynos
I have a question . The hadest rum was established, respectively the hadest kernel. I install the cruel kernel, but after the reboot the kernel of the hadest returns. Why? The first time I encounter this phenomenon, How to solve the problem?
Before rebooting the cruel core, the necessary functions work. After a reboot, the hades kernel returns.
@evdenis
I got problems with your latest sources (3.0 and 3.1). It doesnt boot to recovery with an app. This works for a few commits earlier(last week or so). Now its not working. And the OSPL in main.yml doesnt work for me too. Doesnt pass the restart pin. But thats not a problem, changed it in the other side.
Cant test your compiled versions, pin problem, i was on nemesis kernel, so i have to compile it myself.
Another problem ive saw, the device doesnt shut down. It only reboots. Compiled with 3.0 and 3.1 sources. With the older source a week ago, it works.
Edit: So tried your released v3.1 and changed the OSPL manually for PIN Fix, seems to work(recovery and shutdown). Maybe something went wrong on my side till compiling. Have no clue atm.
hanspampel said:
Another problem ive saw, the device doesnt shut down. It only reboots. Compiled with 3.0 and 3.1 sources. With the older source a week ago, it works.
Edit: So tried your released v3.1 and changed the OSPL manually for PIN Fix, seems to work(recovery and shutdown). Maybe something went wrong on my side till compiling. Have no clue atm.
Click to expand...
Click to collapse
This could be due to enabling non-default configuration presets, like +nodebug or +nohardening2.
elchinemil said:
I have a question . The hadest rum was established, respectively the hadest kernel. I install the cruel kernel, but after the reboot the kernel of the hadest returns. Why? The first time I encounter this phenomenon, How to solve the problem?
Before rebooting the cruel core, the necessary functions work. After a reboot, the hades kernel returns.
Click to expand...
Click to collapse
Hades rom uses very good kernel. Technically, I don't see any reason to change it on hades rom, unless you really want to experiment with, for example, +1000hz or +bfq scheduler.
The reason the previous kernel restores back could be again due to patch level mismatch.
I will update installation method in the next version to dynamically repack kernel during installation procedure. Hope, this will solve os_patch_level problem (pin issue) once and for all.
nice kernel
Thanks for this wonderful kernel! It is an honour for me to be able to participate in this!
G975N
Working in 975N or not
hamidru said:
Working in 975N or not
Click to expand...
Click to collapse
If it works om F/FD devices. It will work on N devices
hamidru said:
Working in 975N or not
Click to expand...
Click to collapse
If it's an exynos device ... no reason to this
Related
I am closing this thread as I no longer have valid download links available, I can't maintain this project anymore, and I'd like to make sure everyone understands that any links uploaded by other users cannot be confirmed to be unmodified. Proceed at your own risk!
This thread is for the N900W8 and N900T variants of the Galaxy Note 3.
You can find the other thread for N9005, N900A, N900P, N900V, N900R4, N900K, N900L, N900S, SC-01F, and SCL22 variants here.
idleKernel is a fork from Imoseyon's leanKernel starting at his v6.3 Touchwiz release.
It adds a few more features, escaping somewhat from the minimalist approach while still staying battery friendly.
It hopes to support many ROMs. You can request support for your ROM through private message or on this thread.
You can also find Imoseyon's leanKernel here, which still has ongoing development.
DOWNLOAD
Current version: 7.1.0 (2016-03-27)
Note that there are both SELinux Enforcing and SELinux Permissive versions.
If you are using a custom ROM or f2fs, you will need the permissive version.
All Note 5 ports are forced permissive, and have no enforcing version due to invalid SEPolicy.
TouchWiz 5.0 kernels cannot have their SELinux mode changed by any means, they are compiled as either enforcing or permissive.
idleKernel is also used in the Kali NetHunter project! For full idleKernel functionality in Kali NetHunter, flash one of the images here before flashing NetHunter.
Please be careful to download the right version for your actual phone model, not your ROM.
N9005: hlte-eur
N900A: hlte-att
N900W8: hlte-can
N900P: hlte-spr
N900R4: hlte-usc
N900T: hlte-tmo
N900V: hlte-vzw
N900K: hlte-ktt or hlte-kor
N900L: hlte-lgt or hlte-kor
N900S: hlte-skt or hlte-kor
SC-01F: hlte-dcm
SCL22: hlte-kdi
DOWNLOAD LINKS REMOVED
RAN INTO AN ISSUE OR BUG?
In order for me to help you, you have to at minimum reply with:
The link to the exact kernel zip/tar you downloaded
Your device model (N9005, etc)
A link to the XDA thread of the ROM you're having trouble with
Optional: A logcat during the duration of when the bug is happening
Optional: A `cat /proc/kmsg > /sdcard/kmsg.log` (su required) during the duration of when the bug is happening
You may be able to fix the bug by updating to the latest bootloader and modem for your device.
See: (Direct Download) Latest Bootloaders & Modems
FEATURES INCLUDED FROM LEANKERNEL
overclockable to 2.72GHz, but limited to 2.2GHz during boot
interactiveX V4 (screen_off_maxfreq), renamed back to interactive for compatibility
/sbin/lkconfig script (via terminal emulator, superuser required)
user adjustable panel temperature: -60 to 0, 0 is kernel default (via lkconfig & sysfs)
user adjustable panel colors: 0 to 4, 2 is kernel default (via lkconfig & sysfs)
fix for purple hue/push at low brightness (via panel temperature or panel colors)
cpufreq modified to play better with thermal-engine
compiled with stable Linaro GCC Cortex-A15 4.9 toolchain
built-in supersu and init.d support
DriveDroid compatibility for USB mass storage emulation
interactive governor updated to latest android source (but ondemand left default)
outdated Samsung code updated to later CodeAurora source (cpufreq, mdss, gpu, msm-bus, etc.)
cpufreq issues fixed
exFAT support
ram console enabled for /proc/last_kmsg for kernel crash debugging
FauxSound 3.0
default USB charge speed @ 1200mA
based on N900TUVUFOB6 (February 23, 2015)
IDLEKERNEL FEATURES
rebased on N900TUVUFOL1 (December 5, 2015) and SC01FOMUGOI4 (September 9, 2015)
updated to latest 3.4 Linux (currently 3.4.111)
tailored individually to support all variants of TouchWiz 5.0, CyanogenMod 12.1 & 13.0, SlimRom 5.1 & 6.0, and Note 5 Ports
ramdisk and kernel compressed with xz-crc
FauxSound updated to 3.6
CodeAurora fixes up until December 8, 2015
new IO schedulers available: sio, fiops (default)
new TCP congestion control available: westwood
cubic (default) TCP congestion algorithm updated to Linux 4.3 sources
f2fs full /system /data /cache support (except in enforcing mode TouchWiz)
f2fs updated to latest kernel.org Samsung sources
ext4 updated to latest kernel.org sources
performance governor included for benchmarking & games
adreno idler updated to latest arter97 sources (now with 27 MHz idle)
forced fast charge support by Yank555.lu
full sysfs & in rom vibration control with extended range
compiled with -O2 optimizations
some kernel errors and logging functions fixed
lkconfig rewritten and extended, renamed to ikconfig
support for KCAL advanced color control by savoca
USB mass storage toggle for external SDcard, open Terminal Emulator and type: ums on.
USB 3.0 is turned on if you add 3 to commands: mtp on 3, ptp on 3, ums on 3.
SuperSU uses system install method even on marshmallow, adjustable via ikconfig (set on first boot)
USB HID keyboard and MIDI gadget support (added in 6.7.1!)
INSTALLATION
You can flash idleKernel from Odin 3.x in AP slot using tar.md5 files.
You can also flash from TWRP 2.8.x.x using zip files.
CONFIGURATION OPTIONS
Open Android Terminal Emulator or adb shell, become superuser by typing su, press enter, and type /sbin/ikconfig (on most ROMs you can just type ik), press enter again.
Code:
[email protected]:/ $ su
[email protected]:/ # /sbin/ikconfig
idleKernel configurator (based on lkconfig by Imoseyon)
---
0) display current settings
1) panel temperature
2) panel color
3) cpu max frequency
4) cpu governor
5) gpu governor
6) tcp congestion control
7) io scheduler
8) mmc crc
9) supersu install method
10) check top 10 wake locks (ie. wakeup sources)
please enter a number (or press enter to exit): 0
current settings
----------------
1) panel temperature: 0
2) panel color: 2
3) cpu max frequency:
screen on: 2265600
screen off: 1267200
4) cpu governor: interactive
5) gpu governor: msm-adreno-tz
6) tcp congestion control: cubic
7) io scheduler:
internal memory: noop deadline row [sio] fiops
external sdcard: noop deadline row [sio] fiops
8) mmc crc: disabled
9) supersu install method: system
I recommend the app Kernel Adiutor for control over idleKernel if you are inexperienced in terminal usage, it's very well written and easy to use.
If you want to use the FauxSound controls, please consider buying FauxSound from the Play Store. It's the same developer that wrote the kernel side components to it.
If you want to use KCAL advanced color control, you will need to download the Color Control app from here.
USB 3.0 & MASS STORAGE
idleKernel 6.6.2+ comes with a terminal command called usb, with shortcuts mtp, ptp, and ums.
These commands don't work from adb as running them usually closes the adb session cancelling the command part way through.
They are meant to be run from Terminal Emulator as superuser. If it shows not found, go into Terminal Emulator options and uncheck "Verify PATH entries". There is a bug in Terminal Emulator that causes /sbin to be removed from path sometimes when using su. You could also prefix the commands with /sbin/.
Code:
[email protected]:/ # usb
Usage: usb [mtp|ptp|ums|status] [on|off]
Enables or disables MTP, PTP, and UMS USB modes.
mtp on/off turns on/off MTP mode
ptp on/off turns on/off PTP mode
ums on/off turns on/off UMS mode
default sets USB mode to default
-3, 3 activates USB 3.0, use with on
-i, info, status displays active USB mode
-h, help displays this information
-v, version displays version info
For more help & to report bugs contact <[email protected]>
[email protected]:/ # ums on 3
Disabling USB transfer protocols...
Unmounting SDcard from /storage/extSdCard...
SDcard unmounted successfully.
Activating USB 3.0 SuperSpeed mode...
Setting up dwc3 storage gadget lun...
Mounting /dev/block/mmcblk1 to lun...
Activating USB Mass Storage transfer mode...
Done. PLEASE USE EJECT MEDIA ON PC BEFORE TURNING OFF UMS!
[email protected]:/ # mtp on 3
Disabling dwc3 storage gadget lun...
Disabling USB transfer protocols...
Mount SDcard in Android? (y/n): y
Mounting SDcard to /storage/extSdCard...
Waiting for SDcard to be ready....
SDcard mounted successfully.
Activating MTP USB transfer mode...
Done.
[email protected]:/ # usb default
Disabling USB transfer protocols...
Deactivating USB 3.0 SuperSpeed mode...
Setting USB mode to default...
Done.
TEAM WIN RECOVERY PROJECT
You will probably notice that in the downloads area there is also a TWRP 2.8.7.0 download option.
It uses idleKernel instead of the kernel prebuilts from Omni.
MTP and USB Mass Storage R/W now works in recovery mode, allowing you to plug phone in and easily transfer zips and backups/restores to and from your phone and sdcard. It also fixes some file system bugs that caused ext4 broken backups that couldn't restore to f2fs partitions, and other small bugs like brightness adjustment not working.
On top of that it allows me to support TWRP for variants that aren't officially supported, such as the Japanese and Korean variants.
You can also use ikconfig in TWRP from adb, allowing you to fix settings like unstable CPU overclocks from recovery.
It also has a really cool boot splash and gold theme, that's cool too right?
GOING TO F2FS FILE SYSTEM
See step-by-step guide here:
http://forum.xda-developers.com/gal...ekernel-leankernel-fork-t3241582/post64014959
KNOWN ISSUES
Screen sometimes turns on while charging from PC. (wake event sent from PC?)
Some ROMs refuse to flash in TWRP idleKernel edition. (tell ROM maintainer to fix flash model assert or remove assert yourself)
Streaming audio may occasionally stutter when screen is off. (increase screen off max frequency using ikconfig)
exFAT and f2fs formatted SDcards don't work in CM13. (not a kernel issue, wait for CM team to fix it)
Aroma Installer doesn't work in TWRP idleKernel edition. (it's not compiled with LP driver support? flash original TWRP to use Aroma)
If you are affected by a new issue, please follow ALL of the instructions above and post in the thread or pm it to me.
ROM DEVELOPERS
You have my permission to include idleKernel in your ROM. By doing so, I recommend that you give me the permission to try to work with users on your ROM thread to fix bugs that may possibly be kernel related. On important idleKernel updates, I may visit your thread and notify users of the changes and give them a link back to this thread.
You may also recompile idleKernel with your own changes, and give it a different name if desired. Credit to me is not necessary, but you must keep a branch with the complete source code on a publicly visible site like GitHub, and link to that from your thread. I have a guide in the post underneath this on how to do that.
If you wish to change the default settings of ikconfig when distributing the kernel in your ROM, the easiest way would be to mount /data in your recovery flash script, check for existence of /data/data/idlekernel, if it doesn't exist, create it and write values to a file for every setting you wish to change. Valid files are:
Code:
/data/data/idlekernel/paneltemp - values: -60 to 0 (default 0)
/data/data/idlekernel/panelcolor - values: 0 to 4 (default 2)
/data/data/idlekernel/scaling_max_freq - values in Hz: 652800, 883200, 1267200, 1574400, 2265600 (default), 2496000, 2726400
/data/data/idlekernel/screen_off_maxfreq - values in Hz: 652800, 883200, 1267200 (default), 1574400, 2265600
/data/data/idlekernel/cpu_governor - values: ondemand, interactive (default), performance
/data/data/idlekernel/gpu_governor - values: msm-adreno-tz (default), powersave, performance, simple_ondemand
/data/data/idlekernel/tcp_congestion_control - values: cubic (default), westwood, reno
/data/data/idlekernel/io_scheduler_internal - values: noop, deadline, row, sio (default), fiops
/data/data/idlekernel/io_scheduler_external - values: noop, deadline, row, sio (default), fiops
/data/data/idlekernel/use_spi_crc - values: Y, N (default)
/data/data/idlekernel/supersu - values: SYSTEMLESS=detect/true/false (default)
XDA:DevDB Information
idleKernel, Kernel for the T-Mobile Samsung Galaxy Note 3
Contributors
jcadduono, Imoseyon, arter97, faux123
Source Code: https://github.com/jcadduono/idleKernel-note3
Kernel Special Features:
Version Information
Status: Stable
Current Stable Version: 7.1.0
Stable Release Date: 2016-03-27
Created 2015-11-05
Last Updated 2018-07-12
Reserved
EVER WANTED TO MAKE YOUR OWN KERNEL FORK?
jcadduono's GitHub forking crash course
1. Make an account on GitHub!
2. Use the fork button @ https://github.com/jcadduono/idleKernel-note3 or any other repository
3. In your terminal emulator, cd to the location you want your repository.
4. git clone https://github.com/YOUR_USERNAME/idleKernel-note3.git
(optionally add folder name after that command to change it to something other than idleKernel-note3)
5. cd idleKernel-note3
6. git remote add jc https://github.com/jcadduono/idleKernel-note3.git
(this will allow you to send commits to me, cherry-pick commits from me, or pull new commits from me!)
7. git fetch jc
(do this whenever you want updated commits from me to be available to you for cherry-picking or merging)
8. Be sure to set your git author information too, for proper commit info!
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
git config --global push.default simple
(that last one just removes a warning message whenever you push commits to github)
9. Whenever you want to pull all the latest and greatest commits from me all at once, run:
git fetch jc
git merge jc
I don't recommend doing that though, because if our branches diverge too much our commits might become incompatible or you might not want some of my changes.
The best way to do it would be to:
git fetch jc
git log jc/X
Replace X with ik-touchwiz/ik-cm12.1/ik-slim5.1, that will show you all of my commits.
For every new commit you want, cherry-pick one at a time to make sure each goes successfully.
git cherry-pick <hash from git log jc/X>
10. Now whenever you make changes to your fork, and you are satisfied with them, you can do:
git add .
(that adds every changed file to the next git commit)
or
git add <file>
then
git diff HEAD
(this is optional, but I recommend looking over everything you changed to make sure it makes sense and you can find extra whitespace or typos!)
11. Once you are satisfied with the changes you've made, you can commit them to the branch history.
git commit -m "made some great change that you detail here"
12. To put your new commits up on GitHub, all you have to do is:
git push
13. If you want to send that commit to me as well, you can do:
git push jc
TIPS
Made a mistake and committed it already? You can time travel through git history using the rebase command!
git rebase -i HEAD~X
Replace X with how far back in commit history you want to edit, trust me time travel is a bad idea.
Just change pick to drop and Ctrl+X Y enter, git will make that commit disappear forever like it never happened.
You can also use various other words like reword to change the message of a commit, etc.
In order for GitHub to accept rebases, you have to add -f to git push, but only if you are changing history you've already pushed to GitHub.
If you've already pushed a commit to GitHub and want to undo it, you can do:
git log
git revert xxxxxx
Replace xxxxxx with the hash of the commit you want undone.
If you haven't pushed to GitHub yet, using git rebase is fine for undoing or rewording commits.
Any time you want to see all the changes from one of my commits, you can use
git show xxxxxxxx
Replace xxxxxxxx with the hash from git log jc/X or even your own git log.
It pipes a nice scrollable colored diff through `less`
If you want to stop it from asking for your GitHub username when you push, in idleKernel-note3 directory do:
nano .git/config
Find a line that looks like:
url = https://github.com/......
Add before github.com so it looks like this:
url = https://[email protected]/...
Now press Ctrl+X Y enter to save.
Nice to see the new thread. I tried 6.5.0 on CM12.1, and it ran great on an N900T. Seems very fast and stable. No problems other than the 100% brightness bug mentioned in the first post.
Battery life was really good. Woke up to 99% battery (about 0.1% drain per hour) over around 6.5 hours, and I had a call during that time, so the notification light was running for a while. Stock CM12.1 battery drain was about 0.2% per hour for me (after my fixes).
Ran antutu benchmark, and the results were good (around 46.3k without overclocking), which is very similar to what I got with the stock CM kernel (46.2k). The newest leankernel 5.2 that just came out got about 44.9k. Spreadsheet with detailed results is attached.
frequentc said:
Nice to see the new thread. I tried 6.5.0 on CM12.1, and it ran great on an N900T. Seems very fast and stable.
No problems other than the 100% brightness bug mentioned in the first post, which I just double checked isn't in the stock CM kernel. Do you know if it's in the latest leankernel? I just installed it, but I don't remember noticing if it had that problem or not.
Battery life was really good. Woke up to 99% battery (about 0.1% drain per hour) over around 6.5 hours, and I had a call during that time, so the notification light was running for a while. Stock CM12.1 battery drain was about 0.2% per hour for me (after my fixes).
Ran antutu benchmark, and the results were good (around 46.3k without overclocking), which is very similar to what I got with the stock CM kernel (46.2k). The newest leankernel 5.2 that just came out got about 44.9k. Spreadsheet with detailed results is attached.
Click to expand...
Click to collapse
Interesting, some improvements could be from the -O2 flag used, or even the version of gcc used to compile. I see Linaro released a GCC 5.1 compiler now and I'm currently compiling with Christopher83's 4.9 toolchain. May or may not see a small improvement moving to GCC 5.1. I'm not too interested in trying to get a toolchain build environment going, so I'll just hope Christopher83 can make some time to release new toolchains soon.
Also, storage IO results, mmm, reason I went with SIO as the main scheduler was it seemed to be great with many storage IO threads while still being minimal and battery friendly. Looks like it's succeeding there.
In any case, all results are pretty close and probably can't be tested in real life scenarios, and are bound to vary between bench so I can't say for sure how much more performance you could possibly get out of idleKernel.
jcadduono said:
Interesting, some improvements could be from the -O2 flag used, or even the version of gcc used to compile. I see Linaro released a GCC 5.1 compiler now and I'm currently compiling with Christopher83's 4.9 toolchain. May or may not see a small improvement moving to GCC 5.1. I'm not too interested in trying to get a toolchain build environment going, so I'll just hope Christopher83 can make some time to release new toolchains soon.
Also, storage IO results, mmm, reason I went with SIO as the main scheduler was it seemed to be great with many storage IO threads while still being minimal and battery friendly. Looks like it's succeeding there.
In any case, all results are pretty close and probably can't be tested in real life scenarios, and are bound to vary between bench so I can't say for sure how much more performance you could possibly get out of idleKernel.
Click to expand...
Click to collapse
Using This baby on Darklord 5.1.1....So far, video flickering...Darkera fix that with some advice from Carlos(shinto kernel creator).My device is N900W8 on Darklord Rom.I download the hlt-can 6.5.1.I will like to send you the logcat,but dont know how...
alek889 said:
Using This baby on Darklord 5.1.1....So far, video flickering...Darkera fix that with some advice from Carlos(shinto kernel creator).My device is N900W8 on Darklord Rom.I download the hlt-can 6.5.1.I will like to send you the logcat,but dont know how...
Click to expand...
Click to collapse
upload them to Mega and post back the link
I'm getting very minimal deep sleep (less than 5% deep sleep even when screen off). Details:
Variant: N900W8
Kernel: idleKernel-hlte-can-6.5.2-cm12.1.zip and idleKernel-hlte-can-6.5.1-cm12.1.zip
Rom: https://plus.google.com/communities/106599804742834944713 (CM12.1 based)
Wakelock: NfcService:mRoutingWakeLock (keeps device awake 80% of the time, doesn't happen on the stock rom. NFC is not toggleable in settings, on stock rom as well as ik).
I'll try with another CM12 variant tomorrow, probably temasek, to confirm if this is a CM issue or one specific to the ROM that I'm using, or perhaps with n900w8. Let me know if there's anything else I can do to help. In actual usage, this kernel is excellent. Great on battery, and very smooth. Would be nice to fix the wakelock issue.
Edit: It seems like on the stock kernel (temasek kernel), nfc switches to off in setting s if i try to toggle it, but in ik, it never switches to off (and maybe keeps trying to toggle it on?).
ammarr said:
I'm getting very minimal deep sleep (less than 5% deep sleep even when screen off). Details:
Variant: N900W8
Kernel: idleKernel-hlte-can-6.5.2-cm12.1.zip and idleKernel-hlte-can-6.5.1-cm12.1.zip
Rom: https://plus.google.com/communities/106599804742834944713 (CM12.1 based)
Wakelock: NfcService:mRoutingWakeLock (keeps device awake 80% of the time, doesn't happen on the stock rom. NFC is not toggleable in settings, on stock rom as well as ik).
I'll try with another CM12 variant tomorrow, probably temasek, to confirm if this is a CM issue or one specific to the ROM that I'm using, or perhaps with n900w8. Let me know if there's anything else I can do to help. In actual usage, this kernel is excellent. Great on battery, and very smooth. Would be nice to fix the wakelock issue.
Edit: It seems like on the stock kernel (temasek kernel), nfc switches to off in setting s if i try to toggle it, but in ik, it never switches to off (and maybe keeps trying to toggle it on?).
Click to expand...
Click to collapse
:/ weird, I can try compiling kernel without any nfc support. I don't have this issue and the N900W8 is my device as well. I did have to turn off google wifi scanning though because that also gave me 80% awake time.
I see nfc in cm settings menu, and when I try to turn it on, it just greys it out and disables the option at off. I never have NfcService running either.
@ammarr I was having the same problem with the stock CM kernel. Removing the /system/app/NfcNci folder fixed the problem for me. You'll no longer see NFC as an option under settings. My system now enters deep sleep like 99% of the time.
frequentc said:
@ammarr I was having the same problem with the stock CM kernel. Removing the /system/app/NfcNci folder fixed the problem for me. You'll no longer see NFC as an option under settings. My system now enters deep sleep like 99% of the time.
Click to expand...
Click to collapse
Seems to have fixed the issue for me. Thanks for the suggestion!
ammarr said:
Seems to have fixed the issue for me. Thanks for the suggestion!
Click to expand...
Click to collapse
@jcadduono - thanks for a new kernel for us to play with! So far it runs great for me (2nd day). Just wanted to mention two little things: I tried terminal emulator but it does not have all the options to control the kernel, tried kernel auditor but it does not keep my settings after reboot, so far faux kernel control app seems to work the best for me. Otherwise so far it seems running great, thank you!
Hey guys, i havr a n900w8 on temasek 5.1.1 cm12.1. The 6.4.7 version works flawlessly.. But when I flash 6.5.3... I get stuck on starting apps screen and the phone never actually boots... Please help
Sent from my SM-N900W8 using XDA Free mobile app
flint777 said:
Hey guys, i havr a n900w8 on temasek 5.1.1 cm12.1. The 6.4.7 version works flawlessly.. But when I flash 6.5.3... I get stuck on starting apps screen and the phone never actually boots... Please help
Sent from my SM-N900W8 using XDA Free mobile app
Click to expand...
Click to collapse
are you using version from selinux_permissive folder, and have you tried rebooting to see if 3 boots or so gets past it
jcadduono said:
are you using version from selinux_permissive folder
Click to expand...
Click to collapse
Yup! permissive
Sent from my SM-N900W8 using XDA Free mobile app
---------- Post added at 06:51 PM ---------- Previous post was at 06:48 PM ----------
jcadduono said:
are you using version from selinux_permissive folder, and have you tried rebooting to see if 3 boots or so gets past it
Click to expand...
Click to collapse
https://idlekernel.com/cm12.1/
Sent from my SM-N900W8 using XDA Free mobile app
flint777 said:
Yup! permissive
Sent from my SM-N900W8 using XDA Free mobile app
---------- Post added at 06:51 PM ---------- Previous post was at 06:48 PM ----------
https://idlekernel.com/cm12.1/
Sent from my SM-N900W8 using XDA Free mobile app
Click to expand...
Click to collapse
Ok, lucky for you I also have an N900W8 so I will try out https://idlekernel.com/cm12.1/selin...1_11/idleKernel-hlte-can-6.5.3-cm12.1.tar.md5 with temasek's cm12.1 and see if I can find the issue later today. I need to get some chair hunting done.
jcadduono said:
Ok, lucky for you I also have an N900W8 so I will try out https://idlekernel.com/cm12.1/selin...1_11/idleKernel-hlte-can-6.5.3-cm12.1.tar.md5 with temasek's cm12.1 and see if I can find the issue later today. I need to get some chair hunting done.
Click to expand...
Click to collapse
Alright! Good lookin out bro
Sent from my SM-N900W8 using XDA Free mobile app
Where is the download link for 6.5.4?
Sent from my SM-N920C using Tapatalk
denny02ng said:
Where is the download link for 6.5.4?
Sent from my SM-N920C using Tapatalk
Click to expand...
Click to collapse
I found it in the op
denny02ng said:
Where is the download link for 6.5.4?
Sent from my SM-N920C using Tapatalk
Click to expand...
Click to collapse
The download links are in the first post. Please read.
cuezaireekaa said:
The download links are in the first post. Please read.
Click to expand...
Click to collapse
Did you even read my question? Off course I read the op, but if you click on the note 5 ports link the latest 6.5.4 is not listed in the download links.
Sent from my SM-N920C using Tapatalk
Note:
Kernel Developers: I would like to ask you to merge this patch to your kernels, because it is essential part of MultiROM (MR) - it allows MR to boot any kernel without changing the boot partition. I realize that it is no small request, but the patch is not big, touches relatively stable parts of kernel and should not cause any problems outside its intended function.
The Patch:
You'll need to cherry pick a total of 5 commits (if anyone feels like squashing them to help me out, feel free to link me to it).
Cherry-pick against: http://github.com/multirom-nexus6p/android_kernel_huawei_angler.git on the branch 'mm2'.
Commit hashes in order:
2641ac7979c0b4ef7d8c33bae57404fea89ca0de
ff67f9fae243fea2b513b1721c8cff4584f229ba
58154995579253a2ee864b839aa4a9271afdb1c5
fb7e7c6212f59fce48f83235a99c244e2432b1f3
1fb02d265b4170e193018d513de11f9a47e5e775
Related defconfig options, and their explanations:
Code:
CONFIG_KEXEC=y # Enables the Kexec SysCall to allow loading the new 'secondary' kernel into memory
CONFIG_KEXEC_HARDBOOT=y # Enables the HardBoot flag, which allows 'cold-booting' a new kernel
# CONFIG_ATAGS_PROC is not set # Prevents potential atags related discrepancies, this must be either removed or commented out
CONFIG_PROC_DEVICETREE=y # Allows us to read out the kernel config, and tell that the kernel has all the necessary configs enabled (read out from /proc/config.gz)
User-space Kexec binary: here (you'll need to extract the zip, and it will be in 'multirom/kexec')
A quick guide to use Kexec: here
Authors:
- This patch was made by Mike Kasick for Samsung Epic 4G.
- Tassadar built on this patch, and partially rewrote it to support the Nexus 4, 5, and 6.
- Zhuowei Zhang rewrote the patch from scratch for arm64.
- Myself for maintaining MultiROM for the 6P, and managing the patch.
XDA:DevDB Information
[KEXEC] [ARM64] Kexec-Hardboot Patch, Kernel for the Huawei Nexus 6P
Contributors
npjohnson, 500 Internal Server Error
Kernel Special Features:
Version Information
Status: Stable
Current Stable Version: Version 1
Stable Release Date: 2016-06-11
Created 2016-06-12
Last Updated 2016-06-12
None of the above links working
The links of commits you have mentioned are not working.
shenoy13 said:
The links of commits you have mentioned are not working.
Click to expand...
Click to collapse
Been a long while, because the related MultiROM project is no longer maintained, but the links now work
This kernel supports ROMS based on Android 10 only.
Main features:
- Upstreamed to Linux 4.9.228
- Spectrum profiles
- Compiled with Clang 11 + LLD + Polly
- Flash and forget
User features:
All these features can be used via EXKM app
- Vibration Control
- KCAL (Colour control)
- Sound Control
- Minimum Brightness Control
- USB Fast Charge
CPU features:
- CPU Governors: Schedutil
- Schedutil updated with patches from newer Linux versions
- Using PELT scheduler mechanism
- CPU idle improvements by kerneltoast
- CPU input boost
- RCU boost
File system & memory related features:
- NTFS and F2FS file systems supported
- f2fs Rapid GC
Network features:
- Westwood set as default TCP algorithm
- TTL
Other features:
- Xbox and Dualshock controllers supported with drivers updated to the latest
- Safetynet Flags Removed
- DTS Ultra support
- Wireguard support
- VDSO for better performance in 32 bit apps
- Unused Drivers And Logging removed for a smaller image
Requirements:
Magisk for recommended kernel configuration to set
First Time Installation (clean flash):
1.) Download the Kernel from second post
2.) Have Stock kernel and ramdisk installed, if you are coming from another kernel, follow 'Restore stock boot partition guide' below
3.) Flash Magisk (optional)
3.) Flash the kernel in recovery
Upgrading the kernel:
1.) Download the kernel from the second post
2.) Dirty flash the kernel (this means flashing the kernel without wiping anything)
Restore stock boot partition guide:
This guide will show you how to restore your ROMS stock kernel and ramdisk without losing any data. It will also uninstall Magisk which can be flashed again. Follow this guide if coming from another custom kernel or if something is not working like spectrum or the config file in twisted kernel.
Method 1:
1) Dirty flash your current ROM. This means installing the ROM without wiping anything.
2) Flash Magisk if desired.
3) You are now ready to flash a custom kernel.
Method 2:
1) Extract boot.img from your currently installed ROMs zip file.
2) Go to the install page in TWRP > Flash image > Select the boot.img you extracted and flash it to the boot partition.
3) Reflash Magisk if desired.
4) You have now restored your stock kernel and ramdisk and can now flash a custom kernel.
Hit thanks or donate to support my work
Donators:
Hellboy4
Amnon Nir
Ricardo
Thomas Boll
Peter Goudschmidt
PM if you want your XDA profile linked on this list
XDA:DevDB Information
Twisted Kernel, Kernel for the Xiaomi Mi 8
Telegram https://t.me/twistedkernel
Contributors
Twisted Prime
YTG, Hellboy4, Rommco05, Dahake, Spyronos for testing
bgcngm, abhishek987 for maintaining LOS kernel
oipr for sched backports
Raphielscape for backports
osm0sis for anykernel installer
SultanXDA for Simple LMK, CPU input boost
kdrag0n for lots of stuff
flar2 for vibration control and sound control
Arter97 for f2fs enhancements
frap129 for Spectrum
Everyone whom I cherry-picked from
Source Code: https://github.com/TwistedKernel/Twisted-845
Version Information
Status: Stable
Current Stable Version: V22
Created 2019-11-21
Last Updated 2020-03-02
great! i will try it
Downloads:
Download
Notes:
USB Fastcharge
This feature increases the maximum charging current from a PC to 900 mA from the default value of 500 mA.
Thank you. I hope you will support Miui Q soon.
khanhdx said:
Thank you. I hope you will support Miui Q soon.
Click to expand...
Click to collapse
I agree
hisham2630 said:
I agree
Click to expand...
Click to collapse
Try the latest nightly build
Delete please.
Twisted Kernel 11.0 B991 - Q:
- Rebased on los17 source. The base is now pure Android Q CAF.
- Linux 4.9.206
Download (https://drive.google.com/drive/folders/1k4VJxpE4VY5nNAe01DWNBcSHG0m59QlC?usp=sharing)
Twisted Kernel 13.0 B1030 - Q:
- Updated audio drivers
- Updated FTS touch screen drivers
- Removed Linux updates after 4.9.203 (caused black screens)
- iommu optimised by kerneltoast
- Removed volume key toggles from installer
- Rewrote TKManager to /TKManagerV4 in internal storage
- Moved charge limiter toggle to TKManagerV4/charging
- Moved low power saver toggle to TKManagerV4/powersaver
Download (https://drive.google.com/drive/folders/1k4VJxpE4VY5nNAe01DWNBcSHG0m59QlC?usp=sharing)
I'm try on mi8 miui
Sound works
But camera doesn't work
Hi, amazing job with this kernel!
I had just a on question - could you add some overclocking option (shouldn't be by default just an option in app), like on Pocophone? Because there are no options for MI 8 with overclocking
With this feature that amazing kernel would be a beast!
Good jobs
Good jobs bro.I like this kernel very much.
Twisted Kernel 14.0 B1067 - Q:
- Updated more drivers from Xiaomi
- Scheduler updates from Linux 4.14
- Switched to PELT
Download (https://drive.google.com/drive/folders/1k4VJxpE4VY5nNAe01DWNBcSHG0m59QlC?usp=sharing)
Does this kernel work with pixel experience?
Manelit said:
Does this kernel work with pixel experience?
Click to expand...
Click to collapse
Yes it's for Android Q, I'm using it now in experience
Is it working for MIUI Q?
roanepv said:
Is it working for MIUI Q?
Click to expand...
Click to collapse
Yes. But stock camera don't work. Alternative you can use gcam
Twisted Kernel 15.0 B1084 - Q:
- Fixed random reboots
Download (https://drive.google.com/drive/folders/1k4VJxpE4VY5nNAe01DWNBcSHG0m59QlC?usp=sharing)
İs Working camera with last eu beta ?
Furak07 said:
İs Working camera with last eu beta ?
Click to expand...
Click to collapse
Yes
CRUEL KERNEL S10 V2.3
The development moved to this thread. From V3 kernel supports multiple devices.
Introduction
This kernel is based on BTA8 samsung sources. Only G973F device for now. It is possible to use it on BSKO, BSL4, BTA8 firmware. All sources are open on GitHub.
Continuous integration with GitHub Actions is set up. This means you can customize the kernel from browser and build the version suitable for you without leaving the browser (see сustomization section).
Features
Customizable build with config presets
Only part of samsung security features disabled (DEFEX, Process Authentification, root restrictions)
Switchable SELinux (by default it's locked in "always enforcing" mode in samsung sources)
Built-in in Magisk
Wireguard for VPN
CIFS for SMB
Iptables TTL and HL editing modules for bypassing tethering restrictions
Build commands (configuration presets) used for V2.3 kernel:
Code:
$ ./build mkimg name=CRUEL-V2.3-BTA8 +magisk +nohardening +wireguard +ttl +cifs
$ ./build mkimg name=CRUEL-V2.3-BTA8-CANARY +magisk+canary +nohardening +wireguard +ttl +cifs
Installation Instructions
First of all, TWRP Recovery + multidisabler should be installed in all cases. This is a preliminary step. Backup your existing kernel. You will be able to restore it in TWRP Recovery in case of any problems.
Dowload an *.img file and
With TWRP: Reboot to recovery. Install > Install Image > CruelKernel.img > BOOT.
With Heimdall: Reboot to Dowload mode.
Code:
sudo heimdall flash --BOOT CruelKernel.img
With FK Kernel Manager: Flasher > Manual Flasher.
ChangeLog
V1 is based on BSKO sources and was privately used. You can find V1 by the link.
V2 is based on BTA8 sources. nohardening, nohardening2, cifs configuration presets added.
V2.1 is for internal use only (testing release) +nohardening preset activated by default
V2.2
Canary Magisk updated to 20305 version
MALI_KUTF kernel driver removed (it's required only for kernel developers)
Pin code problem fix (thanks geiti94)
+nohardening (disable samsung protections)
V2.3
Canary Magisk updated to 20306 version
Small fixes for image format
Downloads
CruelKernel-G973F-BTA8-v2.3
CruelKernel-G973F-BTA8-v2.3-CANARY
Sources
How to customize the kernel build
It's possible to customize the kernel and build it from the browser. First of all, create and account on GitHub. Next, fork this repository. Switch to the "Actions" tab and activate GitHub Actions. At this step you've got your own copy of the sources and you can build it with GitHub Actions. You need to open github actions configuration file (.github/workflows/main.yml) and edit it from the browser. For example, to alter the kernel configuration you need to edit lines:
Code:
- name: Kernel Configure
run: |
./build config name=CRUEL-V2-BTA8
+magisk
+ttl
+wireguard
+cifs
You can change the name of the kernel by replacing name=CRUEL-V2-BTA8 with, for example, name=my_own_kernel. You can remove wireguard from the kernel if you don't need it by changing "+" to "-" or by removing the "+wireguard" line and "" on the previous line.
Available configuration presets can be found at kernel/configs folder. Only the *.conf files prefixed with "cruel" are meaningful. For example:
magisk - integrates magisk into the kernel. This allows to have root without booting from recovery. Enabled by default.
magisk+canary - integrates canary magisk into the kernel.
ttl - adds iptables filters for altering ttl values of network packets. This helps to bypass tethering blocking in mobile networks.
wireguard - adds wireguard VPN module to the kernel.
cifs - adds CIFS (SMB) support.
nohardening - removes Samsung kernel self-protection mechanisms. Potentially can increase the kernel performance. You can enable this config if you face rooting or some other kind of restrictions. Other kernels usually use settings from this config by default. It's safe to enable this config, it just makes your system less secure.
nohardening2 - removes Android kernel self-protection mechanisms. Potentially can increase the kernel performance. Don't use it if you don't know what you are doing. Almost completely disables kernel self-protection. Very insecure.
nodebug - remove debugging information from the kernel.
300hz - increases kernel clock rate from 250hz to 300hz. Potentially can decrease response time. Disabled by default, untested.
1000hz - increases kernel clock rate from 250hz to 1000hz. Potentially can decrease response time. Disabled by default, untested.
For example, you can alter default configuration to something like:
Code:
- name: Kernel Configure
run: |
./build config name=CruelCanary
+magisk+canary
+wireguard
+nohardening
After editing the configuration in the browser, save it and commit. Next, you need to switch to the "Actions" tab. At this step you will find that GitHub starts to build the kernel. You need to wait about 25-30 mins while github builds the kernel. If the build is successfully finished, you will find your boot.img in the Artifacts section. Download it, unzip and flash.
To keep your version of the sources in sync with main tree (following updates), please look at this tutorial.
Support
This thread. Feature requests accepted.
Telegram (testing and intermediate releases).
GitHub Pull Requests if you want to contribute.
Credits
Samsung for kernel sources
topjohnwu for Magisk
geiti94 for showing that it's possible to built-in Magisk into the kernel. Initially I experimented with ASIG kernel, but ASIG+Magisk on ASIG firmware just stucks on boot with an SELinux initialization problem. At that time I doubted that built-in Magisk will work.
geiti94 for his help and advices
franciscofranco for FK Kernel Manager
XDA:DevDB Information
CRUEL KERNEL S10 , Kernel for the Samsung Galaxy S10
Contributors
evdenis, evdenis
Source Code: https://github.com/CruelKernel/exynos9820-beyond1lte
Kernel Special Features:
Version Information
Status: No Longer Updated
Current Stable Version: v2.3
Stable Release Date: 2020-02-12
Created 2020-02-10
Last Updated 2020-03-16
Reserved
How to build the kernel locally on your PC
This instruction assumes that you are using Linux. Install: mkbootimg, heimdall (if you want to flash the kernel with it).
Next:
Code:
$ git clone https://github.com/CruelKernel/exynos9820-beyond1lte
$ cd exynos9820-beyond1lte
# List available branches
$ git branch -a | grep remotes | grep cruel | cut -d '/' -f 3
# Switch to the branch you need
$ git checkout samsung-g973f-bta8-cruel
# Install compilers
$ git submodule update --init --recursive
# Compile (install mkbootimg first)
$ ./build mkimg name=CustomCruel +magisk+canary +wireguard +ttl +cifs +nohardening
# You will find your kernel in boot.img file after compilation.
$ ls -lah ./boot.img
# You can automatically flash the kernel with heimdall
# if you connect your phone to the PC and execute:
$ ./build :flash
# Or in a single command (compilation with flashing).
# ./build flash name=CustomCruel +magisk+canary +wireguard +ttl +cifs +nohardening
Boots phone but after entering pin goes to black screen then right back to the pin screen.g973f
gillim74 said:
Boots phone but after entering pin goes to black screen then right back to the pin screen.g973f
Click to expand...
Click to collapse
What ROM are you using? I tested it mostly on samsung BTA8 firmware.
evdenis said:
What ROM are you using? I tested it mostly on samsung BTA8 firmware.
Click to expand...
Click to collapse
Ambassadi same firmware but i think i know what it is.i never uodated the bootloader.i will try that first
gillim74 said:
Ambassadi same firmware but i think i know what it is.i never uodated the bootloader.i will try that first
Click to expand...
Click to collapse
If your phone was able to boot to pin screen, then I doubt the problem is in bootloader. Could you try V1 kernel https://github.com/CruelKernel/exynos9820-beyond1lte/releases/tag/v1.0
If it will work, then probably V2 will also work with +nohardening option. V1 compiled with this option, V2 without it. I will rebuild V2 then.
evdenis said:
If your phone was able to boot to pin screen, then I doubt the problem is in bootloader. Could you try V1 kernel https://github.com/CruelKernel/exynos9820-beyond1lte/releases/tag/v1.0
If it will work, then probably V2 will also work with +nohardening option. V1 compiled with this option, V2 without it. I will rebuild V2 then.
Click to expand...
Click to collapse
Same thing with version 1.could it be the twrp im using?
gillim74 said:
Same thing with version 1.could it be the twrp im using?
Click to expand...
Click to collapse
No, it's definitely not related to twrp. Well, I don't know what is an exact problem here, but some guys told me they were able to flash the kernel on ambassadi with data wipe or immediately after flashing the rom itself.
It would be very nice if people will just write if the kernel works or not on their roms. This will be a huge help for me.
evdenis said:
No, it's definitely not related to twrp. Well, I don't know what is an exact problem here, but some guys told me they were able to flash the kernel on ambassadi with data wipe or immediately after flashing the rom itself.
Click to expand...
Click to collapse
Data wipe or format data
gillim74 said:
Data wipe or format data
Click to expand...
Click to collapse
Data wipe should be enough. I will test compatability with Ambassadi today-tomorrow and will provide more detailed feedback. Thanks!
hello installation successfully the nikel kernel market for now
evdenis said:
Data wipe should be enough. I will test compatability with Ambassadi today-tomorrow and will provide more detailed feedback. Thanks!
Click to expand...
Click to collapse
Worked with data wipe
evdenis said:
It would be very nice if people will just write if the kernel works or not on their roms. This will be a huge help for me.
Click to expand...
Click to collapse
write me on telegram so i can say you why all get the pin code problem so you can fix it
Does this work with BSL7? Or know of kernel that will. Need my su permission to work
Paulturn84 said:
Does this work with BSL7? Or know of kernel that will. Need my su permission to work
Click to expand...
Click to collapse
Hi, no it will not work on BSL7. This kernel is for S10 (G973F) device. This device has only BSL6 firmware. BSL7 is for other devices. Try to look at nemesis kernel.
Is it possible to build magisk rooted kernel for pie (9) roms? Or it's only for Q like LOS 17?
vomad said:
Is it possible to build magisk rooted kernel for pie (9) roms? Or it's only for Q like LOS 17?
Click to expand...
Click to collapse
Download: https://cruelkernel.org/release/special/CruelKernel-G973F-ASJG-v1.1-LOS.img
This version is based on Android 9 (ASJG) sources and should work on ASIG firmwares. I've included some patches from ivanmeler LOS tree specifically for LOS. Features: Magisk v20.3, wireguard, ttl modules and cifs. Not tested
will he s10+ every be supported with this kernel?
Kirisakura-Kernel for the Pixel 6/Pro
Hello everyone,
To keep it short: Here is Kirisakura - Kernel for the Google Pixel 6 Pro aka Raven and the Pixel 6 aka Oriole, together Raviole.
I would appreciate if everybody that flashes the kernel, reads at least once through this opening post and the following ones.
The kernel aims to keep most of the subsystems updated, way ahead of the stock kernel, thereby improving security, stability and performance!
This includes Linux-Stable, F2FS-Stable and kernel/common!
If that 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.
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!
Features:
Main Features:
- Based on latest A13 kernel sources from Google, Kernel is made for Android 13
- Linux-Stable-Upstream included to 5.10.183
- Compiled with prebuilt Google clang 17.0.2
- Backport entire RCU subsystem to Linux 6.0
- Lazy RCU which should result in power-savings while the device is lightly-loaded or idling, more information here
- Backport Maple tree from Linux 6.1
- improve preallocations from maple tree (affects especially android)
- reduce necessity to rewalk the maple tree
- Per VMA-locks in conjunction with Maple Tree RCU-Mode (improve app launch time, this feature in general benefits greatly from lazy rcu!)
- further improve maple tree/per-vma locks introduced in an earlier release
- make TEO-Cpuidle util-aware (improves latency, performance and decreases energy consumption for certain workloads, more information here)
- FHD Support for Pixel 6 Pro (display is able to run at 1080p), more info here and here
- merged kernel/common (improvements to android-common-kernel straight from google)
- MM subsystem reworked (more info and some patchsets linked in this post)
- Multi-gen LRU backported/reworked and enabled (more info here, here as well and here) to improve mm and reduce cpu cycles, latest V15 state
- improvements to uclamp, prevent capacity inversion (reduce missed frames)
- greatly speed up camera launch time!
- Utilize an additional kswapd thread to increase throughput for memory reclaim
- pelt multiplier tied into powerhal to speed up scheduler during interaction (more info here)
- prevent frequency spikes caused by small transient tasks when the device is idle(more info here)
- tie mechanism to prevent frequency spikes caused by small tasks also into powerhal
- scheduler improvements for RT (realtime) tasks
- introduce and setup PMU limiter (prevents CPU from spiking to max when it isn´t needed, based on PMU reads, more information here)
- improve camera performance by tuning the powerhal during recording
- bias tasks of rt, sf and ta groups to prefer high capacity cpus during app launches, interactions
- improve app launches via powerhal
- improve trusty driver performance which connects to fingerprintscanner-hal by using high perf wq during fp unlock
- restrict maximum CPU-Freqs during screen off/ idle to 1.1GHZ for all clusters to save power
- introduce unfair f2fs rwsems to prevent writer starvation and improve IO perf under heavy load
- fuse: give wakeup hints to scheduler to speed up compress/decompress in internal storage (details)
- enable RCU_BOOST (details here), also fix RCU_BOOST behaviour
- F2FS-Stable updated
- merge and enable f2fs block_age-based extent cache (improve the accuracy for data temperature classification, reduce the garbage collection overhead after long-term data updates)
- TCP backports from mainline
- SSG IO scheduler for reduced overhead and less CPU cycles (more lightweight and android optimized)
- Scheduler updates from linux-main
- use improved energy model for exynos cpu cooling/thermal control
- allow GPU to scale down to 150mhz, but boost to higher value in case of interaction via powerhal
- affine IRQS to CPU 7 during camera usage for improved performance as it tends to overload the little cores
- use bbr as default TCP congestion algorithm (fasted algo according to this excellent research from @kdrag0n found here )
- include bbrv2 from google, more info here
- Enable support for TTL spoofing
- Include LRNG, see here and here for more info, bump to v45 with 3.0.0
- important patches from kernel/common for 5.10 (here are more details)
- CleanSlate Features from @tbalden, big applause here! (s2s, notification booster, battery saver, flashlight notifications. Please note: cleanslate features that work otherwise with rooted devices like kadaway (adblocking) are not implemented on this kernel since I´m running rooted)
- dirty pipe exploit fixed
- supports direct usb access for hi-res playback over USB-C DACs
- improve ZRAM usage
- reduce overhead
- improve performance and efficiency by properly wiring up pixel_sched with teo util awareness (thanks @ada12 for spotting this!)
- update to cpuset/cgroup subsystem (speeds up camera launches, device unlocks etc as cpusets are switched on those conditions, patches reduce overhead in those conditions)
- flashing the kernel will preserve root
Various Optimizations:
- update several drivers to use power efficient workingqueues (for example wlan driver)
- kernfs: use buffer from the stack space
- printk: use buffer from the stack space
- kthread: use buffer from the stack space
- bpf: avoid dynamic memory allocation for small value buffers
- binder: Reserve caches for small, high-frequency memory allocations
- kernfs: use kmem_cache pool for struct kernfs_open_node/file
- cgroup: use kmem_cache pool for struct cgrp_cset_link
- f2fs: reduce timeout for uncongestion
- f2fs: Demote GC thread to idle scheduler class
- f2fs: set ioprio of GC kthread to idle
- mm: vmstat: use power efficient workingqueues
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
AK3 Helper Module:
- restrict little cluster to 1,19ghz mid cluster to 1,19ghz and big cluster to 1,1ghz during screen off, to reduce battery usage for example during music playback
- only use little cores during screen off/device suspend
- tie pelt multiplier into the powerhal (more info here)
- prevent frequency spikes caused by small transient tasks during idle operation (more info here)
- boost scheduler using the pelt multiplier during fingerprint unlock operation
- setup and control PMU limiter via powerhal (more info here)
- dynamically adjust target load for memory interface during interaction
- boost memory interface controller during interaction (decreased missed frames, improved soc efficiency according to google docs)
DOWNLOAD:
Download is always located in this folder:
4.2.0, 4.3.0, 4.4.0, 4.4.1, 4.4.2 are attached to the release posts linked below as AFH is wonky at the moment.
Downloads for : -Android- Generic Device/Other | AndroidFileHost.com | Download GApps, Roms, Kernels, Themes, Firmware and more. Free file hosting for all Android developers.
Download GApps, Roms, Kernels, Themes, Firmware, and more. Free file hosting for all Android developers.
www.androidfilehost.com
Changelog:
Android 12.0.0
1.0.0 Initial Release
1.0.2 https://forum.xda-developers.com/t/...r-pixel-6-pro-aka-raven.4358435/post-85910621
1.0.5 https://forum.xda-developers.com/t/...r-pixel-6-pro-aka-raven.4358435/post-85924419
1.3.0 https://forum.xda-developers.com/t/...pixel-6-pro-aka-raviole.4358435/post-85976139
1.4.0 https://forum.xda-developers.com/t/...pixel-6-pro-aka-raviole.4358435/post-86109665
1.5.0 https://forum.xda-developers.com/t/...pixel-6-pro-aka-raviole.4358435/post-86259863
1.7.0 https://forum.xda-developers.com/t/...pixel-6-pro-aka-raviole.4358435/post-86390563
1.8.4 https://forum.xda-developers.com/t/...pixel-6-pro-aka-raviole.4358435/post-86541727
Android 12.1.0 Stable (March feature drop and more recent)
2.0.0 https://forum.xda-developers.com/t/...pixel-6-pro-aka-raviole.4358435/post-86617873
2.0.1 https://forum.xda-developers.com/t/...pixel-6-pro-aka-raviole.4358435/post-86637233
2.1.0 https://forum.xda-developers.com/t/...pixel-6-pro-aka-raviole.4358435/post-86695911
2.3.0 https://forum.xda-developers.com/t/...pixel-6-pro-aka-raviole.4358435/post-86821331
2.4.0 https://forum.xda-developers.com/t/...pixel-6-pro-aka-raviole.4358435/post-86834981
Android 12.1.0 Stable (June feature drop and more recent)
3.0.0 https://forum.xda-developers.com/t/...pixel-6-pro-aka-raviole.4358435/post-86992705
3.0.1 https://forum.xda-developers.com/t/...pixel-6-pro-aka-raviole.4358435/post-86996237
3.0.17 https://forum.xda-developers.com/t/...pixel-6-pro-aka-raviole.4358435/post-87127695
Android 13.0.0 Stable (not QPR beta!)
4.1.0 https://forum.xda-developers.com/t/...pixel-6-pro-aka-raviole.4358435/post-87290247
4.1.6 https://forum.xda-developers.com/t/...pixel-6-pro-aka-raviole.4358435/post-87399635
4.2.0 https://forum.xda-developers.com/t/...pixel-6-pro-aka-raviole.4358435/post-87524609
4.3.0 https://forum.xda-developers.com/t/...pixel-6-pro-aka-raviole.4358435/post-87697425
4.4.0 https://forum.xda-developers.com/t/...pixel-6-pro-aka-raviole.4358435/post-87823333
4.4.1 https://forum.xda-developers.com/t/...pixel-6-pro-aka-raviole.4358435/post-87944879
4.4.2 https://forum.xda-developers.com/t/...pixel-6-pro-aka-raviole.4358435/post-88118201
Raviantha 1.0.0 https://forum.xda-developers.com/t/...pixel-6-pro-aka-raviole.4358435/post-88316223
Raviantah 1.0.2 https://forum.xda-developers.com/t/...pixel-6-pro-aka-raviole.4358435/post-88399941
Raviantah 1.1.0 https://forum.xda-developers.com/t/...pixel-6-pro-aka-raviole.4358435/post-88645115
Android 12L QPR Beta - Deprecated
Spoiler
Build for Android 12 QPR Beta: https://forum.xda-developers.com/t/...pixel-6-pro-aka-raviole.4358435/post-86857033
Requirements
- the kernel is made for the stock firmware provided by Google, pay attention to flash a kernel release matching the firmware (flashing on custom roms might work, but you may need workarounds!)
- unlocked Bootloader
- USB-Debugging in developer options enabled
- latest adb and fastboot binaries
- working adb and fastboot environment so you can flash back to stock in case something goes wrong
- working magisk environment (a device rooted with latest magisk stable in case you want to be absolutely safe)
- IMPORTANT: Unrelated to the kernel, but update both slots of your phone to A13! (take a look here)
How to flash the Kernel:
1a. Make sure you tick all the requirements above
1. Download the correct kernel.zip depending on your device (Pixel 6 = oriole || Pixel 6 Pro = raven)
2. Flash the correct kernel.zip via EXKM, FKM or kernel flasher. Root will be preserved. The AK3 magisk helper module will be automatically installed during flashing the kernel.zip and be present on next reboot.
Do not remove or disable the AK3 Magisk Helper Module otherwise the device will bootloop.
3. Reboot and profit.
Manual installation is no longer supported starting with release 3.0.0, as there´s a free open-source option to flash kernel.zips now.
Instead use the free kernel flasher, which can be found here.
Spoiler: Manual Installation for 1.4.0 and higher
Manual installation without relying on paid apps like fkm/exkm:
Please have a look at the linked post.
Spoiler: OLD Instructions - 1.3.0 and older - Use only on November Firmware
Check post #5
Donations:
Donations are not mandatory but very welcome if you want to support development or just buy me a coffee/tea/beer
If you like my work: http://paypal.me/freak07
Credits:
@osm0sis for all his work on AK3.
@tbalden for being the best HTC, Pixel, OnePlus and Asus wingman!
@capntrips for all his work on the pixel 6!
@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 and his entire work!
Source Code: https://github.com/freak07
F.A.Q:
Question: How do I update my phone to a new monthly update if this kernel is installed?
Answer: The easiest solution is to just use any full firmware package to update your phone to the new stock firmware. You can do so with the android web flash tool, a factory image or a full OTA image.
An excellent guide on how to use the factory image to do so was posted by @roirraW "edor" ehT on this thread. Feel free to use this as a reference.
This also serves as the easiest way to return back to stock, if you don´t like the kernel and feel not comfortable flashing anything via fastboot.
Question: How do I return back to stock?
Answer: Extract boot.img, dtbo.img, vendor_boot.img, vbmeta.img and vendor_dlkm.img from the matching factory image provided on googles download page.
If you disabled verity/verification previously there´s no need to flash the vbmeta.img when restoring.
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. If you don't know the fastboot commands to flash the images, check the instructions how to flash those images in post #4.
Alternatively dirty flash the whole firmware without wiping by using either the android web flash tool, a factory image or a full OTA image. If you disabled the vbmeta flags, don't forget to disable them again (or tick the correct options on the web flash tool) after flashing a full firmware package and re-root.
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 supported firmware. Usually I'm announcing in the release post, the firmware the kernel.zip is compatible with, but most of the time the kernel is updated when a firmware update drops.
Please make also sure you're running 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.
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.
I recommend taking a look at this excellent collection of helpful threads from @roirraW "edor" ehT!
It can be found following this link!
Question: I get a device corrupted message after flashing the kernel or just reboot to bootloader. How to get rid of it?
Answer:
There seems to be an issue with verity on Pixel devices that can trigger randomly. That means even if the expected hashes match the device refuses to boot due to this bug.
A workaround for A12 has been shared in the following post linked here. It seems this issue happens randomly on devices without the vbmeta flags for verity/verification disabled.
Essentially flashing/booting (booting should be enough) a boot.img from an older firmware, letting it attempt to boot but fail, and then restore boot.img from the matching firmware clears the message.
If you´re doing this while having the kernel installed don´t forget to flash back to stock completely, which is also described in the FAQ.
There seem to be cases on A13, where this verity bug is still triggered during some flashes, essentially booting straight back to bootloader. It seems all cases reported here were solved by reflashing the firmware via the web flash tool from google, without wiping data. Interestingly flashing back an older boot.img was not needed there.
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.
Fastboot commands:
Flash the images in this order:
Boot to bootloader:
Either select Reboot to bootloader option via magisk manager, use the button combinations or run the following command while in the OS:
or type:
Code:
adb reboot bootloader
Now in fastboot flash boot.img, dtbo.img, vbmeta.img (vbmeta can be left out if you disabled verity/verification) and vendor_boot.img
Commands:
Code:
fastboot flash boot boot.img
fastboot flash dtbo dtbo.img
fastboot flash vendor_boot vendor_boot.img
caution with the vbmeta.img, if you disabled verity/verification flashing this images without the flags will re-enable both verity and verification! If you disabled verity/verification on your device there´s no need to restore it.
fastboot flash vbmeta vbmeta.img
Now boot to fastbootd
Code:
fastboot reboot fastboot
Once in fastbootd:
Code:
fastboot flash vendor_dlkm vendor_dlkm.img
4. Reboot either via buttons
or by typing
Code:
fastboot reboot
5. Profit![/SPOILER]
Spoiler: Deprecated. Just here for collection.
Manual Installation:
Note:
Manual Installation will not be supported and updated since 3.0.0 and going forward.
There´s a free and open source alternative to FKM or EXKM that supports flashing kernel.zips.
You can find it following this link.
Spoiler
This is for advanced users or users that don´t want to rely on paid apps to flash the flashable kernel.zip introduced with 1.4.0.
These instructions are not to be mixed with those in the first post and do apply for kernel releases 1.4.0 and more recent!
1. Download the boot images provided in the downloads section under the version you want to flash and then manual install to your PC. Make sure to use the correct ones for your device. Patch the boot.img with magisk.
Download the zip matching your device from the download folder and the version you want to flash.
From the zip extract dtbo.img, vendor_boot and vendor_dlkm.img
1.a : Download the powerhint magisk module found in downloads section and flash it via Magisk Manager like any other magisk module. Don´t forget to flash it, it´s tied to changes in the kernel. It´s crucial for the kernel to work. Without the module flashed before flashing the images the device will not boot!
2. Flash the provided images using fastboot/bootloader and fastbootd (these are seperate modes, see instructions below)
2a. Don´t forget to patch the provided boot.img in magisk manager prior to flashing it via fastboot. Of course you need to adjust your command to flash like you did when rooting the device.
3. vendor_dlkm.img needs to be flashed in fastbootd, while the other images need to be flashed via fastboot/bootloader
Flash the images in this order:
Boot to bootloader:
Either select Reboot to bootloader option via magisk manager, use the button combinations or run the following command
or type:
Code:
adb reboot bootloader
Now in fastboot flash boot.img, dtbo.img and vendor_boot.img
Commands:
Code:
fastboot flash boot boot.img
fastboot flash dtbo dtbo.img
fastboot flash vendor_boot vendor_boot.img
Now boot to fastbootd
Code:
fastboot reboot fastboot
Once in fastbootd:
Code:
fastboot flash vendor_dlkm vendor_dlkm.img
4. Reboot either via buttons
or by typing
Code:
fastboot reboot
5. Profit!
Instructions for flashing Release 1.3.0 or below.
These kernel releases are only for November firmware. They will bootloop on anything that´s more recent.
Spoiler: Instructions - Release 1.3.0 and older -Only for November Firmware
0. Do not use this if you´re on any firmware more recent that November 2021!
1. Download the images provided in the downloads section to your PC.
1.a Optional: Download the powerhint magisk module found in downloads section and flash it via Magisk Manager like any other magisk module.
2. Flash the provided images using fastboot/bootloader and fastbootd (these are seperate modes)
2a. If you want to stay rooted patch the provided boot.img in magisk manager prior to flashing it via fastboot. Of course you need to adjust your command to flash like you did when rooting the device.
3. vendor_dlkm.img needs to be flashed in fastbootd, while the other images need to be flashed via fastboot/bootloader
How to boot to fastbootd
From running phone:
Code:
adb reboot fastboot
From fastboot/bootloader:
Code:
fastboot reboot fastboot
Once in fastbootd:
Code:
fastboot flash vendor_dlkm vendor_dlkm.img
Boot from fastbootd to fastboot/bootloader to flash dtbo.img and boot.img:
Either select Reboot to bootloader option via buttons
or type:
Code:
fastboot reboot bootloader
Now in fastboot flash boot.img and dtbo.img
Commands:
Code:
fastboot flash dtbo dtbo.img
fastboot flash boot boot.img
4. Reboot either via buttons
or by typing
Code:
fastboot reboot
5. Profit!
So glad to see you here. Such a staple in this community.
Let the Development Begin for the Pixel 6 Pro! kudos
Please post in pixel 6 forum also I will test when I get home
great to you made good progress
Confirmed working on pixel 6, testing now! thanks for the hard work
I have the error FAILED (remote: No such file or directory) for flashing vendor_dlkm in fastbootd mode, does anyone has any clue why?
edit: Never mind, used a different fastboot/adb and it works.
Can confirm works perfectly on Pixel 6 now for one of us to get a working twrp or other recovery.img
allenjthomsen said:
Can confirm works perfectly on Pixel 6 now for one of us to get a working twrp or other recovery.img
Click to expand...
Click to collapse
Works here perfectly as well here too.
I know the kernel is barebones but i wanted to know if there's any Wireguard implementation within the kernel. Thanks dev for your hard work.
@Freak07 My goodness great work sir! The first custom kernel for the OnePlus 6 Pro.
So far running very well!
Just some few early unusual observations, and this might be my only unit doing this:
1) Device is slightly snappier now. But this seems to come at the cost of fluidity. Doesn't feel quite as smooth as stock kernel.
2) When the device is charging, the charging device vibration haptics randomly buzzes from time to time - when a cable is plugged in. It would never do this on stock kernel. Again. Might be just some sort of weird fluke as I just literally flashed this.
Is it possible you could implement KCAL color commits to alter saturation white point controls? If there's ever a device that needs it, I'd say it's this one. That yellowish piss hue on the screen is simply gross. The six Pro has the clearest screen I've ever seen, but the color reproduction looks nothing short of horrendous. I don't understand why Google doesn't implement white point or wide color gamut support on Pixel devices. It's a night and day difference to your eyes. I love that dopamine kick from seeing beautiful, vibrant colors.
EDIT: Also, I can't stress enough. This first build is nothing short of amazing. I know it's super tough because this is all new stuff.
Could you possibly consider adding some CAF boost controls sometime in the future? It's so awesome to build and make the device a little bit snappier on command^
EDIT 2: this might be far too early to tell, but there seems to be a bug with charging. Along with the random vibrations going off, the charging speed is unusually slow. Again, this might be only my device doing this (Fluke) so maybe other people can concur.
EDIT 3: just noticed another bug. Again. This might be only my device. LTP0 doesn't seem to work. Everything is locked at 120 Hertz. Not sure would have caused that. I've rebooted a few times and it's still there. I can provide any logs of necessary.
Zilla0617 said:
I know the kernel is barebones but i wanted to know if there's any Wireguard implementation within the kernel. Thanks dev for your hard work.
Click to expand...
Click to collapse
Wireguard was implemented by Google in the Android 12 kernel.
Google adds WireGuard VPN to Android 12's Linux Kernel
Google just made a big move to bring WireGuard VPN kernel acceleration to Android 12 by merging support in Linux Kernel 4.19 and 5.4 trees.
www.xda-developers.com
vassosman said:
Wireguard was implemented by Google in the Android 12 kernel.
Google adds WireGuard VPN to Android 12's Linux Kernel
Google just made a big move to bring WireGuard VPN kernel acceleration to Android 12 by merging support in Linux Kernel 4.19 and 5.4 trees.
www.xda-developers.com
Click to expand...
Click to collapse
I prefer to activate it without the slower VPN key method. If you have a custom kernel, you can activate it in the background (without the VPN key). Right now if try to activate Wireguard on the stock kernel the tunnel is created via the key.
I just had a reboot. I've attached my pstore folder.
same getting random reboots every so often
ill get my pstore and upload it for you in a few
Awesome, now a reason to get root.