• XDA Forums have been migrated to XenForo. We are aware of several issues including missing threads, logins not working, and more. To discuss, use this thread.

[Kernel][Overclocked] No Gravity [Android-11,10,9...][2020-09-27][ProtonClang]

Pierre2324

Senior Member
Oct 25, 2015
1,450
2,114
113
22
NoGravityKernel




No Gravity Kernel 2.0 + 4.0 App Trailer

Hey, NoGravity Kernel dev coming from the good old OnePlus 2 here! I'm a graduating student in computer science and I actually work as a programmer. I made a pretty solid kernel for that old Oneplus device and even added Energy Aware Scheduling (EAS) support to it backporting new features like Dynamic Schedtune Boosting to this old 3.10 kernel. With it being pretty much at its apogee, I need a new challenge on a newer kernel (4.9+) while keeping NGK's mindset of Performance/smoothness while getting decent battery life due to added battery oriented features.

For those who want a to know more about my work here is the link to NoGravity Kernel for OnePlus 2.


The Kernel will boot using stock (Pocophone F1) CPU & GPU frequencies that correspond to the Balance Profile. Overclocked frequencies can be selected in any kernel manager app. Other profiles for battery, performance and gaming can be switched to in my app.


To tweak the kernel easily, here's my No Gravity app! featuring custom profiles (Battery, Balanced, Performance and Gaming). My app offers some features that cant be found in other kernel tweaking apps. You can find them lower in the thread.)


-No Gravity app! support
-Android R (11) ready
-Rebased to full Q CAF (LOS Staging)
-OxygenOS Ports support Please read compatibility section
-9.1.24 & 10.3.7 Novatech Touchscreen Firmware
-Updated, Cleaned up & Optimized NVT/FTS Touchscreen drivers for latency and responsiveness and reduced touch issues
-The two CPUs (Silver and Gold) can be configured completely separate in terms of min/max frequencies and governors
-Unlocked PUBG HDR+Extreme options (Disabled by default, enable it in app)
-CPU Next frequency selection tunable (linear/expnential)
-GPU Overclocked to 835 MHz (GPU overclock/underclock is possible)
-GPU Underclocked to 160 MHz on idle
-Using Evaluation Thermals
-Own Thermal Suspend API
-Own Thermal Locking Mecanism (Mostly for using NGK thermals on MIUI)
-NAP power saving state for Adreno 630 GPU
-Dynamic Stune Boost
-Devfreq boost and Cpu Boosting drivers
-Moved from ZRAM to ZSWAP+VNSWAP (Still disabled by default)
-FSync Control (ON/OFF)
-Faster Applications Opening speed
-Slimbus Overclock
-Added Fingerprint boost
-Added WakeBoost module
-Added and Using ZEN I/O Scheduler as default for app opening speed && overall Smoothness
-Added Maple, SIO, FIOPS, BFQ, ANXIETY I/O Scheduler
-Westwood(Default) & BBR TCP Algorithms
-DTS Headphone X Software Drivers
-Sound Control support
-Vibration Control
-Charging throttling removed
-Maximum charge rate over USB 3.0
-WireGuard support
-USB Ethernet support
-Controller support
-DriveDroid support
-HDR Video Playback support
-KCAL support
-K-Lapse 5.0 support
-Network Guru app support
-Blocked and tweaked wakelocks (Boeffla & more)
-Fingerprint improvements
-Caches optimisations
-Compilation optimisations
-Debloated
-F2FS Support with GC
-Compile with Proton Clang + Polly + Thin LTO
-Latest CAF Tags merged in
-Always upstreamed to latest! (4.9.237)
-And many more under the hood changes...



