As of July 11th, 2018, this kernel has been discontinued as I have sold the device. Since I don't recommend using a kernel that is not constantly updating, I suggest looking at RenderZenith if you are on OxygenOS or Singularity if you are on a custom ROM.
Hello everyone, this is my personal kernel for the OnePlus 5. While I am not a super star kernel developer, I do know my way around it. My philosophy on kernels is pretty simple:
- Follow stable Linux always. Updates will be delivered within 24 hours of their release to kernel.org.
- Stable kernel rules work best (only add small things when possible).
- Security and stability are paramount. Vulnerabilities are patched as soon as they are disclosed.
- Features will be added only as needed (I have a list of things in the FAQ I will NOT add, even if requested).
Important thread information!
- I refuse to acknowledge/respond to bug reports that do not include clear steps to reproduce, a logcat, and a console ramoops (if random rebooting) or a dmesg (any other issues). Follow this guide to do this.
- Keep things civil, I do NOT tolerate flaming of any kind.
- OT is allowed.
NOTE: This list fluctuates with versions, it will not always been 100% up to date
Here are the major features of the kernel (feel free to explore Github)
- Up to date with OOS (5.1.3 and Open Beta 12)
- Custom branch compatible with most 8.1.0 ROMs (see below)
- Up to date with the latest stable Linux version (4.4.140)
- Up to date with the latest CAF tag for Oreo (LA.UM.6.2.r1-09300-sdm660.0)
- Mainline patches from Linux, focusing on bug fixes/security
- Mainline CFQ scheduler improvements
- Kernel hardening from CopperheadOS
- Several subsystems converted to use power efficient workqueues
- The following user facing features:
- Accidental touch protection on hardware keys
- Backlight dimmer
- KCAL color control
- Maple I/O scheduler
- Sound control
- Wakelock control
- Latest WireGuard snapshot (0.0.20180708)
- Westwood as the default TCP algorithm
- Built with a self compiled Clang 7.0 toolchain with a local initialization sanitizer (build script here, previously built with the latest Google Clang 6.0 toolchain here)
- Hides bootloader unlock from SafetyNet (can still fail through other means)
- Disables dm-verity
- Does NOT modify decryption status
- Flashed with AnyKernel2 (thanks to @osm0sis)
NOTE: The newer builds of 3.x and 4.x are unified! The zip will dynamically detect if you are on OxygenOS or a custom ROM and flash the correct kernel image.
NOTE #2: 3.x is for OOS 5.x 8.0, 4.x is for OOS 5.x 8.1
If you are on stock:
- If you are on the stock kernel: flash the kernel zip and reboot
- If you are on a custom kernel: flash the stock boot image matching your build number, flash the kernel zip, and reboot. I would also recommend dirty flashing the latest OOS zip as well.
- If you are on the kernel that came with your ROM: flash the kernel zip and reboot
- If you are on a custom kernel: dirty flash your ROM zip, flash the kernel zip, and reboot
Just flash the kernel zip and reboot
Through Franco Kernel Manager (requires root):
Getting back to stock if necessary (only needed if coming from another kernel):
- Grab the latest stock boot image from the OTA zip.
- Click on "Manual flasher", select the boot image, and select "Just Flash".
- Reinstall Magisk through Magisk Manager (Install -> Direct Install).
If on stock or upgrading from another Flash release:
- Download the zip (and optionally, the md5) from the link above
- Tap on "Manual flasher"
- Navigate to Download
- Tap on the zip, select Auto-flash, and choose one of the options.
- Reboot and enjoy!
Latest release post!
GitHub serves as the ultimate changelog, links are at the bottom of this post
Frequently asked questions
1.1 Q: I am having an issue, can you help me?
1.1 A: I am not an amazing kernel developer but I will certainly try my best. First, start by reading the release posts, as I may make note of a particular issue. Also search the thread to see if I have discussed it before. If you see nothing, please provide me with a dmesg/last_kmsg and logcat, your ROM/kernel version, and a detailed description of the issue, following this guide. If I can't reproduce reliably, I'm not going to fix the issue.
1.2 Q: What ROMs are compatible with the custom builds?
1.2 A: As of March 14th, 2018, I have confirmed the following ROMs are 100% compatible with Flash:
- Dirty Unicorns
- Codename: Phoenix
If you are using a ROM with no issues, let me know and I'll add it here! If you are having issues, following the above steps and I'll attempt to fix whatever incompatibility there is. If I can't do it without breaking LineageOS/Dirty Unicorns, you're out of luck.
1.3 Q: Can you add xyz feature?
1.3 A: If you link me the commits or tell me what kernel you had the feature in, I can take a look at them. I will not go digging super hard for commits and I will ignore requests that don't include this information. I won't promise that I will merge every request but I will always take it into consideration. I will NOT add the following:
- Overclocking or underclocking of CPU or GPU
- Any governors other than interactive
- Any schedulers other than cfq and maple
- Anything that compromises performance
1.4 Q: How do I control the kernel?
1.4 A: I want to be very clear: the kernel does NOT need to be tuned to be useful. Most of the improvements are under the hood and don't require any user intervention to take advantage of them. In fact, if you don't know what you are doing, you could degrade the experience.
To control the user visible features of the kernel listed above, I recommend using either @franciscofranco's Kernel Manager for Franco Kernel (which has Flash Kernel support for downloading and automatically flashing the latest kernel zip along with some nice, user friendly ways for tuning the kernel) or @flar2's EX Kernel Manager.
1.5 Q: OMFG MY BATTERY SUXXXX PLS FIX!!!
1.5 A: The kernel doesn't drain any battery, use an app like BetterBatteryStats to figure out what app is screwing with your phone.
1.6 Q: I am not getting notifications on OOS, what is the cause?
1.6 A: This could be for a couple of reasons. If you haven't already, disable advanced optimizations in Settings > Battery > Battery optimization > Three menu dots. Another reason may be that I ship a compiled Wi-Fi module. I do this for two reasons: I want to have the latest fixes and I enable CONFIG_MODULE_SIG, which checks the signature of a module before loading it for security reasons. This could introduce some incompatibility with OOS, which is something I have no control over.
The various other developers for their patches (specifically @zx2c4 for WireGuard and @joshuous for fixing the notification delay on Wi-Fi)
@osm0sis for AnyKernel2
@franciscofranco for adding Flash Kernel support to Kernel Manager for Franco Kernel
@adinkwok for being a bro
@phantom146 for the thread banner
All of you guys for viewing the thread
A note about donations
Quite a few people have asked to donate to me in the past and I have turned them down. I am not in this for the money, this is my hobby, something I truly enjoy. If you truly want to donate to something (it is not expected in the slightest), I recommend an entity like the Open Source Initiative, the Free Software Foundation, XDA, or any one of the people I have thanked in the OP. Additionally, you are free to copy any and all of my work; the only thing I request is that you not ask for donations as well (though I can't really enforce this lol). Thank you.
Kernel source links
7.1.x (OxygenOS - 1.x): https://github.com/nathanchance/op5/commits/7.1.x-oos
7.1.x (custom ROMs - 1.x): https://github.com/nathanchance/op5/commits/7.1.x-custom
8.0.0 (OxygenOS - 2.x): https://github.com/nathanchance/op5/commits/8.0.0-oos
8.0.0 (custom ROMs - 2.x): https://github.com/nathanchance/op5/commits/8.0.0-custom
8.0.0 (OxygenOS - 3.x) and 8.1.0 (custom ROMs - 3.x): https://github.com/nathanchance/op5/commits/8.x-unified
8.1.0 (OxygenOS - 4.x) and 8.1.0 (custom ROMs - 4.x): https://github.com/nathanchance/op5/commits/8.1.0-unified
AnyKernel (7.1.x): https://github.com/nathanchance/AnyKernel2-archive/commits/op5-flash-7.1.x
AnyKernel (8.x): https://github.com/nathanchance/AnyKernel2-archive/commits/op5-flash-8.x
DISCLAIMER: I openly welcome off topic in my threads. Mods, please do not clean off topic discussion and users, do not complain about off topic discussion here. I may direct you to another thread if it is so suited but I won't have the discussion cleaned. Thank you.