arter97 kernel for OnePlus 7 series running OxygenOS
/* Features */
Supports OnePlus 7, OnePlus 7 Pro, OnePlus 7T and OnePlus 7T Pro
Fully rebased kernel without unnecessary OnePlus' code
Latest CAF msm-4.14 kernel fully merged
Using zswap + vnswap to replace zram
- Ditched conventional zram swap approach for more efficient memory operations
- Backported zsmalloc memory allocator from mainline
- Backported zswap compressed page cache from mainline
- Samsung's Galaxy S9 memory modifications merged for better swapping efficiency tuned for Android
Use CONFIG_HZ = 300
Optimized power configuration
BBR as the default TCP network congestion control
vDSO 32 patches to improve 32-bit performance
vmalloc backported from mainline to improve memory allocation performance
Latest Linux 4.14 subversion merged
DM-verity fully disabled (you can remount /vendor to R/W properly)
Timer optimizations
Additional power savings applied to the display panel
RTL8152/8153 USB LAN adapter support
Passes SafetyNet
Built with -O3 speed optimizations
Built with latest GCC
UFS optimizations
Entropy hook on storage removed
Latest mainline f2fs support with GC fixes
CFQ I/O scheduler backported from mainline
Systemless installation (the kernel doesn't touch /system or /vendor)
Modules support disabled for lighter kernel
WireGuard support
Removed RTB(interrupt) logging entirely
No VLAs(info)
A whole lot more...
/* Details */
- Fully rebased kernel without unnecessary OnePlus' code -
This kernel is not based on stock OxygenOS kernel source provided by OnePlus. Instead, it’s based on the latest and greatest Qualcomm has to offer. Only the necessary parts from the OnePlus kernel has been cherry-picked, such as OnePlus 7 specific device drivers.
This brings 2 major changes: less debugging code and an overall lighter kernel.
There are miscellaneous changes made by OnePlus that are supposed to maximize utilization of system memory. But seeing how it’s implemented(heavily relying on zram and a physical writeback swapfile), I decided to remove it entirely.
Users are recommended to disable the “RAM Boost” feature from Settings > System > RAM Boost.
Due to the completely different base, the memory management with this kernel will be drastically different from other kernels.
- Latest CAF msm-4.14 kernel fully merged -
This kernel is also constantly merging the latest Qualcomm Android 4.14 kernel. This tag contains more up-to-date changes from Qualcomm than the regular Snapdragon 855 tag(sm8150).
- Use CONFIG_HZ = 300 -
This changes the context switching interval from 10ms to 3.33ms. Pixel used this for years and Google recommends other vendors to do the same for less jitter.
This is even more important on displays with higher refresh rates.
- Optimized power configuration -
Stock OnePlus configuration forces display-related processes to use the Gold cluster(formerly known as big cores) exclusively.
This configuration brings a huge power regression since it makes every frame dispatch to wake up and use Gold cores.
This kernel resets this profile to use the configuration Google recommends, which is to use the Silver cluster(formerly known as LITTLE cores) exclusively instead. No performance penalty was noticed with this change while massively improving battery life.
- BBR as the default TCP network congestion control -
BBR is a (relatively)new TCP congestion control developed by Google, and it’s regarded as one of the best things you could do to your network configuration. You can find its benefits easily just by Googling BBR. I’ve been personally running BBR for months on various Linux machines including the server running arter97.com and it’s been great.
Now that our Android kernel is running v4.14, I’ve enabled BBR and backported other BBR changes from mainline.
/* Notice */
5G variant is unsupported.
Only OxygenOS is supported, but it is likely that the kernel will work with other ROMs. Though you may encounter minor issues.
Feel free to tip me which commits are needed to fix other ROMs.
/* f2fs */
r61+ allows using f2fs on OnePlus 7T and OnePlus 7T Pro.
This kernel fully supports f2fs for /data and I encourage everyone to use f2fs with my kernel for better performance.
See here as to why you might want f2fs.
The process differs with T and non-T series.
/* T variants */
The kernel now detects whether the userdata is in f2fs format and patches fstab on boot for OnePlus 7T and 7T Pro users during boot.
This is done in a volatile manner, which means your system files are not modified and using other kernels will revert the effect.
This is half of the puzzle.
The other half of the puzzle is to getting userdata partition into the f2fs format.
Due to lack of a proper recovery for the OnePlus 7T, I patched up f2fs-tools to support formatting while the Android is up and running.
You can use Franco Kernel Manager's flasher to flash the live-formatter.
This obviously removes all data on the device.
Please make sure your data is fully backed-up.
f2fs live-formatter:
https://arter97.com/browse/f2fs/liveformat
Existing f2fs users won't be affected by any of these changes.
Note that the OnePlus 7T and 7T Pro's OxygenOS has an issue handling FBE(File-Based Encryption) with f2fs(which is presumably why they left it out while the OnePlus 7 Pro had it), and encryption will be disabled when you use my kernel's f2fs live-patching feature.
Without encryption, your entire data will be in danger if you lose your device.
Please use f2fs if you understand this trade-off.
(Non-T series users can safely use f2fs with encryption.)
f2fs installation steps:
1. Download and install my kernel.
2. Download and install f2fs live-formatter.
OxygenOS OTA steps:
1. Install OTA and DO NOT reboot.
2. Download and install my kernel using Franco Kernel Manager.
3. Reboot.
Re-format into ext4 steps:
1. Use stock recovery and perform a factory reset.
Re-format into f2fs steps:
1. Use stock recovery and perform a factory reset and turn the userdata back to ext4.
2. Reboot to Android.
3. Download and install f2fs live-formatter using Franco Kernel Manager.
/* Non-T variants */
TWRP is not integrated to the kernel.
Please use a TWRP installer to install TWRP on top of my kernel.
To use f2fs, simply format /data to f2fs with TWRP.
Afterwards, flash f2fs-optimize.zip from http://arter97.com/browse/f2fs/optimize
There’s no need to flash separate zip files for replacing f2fs-tools or fstab.
/* Disclaimer */
Your warranty is now void.
I am not responsible for bricked devices, dead SD cards,
thermonuclear war, or you getting fired because the alarm app failed. Please
do some research if you have any concerns about features included in this kernel
before flashing it! YOU are choosing to make these modifications, and if
you point the finger at me for messing up your device, I will laugh at you. Hard. A lot.
/* Thanks to */
TheCrazyLex
xboxfanj
kdrag0n
nathanchance - for android-linux-stable
/* Instructions */
1. Read the above. Please.
2. Flash the zip file from your existing TWRP recovery.
2.1. FK Kernel Manager also works for installation. EXKM is unsupported and reported to brick the device due to installation failures.
/* Downloads and links */
r30 and up only supports Android 10
arter97.com
Kernel source
XDA:DevDB Information
arter97 kernel for OnePlus 7, Kernel for the OnePlus 7 Pro
Contributors
arter97
Source Code: https://github.com/arter97/android_kernel_oneplus_sm8150
Kernel Special Features:
Version Information
Status: Stable
Created 2019-07-28
Last Updated 2020-10-18