-Kernel & App update checker (Direct install of kernel and app on Pocophone) + Selection between touch firmware versions
-Balance(Default),Performance,Battery,Gaming & Gaming+ Profiles (QSTile available)
-Custom Profile Creator Page that let's you create and share profiles with the NGK community (/SDCARD/NGK/PROFILES/)
-Precise CPU temperature for both Clusters separately
-CPU Page with following tunables:
-CPU Governor
-CPU Frequency Selection Algorithm (Linear/Exponential)
-CPU Min/Max Frequencies
-NGK Stats Page showing last gaming session FPS+ Chart, battery drain, avg CPU temps & avg Battery temps, toggle for enabling NGK Stats Overlay displaying FPS and following optional features:
-CPU Temps/Freqs
-GPU Temps/Freqs
-Battery Temps/Percentage
-Kernel Page to let you control:
-App optimization (ART) Button
-Thermals:
NoGravity (NGK’s default) || Battery || Stock one
-Battery Thermal Throttling Removal:
ON (NGK’s default) || OFF
-PUBG HDR+Extreme config unlocker
-GPU Page:
-GPU Stats
-Max GPU Freq Selector
-KLapse (Brightness and Daytime modes)
-Backlight Dimmer
-Proximity Gestures Switch to pulse ambient dispay on Hand Wave
-Pick-Up Gesture Switch to pulse ambient display when device is taken
-Pixel 3 Flip to Shhh feature
-DTS Eagle (Sound) Info Page
-More will be added...



-More features...
-Let me know what you want and those may be added!


This kernel should work on any ROM/Ports! Since I love OnePlus and I'm myself a OnePlus 2 user, I will do my best to fully support OOS ports.
Reported to work on: OnePlus 6 Holi Edition, OnePlus 7 OB8 & OB8 Quince, Quarantine Edition. OxygenOS devs do not support custom kernels so if you face any issues with NGK don't post in their groups, post here instead.


-I recommend before coming to conclusion, give it at least 2 complete charge cycles and then raise any issue.
- I recommend to use my app, franco app or EX Kernel Manager if you need to tweak the kernel further
-CPUs since Snapdragon 845 can't be overclocked from kernel this is why it is removed


-Flash No_Gravity_Kernel-vX.X.zip file in TWRP (Latest TWRP Recovery Recommanded)
-(Optional) - Clear cache and Dalvik => if you do so, Use App Optimization button in NGK App.







Download No gravity Kernel / Download No Gravity App
Donate me! / Telegram Group /
No Gravity App Changelog / No Gravity Kernel Changelog




-The android community and to all my testers for using my kernel and your precious feedbacks and ideas!.
-thanasxda for his experience/knowledge on the Pocophone
- @[COLOR="#00b5d3"]_undead[/COLOR] & @[COLOR="#00b5d3"]Wmbruckner[/COLOR] for the crowdfunding
-Followings for their donations!
@[COLOR="#00b5d3"]Wmbruckner[/COLOR]
[email protected]
[email protected]
[email protected]irE
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]


Contributors
Pierre2324
Source: https://github.com/Pierre2324/NGK_android_kernel_xiaomi_sdm845
Version Information
Status: Stable
Current Version: 2.0.0
Created: 16-11-2019
Last Updated: 27-09-2020
 

Attachments

Last edited:

Pierre2324

Senior Member
Oct 25, 2015
1,450
2,114
113
22
Changelog





Previous Changelogs:






3.5 App Changelog



NoGravity Kernel App v3.4.2:
General:
  • Changelog/Update page is now scrollable in case of big changelogs to see download buttons
  • App now checks for update when app is resumed also (not just when app is launched)

Pocophone F1-Mi8:
  • Fixed an issue where frequencies were shown over CPU and GPU labels when turning off respective temps in NGK Stats Overlay

OnePlus 2:
  • Nothing specific to OP2 added

NoGravity Kernel App v3.4.1:
General:
  • Changed text of update checker button 'View changelog' to 'Download!' when an update is present
  • Other small fixes

Pocophone F1-Mi8:
  • Updated NGK Stats Overlay UI
  • NGK Stats Overlay doesn't block input touches anymore
  • Better FPS Idling algorithm to prevent bad user's FPS stats when display isn't refreshed (e.g just looking at launcher)
  • Last session average FPS now updates right after toggling off the switch when in NGK app

OnePlus 2:
  • Nothing specific to OP2 added

1.4 Build:
NoGravity Kernel App v3.4:
General:
  • Updated Profiles
  • New App & Kernel Update checker
  • Small fixes

Pocophone-Mi8:
  • Modified NGK Thermals to fit NGK thermal locking mecanism
  • DT2W Toggle added to Kernel Page (mainly for OOS)
  • Updated Backlight Dimmer
  • New NGK stats page
    -Shows last session average FPS
    -NGK overlay service toggle to show FPS,CPU & GPU stats in real time on screen

