[OnePlus 5 ROMs, Kernels, Recoveries, & Other Devel] nathanchance:
​

Introduction

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).

Hopefully you enjoy :)

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.

Features

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

Sweep2sleep

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 [MENTION=4544860]osm0sis[/MENTION])

Downloads

Primary: https://github.com/nathanchance/op5/releases

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

Installation

Through TWRP:

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 a custom ROM:

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

Upgrading from one Flash version to the other:

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!

Changelog

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:

LineageOS

Dirty Unicorns

Codename: Phoenix

GZOSP/Validus

OmniROM

AICP

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

Undervolting

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 [MENTION=3292224]franciscofranco[/MENTION]'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 [MENTION=4684315]flar2[/MENTION]'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.

Thanks to:

The various other developers for their patches (specifically [MENTION=5434776]zx2c4[/MENTION] for WireGuard and [MENTION=6745491]joshuous[/MENTION] for fixing the notification delay on Wi-Fi)

[MENTION=4544860]osm0sis[/MENTION] for AnyKernel2

[MENTION=3292224]franciscofranco[/MENTION] for adding Flash Kernel support to Kernel Manager for Franco Kernel

[MENTION=5284595]adinkwok[/MENTION] for being a bro

[MENTION=6638584]phantom146[/MENTION] 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.