OnePlus 2:

  • nothing specific for oneplus 2 has been added

Kernel 1.4:
  • NoGravity Thermal locking mecanism
  • OxygenOS Crack*
  • Add DT2W node for OxygenOS and enabled by default
  • Input boost driver cleanup
  • Touch drivers tweaks
  • GPU max stable overclock dropped to 800MHz (835MHz still available)
  • Rebased Techpack Drivers (Fixes Mi8 sound issue)
  • Updated profiles
  • Brought back updated Wireguard
  • Added back HDR playback feature
  • Removed old CPU governors
  • Network GURU app can now be opened
  • Merged latest CAF tag
  • Updated to latest Anykernel
  • Always upstreamed to latest (4.9.215)
  • And many more under the hood changes/optimisations

Notes:
  • Now Kernel comes in Pie and Q versions only, if you are still on Pie blobs simply use Pie kernel
  • Kernel and app updates will now show up when they are released on main page of NoGravityKernel App along with device specific changelog and download buttons
  • NGK Thermal Locking Mecanism prevents ROMs from overriding a thermal selection (Mainly MIUI) (when NGK Thermals are ON only, when they're OFF, ROM will have it's default behavior)
  • NGK now boots on OxygenOS, OOS developers do not support custom kernels so if there are any issues do not report in their groups.

1.3 Build: Welcome to Mi 8!

NoGravity Kernel App v3.3:
General:
  • Updated Profiles
  • Lowered Magisk Toast Messages*
  • Max GPU Freq Selector
  • Added an option to refresh GPU Stats
  • Updated descriptions

Pocophone-Mi8:
  • New GPU Page:
    -GPU Stats
    -KLapse (Brightness and Daytime modes)
    -Backlight Dimmer

OnePlus 2:
  • DDR Input Boost Toggle

Kernel 1.3:
  • Fixed Screen Freezes
  • Updated Profiles
  • GPU min 160MHz, GPU max 835MHz
  • GPU optimisations (Governor, Latency)
  • Better CPU idling
  • Optimised Schedutil Governor
  • Changes to EAS Energy model
  • Updated schedtune,devfreq boosts
  • Better app opening speed
  • Exposed a Dynamic Stune Boost Duration tunable to userspace (Now independent to input boost duration) -Small changes to input boost
  • Sched cleanup
  • Added FIOPS,BFQ,ANXIETY I/O Schedulers
  • Updated thermals
  • Brought back RCU 4.14 backport
  • Vibration Control
  • Compiled with DragonTC
  • Huge compilation optimisations for performance
  • POLLY Optimisations
  • Debloated even more
  • Now Permissive by default, Android 10 Q blobs don't seem ready yet
  • Always upstreamed to latest! (4.9.212)
  • And many more under the hood changes...

Notes:
  • Max GPU frequency of 835MHz is only reachable manually as I don't consider it fully stable. On the other side, 820MHz Overclock is stable and is used in my profiles.
  • I wanted to use relatively longer dynamic schedtune boost duration compared to input boosts so made them separate in terms of length.
  • I would recommend turning off No Gravity app toast notifications from Magisk Manager app.


1.2 Build:

NoGravity Kernel App v3.2:
General:
  • Updated Profiles
  • Auto-dismiss Apply on boot notification
  • Updated descriptions

Pocophone:
  • New Kernel Page to let you control:
    -Thermals:
    Stock one || Evaluation (NGK’s default)
    -Thermal Suspend API:
    OFF || ON (NGK's default)
    -Battery Thermal Throttling Removal:
    OFF || ON (NGK’s default)
    -SELinux Switch:
    Enforcing (NGK’s default) || Permissive
  • New DTS Eagle (Sound) Page

OnePlus 2:
  • Fixed App opening on AGK
  • Fixed EAS Dynamic Schedtune Bug

Kernel 1.2:
  • Updated to latest Touch Firmware
  • Updated with Xiaomi Q Kernel Source (Touch,Sound,PSU,WLAN,GPU,etc)
  • Silver cluster will now ramp all the way down to 300MHz for better idle drain
  • Removed some GPU latency
  • Underclocked GPU on idle to 170MHz (from 180MHz)
  • 820MHz GPU frequncy step added between 710MHz & 835MHz
  • New Thermal Suspend API
  • FSync Control (ON/OFF)
  • DTS Eagle Software Driver
  • Bluetooth changes
  • Optimisations, Removed some bloat
  • Bluetooth Fixed
  • Wifi Speed Meter Fixed
  • Random Reboot Fixed
  • Blackscreen issue Fixed
  • SmartPack/Kernel Adiutor issue Fixed
  • Camera Fix for MIUI Q and ROMs with Q-Blobs (see separate build)
  • Updated AnyKernel3 changes (No Need to flash magisk after updating!)
  • Always upstreamed to latest! (4.9.210)
  • And many more under the hood changes...

Notes:
  • Thermal Suspend API : This is a small API I’ve written in the kernel directly (to make sure no background services are running for it) that unsets NGK thermals when screen turns off and enables them back when screen is turned back on. (This fixes some issues on some specific ROMs where screen wouldn’t turn on or phone would random reboot while device sleeps or is charging)
  • There is now a camera fix version to fix camera on ROMs with Q-Blobs like MIUI Q, so if your camera isn't working flash this one.

Kernel 1.1 Pie Edition:
  • NoGravity Kernel v1.1 now working on Pie ROMs
  • Using v1.0 Base

Notes:
  • This kernel uses v1.0 base so will work on both Android Pie and Q ROMs/Ports/MIUI
  • From now on releases will be separate in 2 builds: [9] and [10]. People on Android 10 should use [10] builds since it is rebased to Full Q CAF sources even tho [9] build would still work.


1.1 Build: Welcome to No Gravity Kernel App for Pocophone!

NoGravity Kernel App v3.1:
  • Pocophone F1 support added
  • Balance(Default),Performance,Battery & Gaming Profiles*
  • Precise CPU temperature for both Clusters separately

Kernel 1.1:
  • Rebased completely to full Q CAF (LineageOS Staging)
  • Removed CPU overclock*
  • Removed charging throttling*
  • Many Optimisations
  • F2FS updated with GC and changes
  • Debloated the Kernel
  • Westwood(Default) & BBR TCP Algorithms added
  • Using 2048kb read ahead
  • Fixed ZEN I/O Scheduler initialisation
  • Picked port of RCU's taken from 4.14
  • Updated SDFAT to EXFAT
  • Removed a CPU boosting driver that could conflict with another
  • Battery oriented tweaks
  • Tried to fix random reboots and other issues some people were getting
  • Always upstreamed to latest! (4.9.206)
  • And many more under the hood changes...

Notes:
  • Profiles also have a QSTile for fast switching
  • If you didn’t already know it was only placebo/performance wouldn’t change, but don’t worry there are other ways to make performance better
  • If you want charging throttling, you can set it back on here by setting the value to N instead of Y: sys/modules//sys/module/smb_lib/parameters/skip_thermal
  • MIUI ROM/Port variants may have some issues but I didn't have much testers on those so please send logs if you have issues


1.0 Build: Welcome to Android 10 & Pocophone!

Kernel:
  • Overclocked CPU (Silver 1.76->2.0Ghz, Gold 2.8-> 3.0Ghz) (Will boot with stock clocks)
  • Energy model modifications to fit NGK overclocked frequencies
  • GPU Overclocked to 835 MHz
  • GPU Underclocked to 180 MHz on idle
  • Using Evaluation Thermals (For now..)
  • NAP power saving state for Adreno 630 GPU
  • Added Adreno Idler
  • AdrenoBoost
  • Dynamic Stune Boost
  • Devfreq boost and Cpu Boosting drivers
  • Disabled ZRAM
  • Faster Applications Opening speed
  • Slimbus Overclock
  • Added Fingerprint boost
  • Added WakeBoost module
  • Added and Using ZEN I/O Scheduler as default for app opening speed && overall Smoothness
  • Added Maple, SIO and FIOPS I/O Scheduler
  • Power Efficient Workqueues
  • Sound Control support
  • Maximum charge rate over USB 3.0
  • WireGuard Support
  • KCAL Support
  • K-Lapse 5.0 Support
  • Blocked wakelock (Boeffla & more)
  • Fingerprint improvements
  • Caches optimisations
  • Compilation optimisations
  • Novatek touch firmware from 10.3.7.0
  • Always upstreamed to latest! (4.9.201)
  • Using Anykernel3
  • And many more under the hood changes...

 
Last edited:

Pierre2324

Senior Member
Oct 25, 2015
1,450
2,114
113
22
Useful stuffs

Clean flashing a kernel:
1. Boot into recovery
2. Wipe dalvik/art cache, cache, system and vendor(if recovery have this option)
3. Reboot into recovery (only needed on some recoveries)
4. Flash latest ROM zip
(Optional) Flash other zips like GApps, DFE, etc depending on ROM and your preference
5. Flash latest Magisk zip
6. Reboot into system (yes boot with stock kernel first)
7. Reboot into recovery
8. Flash latest NGK Kernel zip
9. Reboot and enjoy

Not to be confused with a ROM clean flash!
Do not wipe data or internal storage!


Encryption fix

For the ones who uses an encrypted device, those steps needs to be done to worl properly with NGK:

To those who are facing screen flicker/bootloop upon flashing NGK on an encrypted device.

1. Dirty flash your current ROM and boot into system.
2. change your password to whatever you want then click on "No" when it shows "Secure Start-up".
3. Boot into recovery then flash NGK. You will notice that it will not ask for a password even though you are encrypted.


Taking logs

Screen Freezes:
-Connect phone to PC
-Run following commands in terminal:
[*]adb shell
[*]dmesg

Random Reboots:
-When the random reboot occurs press the TWRP button combo to got straight into TWRP
-Send the pstore folder as a .zip file located in /sys/fs/

Any runtime kernel/app related crashes that doesnt make the device reboot or freeze:
-Use Matlog app on play store
-Start recording before the issue
-Stop recording after the issue
-Send the .zip file created


Charging:

Okay lets break it down for yall.

Every kernel on every device has WARM_TEMP and HOT_TEMP values which are usually always 45 and 50 respectively.

When device reaches 40-42C charging rate will decrease more and more until it reaches about 45C where device will stop charging even if its plugged in for safety reasons. Battery must not charge when they are this hot.

Battery thermal removal: this will prevent throttling before battery reaches about WARM_TEMP. Once battery reaches about 45C there is nothing in the world you can do. So yea battery thermal removal is still safe, just a matter of preference because if charging throttles before reaching 45C it will heat less then continue charging but if charging doesnt throttle yea it will charge charge faster under 45C but may heat more so you may hit 45C faster. So as in every other tweaks it depends on user.

As per my tests I would get about those but that may vary for you:
Battery temp (°C) - Charging rate (mA) tuples
46-1800
45-1800
44-2000
43-2600
42-2800


What else? oh yea here are some tips for you to lower temps (cause yes some of you charge while playing pubg..)

Tips for lowering temps:
-Turn off NGK thermals from NGK APP

Right you all need to understand thermals first.. A lot of users are just asking best thermals, best this, best that.. there is no universal bests..

Thermals will throttle performance depending on heat generated.. so yes there is a gain in performance when using NGK thermals because performance will throttle at higher temperatures. Why do I say it depends? Well someone living in a hot place and is getting high temps and throttling will use NGK thermals so he gets more performance for the same temperature point but there is always throttling else a phone would heat too much in the end and be really unsecure and all. That being said, if your device throttle with stock thermals then you go ngk thermals it will throttle at higher temps but in the end may still throttle and if you hit too high temps it will throttle even harder to keep temps low. For those people using normal thermals would be best since yea performance will throttle but it will prevent the phone from getting higher temps which could lead to more intense throttling. (Can also read about charging above you may want more aggressive thermals that will throttling performance to reduce heat so you can charge phone)

So next tip:

-Reduce Big cluster max frequency as this cluster is a hest generator
-Use another profile than Gaming! (Performance for me is best because its less aggressive, some people prefer balance for gaming)

All in all, try stuffs by yourself I think I did my part guiding you through all this, the best things you can do is the best things for yourself not necessarily the best for others.


Touchscreen Tests (NGK v1.5.5):

Spent a whole week with testers to just sit down and find the firmware to choose and then rebuild the drivers from the groud up.. but first here's an intro

Intro:
Small intro for everyone cause many people confuse many things..

-Panels: We have 3 main panels:
FTS, NVT REV1 & NVT REV2

-Touch firmware: comes in kernel and also in ROMs but kernel will flash its inbuilt firmware if the kernel firmware checksum is different to the one already present in ROM

-Touch Drivers: comes in kernel and those dont have numbers/versions its up to the kernel dev to make changes it those so stop asking for driver version no one can answer that precisely compared to firmware


Tests:
Alright now enough talking, the tests and results.

-Panels:
For FTS panels, using stock xiaomi drivers was fine no touch issues seem to happen since those went out.
For NVT panels, some had touch issues on rev1 and rev2 depending on firmware used while keeping xiaomi stock drivers so below tests were focusing on NVT mostly

-Firmware:
We tried 3 firmware and the ones who remained are 9.1.24 and 10.3.7 since other one gave issues

So I did incremental test builds modifying drivers for both firmware

-Drivers:
For drivers, as said before I reverted all changes to xiaomi stock drivers from their source. Some issues were present for some on both firmware version and different issues on both panel revisions (rev1 and rev2)
-Latency:
some issues was only related to latency and I knew latency was going to be better by optimizing the drivers later on
-Touch issues:
So based on that, I only took account of the issues present between firmware for each driver changes
Part 1:
Part 1 was updating novatech drivers from a CAF source that can be seen in my kernel source. So did that, compiled 2 versions again fixed some small issues here and there like firmware flashing wasnt working, touch didn't work at first and some bootup issues, anyway main thing is that novatech driver were updated a bit with less variable locking and such coding changes making the driver faster. Results after that were good it fixed some people's issues but latency wasnt perfect.
-Part2:
Now was time to optimize the drivers and did for both NVT and FTS (most of those optimizations were seen in previous ngk versions) but needed to add them again and add some more and see how they impact (cause not every optimizations means better results, some optimizations introduced issues)


Conclusion:
So in the end if TLDR
The conclusion was that issues were fixed after some driver changes as some optimizations made them worst, 9.1.24 firmware gave better touch (mostly under load or heat a.k.a for gamers) and didnt impact day to day users hence why NGK uses now 9.1.24 drivers.

BUT that is based on the fact that I reviewed the drivers from official xiaomi source, then updating them, then doing specific optimizations, other kernels may have different results or different ways of doing tests, thats just how I did it.

So yea for people who wont like touch, I will send this cause I did work on it to give better touch to most users and limiting the touch issues. I still dont think its possible to have perfect latency and perfect touch due to our phone but here's what has been done..
 
Last edited:

_undead

Senior Member
Sep 26, 2012
289
862
93
Chandigarh
Great work as always, glad to see you here! NGK was one of the best kernels for OnePlus 2, I'm excited to see what NGK brings in for Poco. You deserve much more appreciation for your work, I am doing my bit. For whosoever appreciates his work, following is a crowdfunding link that we created for getting Pierre a Pocophone, as he does not own one. Just to be clear, he isn't involved with this anyway, we, the OnePlus 2 family has done this on our own will, as a token of appreciation of all the work he has done for the community.
https://bit.ly/34b406p

Congrats on the kernel.
 
Last edited:

pipyakas

Senior Member
Apr 22, 2013
1,164
280
83
Thanks for the effort! Although it's weird that almost every kernel devs are saying that CPU OC is not possible/necessary in recent SoCs anymore.
Will the source code be available? Can you create a script to easily run the build process for the kernel so that we can mess around with it?
 
  • Like
Reactions: Pierre2324

youngAvJ

New member
Jan 23, 2014
219
138
0
Awesome bro... keep it up.. :)

---------- Post added at 10:11 PM ---------- Previous post was at 10:10 PM ----------

quick question, if i have drunk optimus installed, how do i change it to this kernel?
and how to update it?
thanks!
flash stock boot or dirty flash you rom. then NGK.
 
  • Like
Reactions: Pierre2324
Our Apps
Get our official app! (coming soon)
The best way to access XDA on your phone
Nav Gestures
Add swipe gestures to any Android
One Handed Mode
Eases uses one hand with your phone