Related
Upon request from fellow member ascariz on the smartassV2 governor, I've compiled intellidemand module for Arc 4.0.3 stock kernel.
Since the firmware I use is the Arc S one (ICS 4.0.3) - I believe this module will also work for Arc S.
To fully configure / install the module, please check this page for a similar module I did for X10 back in the days - page.
Some things are different, but if you want to hand customize all possible parameters after phone starts up, the path to check is
Code:
/sys/devices/system/cpu/cpu0/cpufreq
Download:
Use it at your own risk!
cpufreq_intellidemand_arc_ics.zip
Enjoy!
Awesome. Not trying to be greedy but can we have BoostedAssV2 too ? xD
viulian said:
Upon request from fellow member ascariz on the smartassV2 governor, I've compiled intellidemand module for Arc 4.0.3 stock kernel.
Since the firmware I use is the Arc S one (ICS 4.0.3) - I believe this module will also work for Arc S.
To fully configure / install the module, please check this page for a similar module I did for X10 back in the days - page.
Some things are different, but if you want to hand customize all possible parameters after phone starts up, the path to check is
Code:
/sys/devices/system/cpu/cpu0/cpufreq
Download:
Use it at your own risk!
cpufreq_intellidemand_arc_ics.zip
Enjoy!
Click to expand...
Click to collapse
OMG. you really do it?! tq mate!
After a day of testing, I'm switching back to smartassV2.
With smartassV2:
a) the time in state shows me about 16-17% at 1Ghz, and the others at 122MHz. Intermediate frequences are rarely used.
b) battery was about 40% at the end of the day with my usage (4 email accounts doing sync at 15 minutes - I'm not using push, but k9 connects) - also half of the day in an area where 3G signal is weak and phone swiches back and forth.
With intellidemand:
a) the time in state is 6% for 1GHz which might look better in comparison with smartassV2.
BUT:
b) the phone is sluggish and you can feel it needs a bit of time (1 second ?) to pick up speed, UI animations are choppy.
c) it does make use of the intermediate frequencies - but battery was about 20% when I got home, identical usage as previous day with smartassV2.
In both cases, screen was always kept at 25%.
Now my conclusion is that:
a) intermediate (but high) frequencies have similar battery usage as maximum frequency.
b) spending more time in an intermediate frequency makes things slower to finish and thus, based on point a) drains battery more.
Also, the code of intellidemand is more complex (.ko size is +20Kb more) as opposed to smartassV2 - and thus I guess it also takes more time (energy) to compute the correct frequency. In itself, a complex algorithm to compute the next state takes its toll.
smartassV2 does perform better with my usage pattern - and I'm curious why this governor is claimed to be advanced I mean algorithmically it surely is, but phone is more sluggish + more battery drain (not significant, but about 20% in my basic, 1 day test).
I will focus my attention on other *ass governors
flashable intellidemand. auto load on startup. all credit to viulian.
ascariz said:
flashable intellidemand. auto load on startup. all credit to viulian.
Click to expand...
Click to collapse
Can you make a flashable smartassv2 too ?
Dark Fable said:
Can you make a flashable smartassv2 too ?
Click to expand...
Click to collapse
errr...im not a module compiler like viulian. honestly, i dunno. but to make it autoload on boot & flashable, yes, as long as i have that .ko file.
ascariz said:
errr...im not a module compiler like viulian. honestly, i dunno. but to make it autoload on boot & flashable, yes, as long as i have that .ko file.
Click to expand...
Click to collapse
The .ko was already made by viulian, here ya go.
Dark Fable said:
The .ko was already made by viulian, here ya go.
Click to expand...
Click to collapse
this is intellidemand and smartassv2 modules that you can load in 2 way.
1) for those who use stock kernel that not support init.d, use script manager to load MODULELOADER script at start up. after flash, browse at system/etc/init.d folder and you will find the script.
2) for those who use kernel with init.d supported (e.g. Cobrato kernel), do nothing. just flash it and you ready to go.
ascariz said:
this is intellidemand and smartassv2 modules that you can load in 2 way.
1) for those who use stock kernel that not support init.d, use script manager to load MODULELOADER script at start up. after flash, browse at system/etc/init.d folder and you will find the script.
2) for those who use kernel with init.d supported (e.g. Cobrato kernel), do nothing. just flash it and you ready to go.
Click to expand...
Click to collapse
Doesn't work man. :/ The new governors aren't showing up in No Frills CPU..using Cobrato's kernel.
First you must use the stock kernel from Sony's official 4.0.3 release for Arc S (even if having the Arc).
Any other kernel will not work ... (or very slim chances to work).
Second, please check using Module Loader app (but only activate the boot time loading of the module after you are sure the things work).
viulian said:
First you must use the stock kernel from Sony's official 4.0.3 release for Arc S (even if having the Arc).
Any other kernel will not work ... (or very slim chances to work).
Second, please check using Module Loader app (but only activate the boot time loading of the module after you are sure the things work).
Click to expand...
Click to collapse
I have the ARC S lol, and Cobrato's kernel is Stock 4.0.3 kernel with init.d support.
http://forum.xda-developers.com/showthread.php?t=1591279
Hmm...I thought you didnt have to use module loader for the flashable zips ? :/ Because the module loader shows 'Starting modules...' in the middle of any game (Like Temple Run) and it begins to lag horribly, this pisses my friends off. I want to show them how great a phone Arc/S is. :/
Ok, if it has the same version number then it will load the modules ok (as well as having the same binary kernel image).
I think the OS kills Module Loader to regain some memory, then starts it back when memory level gets better (kills it when game / heavy app starts, then as memory becomes available, it starts it back). But Module Loader has a bug and when started also loads the modules
Another solution is to use Script Manager ( http://www.androidsoftware.us/Applications/Script-Manager.html ) to run a script at boot (a small script that just do the insmod).
Hope it helps...
viulian said:
Ok, if it has the same version number then it will load the modules ok (as well as having the same binary kernel image).
I think the OS kills Module Loader to regain some memory, then starts it back when memory level gets better (kills it when game / heavy app starts, then as memory becomes available, it starts it back). But Module Loader has a bug and when started also loads the modules
Another solution is to use Script Manager ( http://www.androidsoftware.us/Applications/Script-Manager.html ) to run a script at boot (a small script that just do the insmod).
Hope it helps...
Click to expand...
Click to collapse
Thank you for your quick response. [: I know about script manager, can you please provide me with the script to use with it for the modules and a how to ? If not too much trouble that is.
Nvm, got it, thanks.
Dark Fable said:
Doesn't work man. :/ The new governors aren't showing up in No Frills CPU..using Cobrato's kernel.
Click to expand...
Click to collapse
err...it should work man..i used JJ hybrid rom, and the modules shows up in the rom control..maybe you should try app other than no frills..
OpenPDroid is an awesome mod developed and maintained by CollegeDev, FFU5y, Mateor, Pastime1971, Syvat and Wbedard that allows you to configure for each app separately exactly which permissions it should have and block or spoof everything else. Unfortunately, it can only be used if the core platform is integrated directly into the ROM. (For more details, see http://forum.xda-developers.com/showthread.php?t=2098156)
Since I have completed the integration anyway during my attempts to fix the HDMI rotation bug (without success so far, I'm afraid) and the current version of CM does not seem to contain any more critical bugs, I thought others might like to make use of my ROM as well.
I therefore hereby present: CM 10.1 with OpenPDroid integration. Besides the platform integration I made the following changes:
PDroid Manager app integration.
Standard CM Updates are disabled by default.
CM anonymous stats collection is disabled by default.
Google Analytics integration has been removed from the CM stats collection module.
Updates and anonymous stats collection can simply be enabled again using the menu. (Warning! Applying a normal CM update purges the OpenPDroid integration!)
I will try to at least provide updates to newer versions at critical update moments and will perhaps provide some more in between.
You'll need to have ClockworkMOD installed in order to flash this ROM.
Downloads:
11/07/13: Version based on CM 10.1.1 stable. Steps:
1. Flash the stable version of CM 10.1.1 (10/07/13) for our device.
2. Flash this OpenPDroid patch.
3. Install PDroid Manager either from the Play Store or using the APK attached to this post.
10/07/13: (based on source code 09/07)
10/07/13: https://mega.co.nz/#!uswGGQ6K!Wt9JAFDBElZQ2i74yNxMrkz3y7kO4U8-LWK2dLx_L8s
10/07/13: MD5: 99fc3769c9b2354a844ac1ac92504650
16/05/13: (build with standard CM kernel)
16/05/13: https://mega.co.nz/#!StIyQbzD!GfgNa3Seha74UnSahokwIzvcZ9UVqKaa2P38_LlxuMY
16/05/13: MD5: ad036e4035291bba901ad90826ab0abf
13/05/13: (general source code cleanup)
13/05/13: https://mega.co.nz/#!KoxixajK!Wn91VGj5ooOFYXs-Vt8QJDkU8Bo7VuR40_939hd3YMg
13/05/13: MD5: dffad528804bf830c4b225b0bfff5a76
09/05/13: (WerewolfJB kernel v003 new)
09/05/13: https://mega.co.nz/#!2txwmS4S!aR4bHG6BHMkoTPabi8Z0K0r4hPsUICmKO9ROaaIYOg0
09/05/13: MD5: 4a75829296a167a563ad78ffe26991de
05/05/13: (vibration,memory management)
05/05/13: https://mega.co.nz/#!bsQERDaS!RHB4rHhQsDf9XauyOpeMySAiDt1gtc8Y7gnsckdWOlo
05/05/13: MD5: e05017acf9e50affcba7379050514d63
01/05/13: (merged in the WerewolfJB kernel, fixed headphone button actions)
01/05/13: https://mega.co.nz/#!ig5hCJYY!eHM5vwER9zEEZJRk9_C6vCvclH14rDcKa9CyBcU9kTc
01/05/13: MD5: 3ababb1c0cda47874ed7d688de032638
28/04/13 (adjusted some device references for improved custom recovery compatibility)
28/04/13: https://mega.co.nz/#!71BgVLBY!PEcEHAYxpDZVZcQycpgGJ2QeJZZ0HbgVdjaBkiD72bg
28/04/13: MD5: 7f2616736dd78940e37d1e14ea47084f
24/04/13: (storage, power profiles)
24/04/13: https://mega.co.nz/#!j44XWBDb!UrmGEhCUcjbj8Q3WTj1EkDrImXJXwcNGvEMIHFm-TvE
24/04/13: MD5: 491a500c5bef958d7575a6ce62fae1aa
23/04/13: https://mega.co.nz/#!75IDhCAA!EpwDqHm6W6fG3mk0lNaC0XPWvlsJxi2TjEpjJPEuj6Q
23/04/13: MD5: 609c76958796f19fb04aee217c44ba98
PS. If anyone ever discovers the correct procedure for calling the proprietary nvidia tegra driver api, please let me know.
is the baseband wakelock solved in this rom?
Who can change the other network disk ,thx
xtribas said:
is the baseband wakelock solved in this rom?
Click to expand...
Click to collapse
The main additional problem that this ROM currently fixes compared to standard CM is that of blatant privacy violation.
Since the wakelock issue seems to be related to mobile data use, and I don't have a data subscription, experimentation with this would quickly rack up my phone bill. If someone comes up with a solution I'd be happy to patch it out though.
Hansey said:
Who can change the other network disk ,thx
Click to expand...
Click to collapse
I assume you're referring here to the swapping of disk names when using MTP. I actually only noticed this bug last night and it should be easy to fix. I plan to have it patched out in the next version.
Update 24/04/13 uploaded, involving official CM patches for MTP storage & power profile settings.
Is there a guide how to compile it my self?
DavidXanatos said:
Is there a guide how to compile it my self?
Click to expand...
Click to collapse
http://forum.xda-developers.com/showthread.php?t=1994860
DavidXanatos said:
Is there a guide how to compile it my self?
Click to expand...
Click to collapse
At the Cyanogenmod website there are instructions for compiling yourself. You can apply the OpenDroid patches using the link I included in the post. Make sure to synchronize the proprietary files with those provided by Cyanogenmod or some aspects will fail to work.
@Wenque - As the original CM on which you based this has the incorrectly labelled hardware platform which means it can only be flashed with the one particular version of CWM, could you possibly modify your version so the coding is for X3, not for P880 - then it could be flashed with any recovery.
SimonTS said:
@Wenque - As the original CM on which you based this has the incorrectly labelled hardware platform which means it can only be flashed with the one particular version of CWM, could you possibly modify your version so the coding is for X3, not for P880 - then it could be flashed with any recovery.
Click to expand...
Click to collapse
Thanks for pointing this out, as I wasn't aware that my ROMs still suffered from this problem. I'll look into it.
Wenque said:
Thanks for pointing this out, as I wasn't aware that my ROMs still suffered from this problem. I'll look into it.
Click to expand...
Click to collapse
No problem. I got the 'Status 7' message when I tried to flash it, due to the P880.
This problem goes away with the latest (v6.0.3.1) version of CWM, so it's not massively important I guess. It would be better if CM modified their builds to reflect the correct hardware identifier.
May be worth you expanding your OP slightly to contain a link to the correct CWM - just to make it easier for people to find.
SimonTS said:
No problem. I got the 'Status 7' message when I tried to flash it, due to the P880.
This problem goes away with the latest (v6.0.3.1) version of CWM, so it's not massively important I guess. It would be better if CM modified their builds to reflect the correct hardware identifier.
May be worth you expanding your OP slightly to contain a link to the correct CWM - just to make it easier for people to find.
Click to expand...
Click to collapse
Good idea. I'll probably just expand the model check in the update script for future uploads so it accepts both references.
Update 28/04/13 uploaded, for some improved custom recovery compatibility. As every update, it also contains all official CM patches.
All patches between this version and the last one are minor, so for people who have installed the previous version of the ROM there is no need to update to this one.
Is anyone else having problems with GPS on this ROM? I am going to try going back to all the old methods I used on my HTC DesireS, but thought I'd ask here as well.
For those who wonder what the old methods were, have a look at derekgordon.com
SimonTS said:
Is anyone else having problems with GPS on this ROM? I am going to try going back to all the old methods I used on my HTC DesireS, but thought I'd ask here as well.
For those who wonder what the old methods were, have a look at derekgordon.com
Click to expand...
Click to collapse
No-body?
I have tried ths both with Derek Gordon's gps.conf modification, and with my own one using just the UK NTP servers and no fancy settings.
If I reboot the phone and run GPS Status & Toolbox it takes between 3 and 5 minutes to get the first lock. This happens whether I do it immediately on reboot or leave the phone alone for an hour first. Once it has established a first good lock, GPS seems to be very good - relocks quickly and stays in the background happily.
The problem is the first lock - it's almost as if the hardware is actually starting off disabled and takes time to warm up or something.
Can someone else using this ROM please test to confirm? I will try this with the standard CM 10.1 build and also with the Stock ROM again, but can't do so for a couple of days.
Update 01/05/13 uploaded. I swapped the default CM kernel with the WerewolfJB kernel (thanks laufersteppenwolf!) and I fixed the headphone button actions (key 248 HEADSETHOOK).
SimonTS said:
Is anyone else having problems with GPS on this ROM? I am going to try going back to all the old methods I used on my HTC DesireS, but thought I'd ask here as well.
For those who wonder what the old methods were, have a look at derekgordon.com
Click to expand...
Click to collapse
Sorry SimonTS, but I don't know whether this version fixes your GPS problems. Perhaps I'll have time to look into it later.
Wenque said:
Update 01/05/13 uploaded. I swapped the default CM kernel with the WerewolfJB kernel (thanks laufersteppenwolf!) and I fixed the headphone button actions (key 248 HEADSETHOOK).
Sorry SimonTS, but I don't know whether this version fixes your GPS problems. Perhaps I'll have time to look into it later.
Click to expand...
Click to collapse
No need to apologise mate. I have tried the WerewolfJB kernel, but it doesn't seem to make any difference. I'm going to look at running the WerewolfJB ROM for a while as GPS seems to work perfectly in that, but hopefully you will get time to build a new version as I really want a ROM with pDroid in it.
SimonTS said:
No need to apologise mate. I have tried the WerewolfJB kernel, but it doesn't seem to make any difference. I'm going to look at running the WerewolfJB ROM for a while as GPS seems to work perfectly in that, but hopefully you will get time to build a new version as I really want a ROM with pDroid in it.
Click to expand...
Click to collapse
All you really need to do is copy the good /system/etc/gps.conf file to the PDroid ROM and make sure that you do not block too many permissions. You are probably using Google's SUPL server to help you obtain an initial location estimation and you don't want to block that if you rely on fast GPS locks.
You can do this by first copying the gps.conf file to a safe location (root of sdcard for instance in /mnt/shell/emulated/) and then performing the following steps:
- Use the terminal emulator with the following commands:
= su
= mount -o remount,rw /system
- Now copy the good gps.config file over the current one (for instance using root-permission File Manager or 'su', 'cp /mnt/shell/emulated/gps.conf /system/etc/' )
- Either reboot now or use the terminal emulator with the following commands:
= su
= mount -o remount,ro /system
Wenque said:
All you really need to do is copy the good /system/etc/gps.conf file to the PDroid ROM and make sure that you do not block too many permissions. You are probably using Google's SUPL server to help you obtain an initial location estimation and you don't want to block that if you rely on fast GPS locks.
You can do this by first copying the gps.conf file to a safe location (root of sdcard for instance in /mnt/shell/emulated/) and then performing the following steps:
- Use the terminal emulator with the following commands:
= su
= mount -o remount,rw /system
- Now copy the good gps.config file over the current one (for instance using root-permission File Manager or 'su', 'cp /mnt/shell/emulated/gps.conf /system/etc/' )
- Either reboot now or use the terminal emulator with the following commands:
= su
= mount -o remount,ro /system
Click to expand...
Click to collapse
It's not that simple mate, but thanks for the reply. I know all about the gps.conf file as we used to have real problems with GPS on my old Desire S. The problem I see with this build and the standard CM is almost as if it doesn't know how to talk to the GPS hardware properly.
With the WerewolfJB build and my own gps.conf file I can get a lock in under 10 seconds sometimes, and always under 20.
Mod edit: Thread closed on owner's request!
exNoShadez-EAS Kernel
FEATURES
- Current LTS release -> Linux-3.18.114
- Energy Aware Scheduling
- Schedutil (default Cpu Governor)
- RCU infrastructure backport (with expert mode enabled)
- Cpu-Boost / Input Boosting (enabled by default)
- BINFMT_MISC support (NOT mounted on boot).
- Kernel Hardening/Protection (CopperheadOS/Grsec/Pax Marlin kernel hardening features)
- leds-qpnp: Notification LED control - V1.1c (Boeffla) - Adapted for Marlin
- Binder_rt = My own re-implementation of AOSP Binder that uses rt_mutexes; supporting priority inheritance
- Improved scheduling/determinism for high priority threads/tasks
- Backported Scheduling, Locking and Workqueue subsystem code from Newer Linux kernels.
- Audio Driver enhancements / backports (from Wahoo/Pixel 2)
- Sound/Audio driver Tweaks (bug fixes, scheduling improvements)
- forced Interrupt threading enabled
- Wifi Mac Address Randomization
- WireGuard VPN kernel module support (more info soon)
- KCal Advanced Colour control
- Improved ASLR (in kernel)
- USB Fast Charge
- Wake Gestures
- GCC 6/7+ Fixes
- Built with GCC-8.x-dev
- and more
Contains code from everywhere: Code Aurora, Flar2/Marlin, CopperheadOS, AOSP, Project-EAS, Freak7/Kirisakura, Linaro, Pixel 2 kernel sources, mainline linux and elsewhere. Modifications and backports by me, as well.
BACKGROUND
I wanted a kernel for My Pixel that had 'all of the things', it didn't exist... So I'm working on my own kernel. I try to balance Security/hardening, experimental features with high Performance and battery life. <- not an easy task! ... Some of the security features do come with overhead, but if you use apps that are CPU heavy / processing and/or require low latency - they will perform well (at the cost of chewing some battery life, of course).... Battery life and SOT are very reasonable though.
WARNING / VERY IMPORTANT: This kernel isn't compatible with installing TWRP ~> meaning; you must use the fastboot version of TWRP (used in RAM) , flash the kernel and NOT install TWRP to your system (the kernel is too big for TWRP to co-exist).... This may sound inconvenient, but there are a number of valid reasons to avoid reducing a kernel's size in order to support TWRP installation, in the boot partition.
***Fun facts on this subject below => in the 2nd post: PLEASE READ: to understand my motivation***
TWRP REMOVAL
*To remove TWRP from your system; You need the stock boot.img from your running/current firmware (which is inside of the factory image zips) or use the Nov Stock boot.img provided here. Then it's as simple as flashing the boot.img to wipe TWRP;
fastboot flash boot_a /path/to/boot.img
fastboot flash boot_b /path/to/boot.img
Stock 8.1 July 2018 Boot.img => https://github.com/nine7nine/Apps/raw/master/SailfishStockJulyBoot.img
Now you can proceed with using the TWRP fastboot boot.img to flash my kernel, magisk/supersu or whatever else....
Fastboot twrp boot image => https://dl.twrp.me/sailfish/twrp-3.2.2-0-sailfish.img
WARNING: This shouldn't need to be said, but we did have someone who did this, so I'm adding a sticky/warning here; do NOT EVER re-lock your bootloader after flashing any kind of custom software, kernels, etc to your device - *it will brick your phone*. Meaning you are screwed would need an RMA / replacement device ... everyone in the XDA community should know better, but still; worth mentioning....
IMPORTANT:
Before asking questions; Please read through the thread (starting with the last few pages) - I shouldn't need to be repeatedly answering the same questions over and over again. It's good practice to get into the habit of reading through threads before asking questions in any thread on XDA, as more often then not; you're question has probably been answered. Thanks!
EXNS-EAS KERNEL DOWNLOAD:
JULY 2018 OREO 8.1 RELEASE exNoShades-eas Kernel Flashable zip
https://github.com/nine7nine/Apps/raw/master/exNoShadez_eas_v2.8.2_f94351f.zip
It is stable, high performance and very responsive...
Important: You will need root; I don't support non-rooted devices && some features require it. I recommend using Magisk; https://forum.xda-developers.com/apps/magisk/beta-magisk-v13-0-0980cb6-t3618589 ...
NOTE: Make sure to flash the latest Magisk beta *before* flashing the kernel zip. ...
More Background / Important Notes:
Binder_RT:
My own port and re-implementation of the Binder Kernel Driver; a slightly modified version of The AOSP binder.
Binder_RT uses rt_mutexes as opposed to mutexes for locking in Binder, ion, ashmem, etc... rt_mutexes support priority inheritance and should improve determinism in Binder, speed up IPC, Ion and Ashmem => Allowing applications that require low-latency, tight deadlines, low jitter and deterministic behaviour to perform better ~ This re-implementation is proving to be the great for those types of applications. The goal here is to help ensure that the Kernel and Binder's high priority && time critical threads and tasks are properly prioritized... Example; audio buffers arriving on time / no buffer underruns... *Further development work is planned to research, experiment with and improve Binder_RT.
rt_mutex documentation, for those interested;
https://github.com/nine7nine/Marlin_exns-eas/blob/EXNS_EAS/Documentation/locking/rt-mutex.txt
https://github.com/nine7nine/Marlin_exns-eas/blob/EXNS_EAS/Documentation/locking/rt-mutex-design.txt
CPU-Boost / Input Boosting:
Touch inputs boost CPU frequencies (thus improves performance and responsiveness).
# Cpu-boot / Input boost settings
write /sys/module/cpu_boost/parameters/input_boost_enabled 1
write /sys/module/cpu_boost/parameters/input_boost_freq "0:1363200 1:0 2:1900800 3:0"
write /sys/module/cpu_boost/parameters/input_boost_ms 100
IO/ CPU Governors:
This kernel doesn't include a thousand io/cpu governors. IO-wise; CFQ is the default, but we've got a few in there. chose your poison, but know that the majority of my testing is centered around cfq and deadline. CPU Governor-wise the common Linux CPU governors are there; along with Sched and Schedutil....
Stick with Schedutil - on idle, it draws very little power and in most 'peak performance situations, it should do very well..... I'm getting great battery life, sot and performance.
Managing Kernel Settings:
Get EX Kernel Manager - my original code on github was forked from EX kernel, before rebasing it - but EXKM will give you access to 99% of my kernel's settings.
My 8.1 Kernel Sources: https://github.com/nine7nine/Marlin_exns-eas
Donations via PayPal very much appreciated. I do put a significant amount of energy and time into researching, development, testing / QA and also providing support/help to end-users... It's definitely not mandatory to donate; but If you appreciate the effort, see value or benefits from using my kernel on your device and can afford to; Use the "Donate to me" button or the below link... It makes a big difference. thanks!
https://www.paypal.me/jrdnjhnstn
Why TWRP Installations are NOT supported:
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
(and why I'm not using it!)
Most custom/android kernel devs are using the above configuration in kernel compilation, which is arguably very BAD... I understand that boot partitions are small and the desire to install TWRP to them, thus there is a need to reduce the kernel's size....and yes, this will achieve that - However;
1. SUSE, RedHat, etc (Enterprise linux) disable CONFIG_CC_OPTIMIZE_FOR_SIZE -> it's original use case has proven to be invalid. Even Google (in their own documentation) advise against using this; https://source.android.com/devices/tech/perf/boot-times ....
2. It suppresses useful compiler warnings....
3. As SOCs have become more powerful, google has come to the same conclusion that Enterprise Linux did back in 2012.
4. by turning off CONFIG_CC_OPTIMIZE_FOR_SIZE, we achieve better performance, boot time and better cache utilization.
Clark Williams / Redhat Bugzilla said:
* Cause: CONFIG_CC_OPTIMIZE_FOR_SIZE set with assumption that smaller code would yield hot cache lines and good performance
* Consequence: this config caused gcc to generate jump-to-jump code which causes cache line bouncing, hurting performance
* Fix: turn off CONFIG_CC_OPTIMIZE_FOR_SIZE
* Result:slightly larger kernel but better cache utilization
Click to expand...
Click to collapse
(The Above is quoted from Clark Williams, A Senior Software Architect @ RedHat -> https://bugzilla.redhat.com/show_bug.cgi?id=796297)
I know of no other way to significantly reduce kernel size. Disabling some debugging, unneeded features, etc helps - but not enough.... I am focusing on optimization, using newer builds of GCC/Linaro, performance enhancements, fixing compilation errors, etc, etc -> these things are more important than trying to support TWRP installation. Therefore; I do NOT support installing TWRP....
I like it so far, very good kernel.
Awesome! Always nice to have choices
I've seen you post around that you made x change to your own kernel, glad you finally made it public!
Does it have all of franco's wakelocks blocked by default?
グリッチ said:
Awesome! Always nice to have choices
I've seen you post around that you made x change to your own kernel, glad you finally made it public!
Does it have all of franco's wakelocks blocked by default?
Click to expand...
Click to collapse
hey, it includes franco's wakelocks stuff. I don't think all are blocked, I actually don't touch them in my init rc. ... but some are blocked by default, for sure. can be set by user...
yeah, I've got my kernel to a point now, where it is somewhat unique && is drawing in most of the best features from every custom kernel for the pixel (my opinion). very stable too, thus far. so makes sense to make it public.
it's got the RCU (read copy update) infrastructure from linux-4.9... a ton of core, sched, Walt, etc from linux-4.4+ (specifically, from EAS-Project / msm8998 OP5 - which was painful to backport. wish we didn't have a 3.18 kernel. lol) afaik, it's the only Marlin kernel with Dynamic Stune Boost and aside from CopperheadOS; the only marlin kernel with a subset of the PAX/grsec kernel security enhancements and the Mac randomization... also has all of the audio enhancements from the kernel ur running ?
siheals said:
I like it so far, very good kernel.
Click to expand...
Click to collapse
Hey! thanks for testing it out. let me know how things go, your impressions, etc.
I'll be updating this kernel constantly, so if u end up liking it; you can expect that it will always include security patches, linux LTS incremental patches, etc...
it's my daily driver, so i keep on top of it.
Superb! Thanks for clarifying.
I will give it a run when November update releases cuz I'm lazy >.< but am excited and looking forward to it ^_^
グリッチ said:
Superb! Thanks for clarifying.
I will give it a run when November update releases cuz I'm lazy >.< but am excited and looking forward to it ^_^
Click to expand...
Click to collapse
no probz. As soon as the november updates arrive, i will be adding whatever patches are needed... so expect that to be there...
i also pull from Code Aurora msm-3.18 for 8996, so my kernel gets updates to drivers, core, etc that google hasn't picked up yet.
Just Testing 3.18.79 + latest Code Aurura updates for today ....AND;
re-enabling a hardening feature that I thought was draining battery life (Likely not, was probably another removed patch - that isn't in the current release.)
I'll update the link later on and - on my github; where I link to for downloads; there will be older releases labeled - ie:
exNoShadez_eas.zip (current release / link) will become -> exNoShadez_eas_3.18.78_oct.zip,
when it is replaced by 3.18.79 + other updates / patchwork.... The current release will always be -> exNoShadez_eas.zip
UPDATE:
While I haven't updated exNoShadez_eas.zip link/version, * I have posted a zip with the above changes - I'll be testing it for a while before updating the link because it's hard to gauge battery life without a lot of testing / time spent.... So I would say, if anyone is eager - they can test it, but wait at least 12-24hours from testing the current available release - so you can actually make some sort of real-usage comparision.
link: https://github.com/nine7nine/Apps/raw/master/exNoShadez_eas_3.18.79_harden.zip
Glad to see you have posted this man. Setting up a pixel for my friend and as i was browsing the forums noticed you have a lot of good kernel work. Was literally about to PM you a few days ago for your kernel and then happened to see this post today. Can't wait to try it out!
Warrimonk said:
Glad to see you have posted this man. Setting up a pixel for my friend and as i was browsing the forums noticed you have a lot of good kernel work. Was literally about to PM you a few days ago for your kernel and then happened to see this post today. Can't wait to try it out!
Click to expand...
Click to collapse
All good, man.
It only makes sense that I would share my kernel, when I felt it was ready for that - just keep in mind, that for now - I have marked it as Beta / Testing, as it's pretty new (although, aside from the EAS code / Dynamic Stune Boost - the rest has been thoroughly vetted)....
So yeah, give it a run, let me know how things go! thanks
Unsure if I am doing something wrong or not, but when I try to flash your kernel I get an error stating : "New Image larger than boot partition. Aborting...."
EX Kernel flashed fine. Using TWRP 3.1.1-1
Warrimonk said:
Unsure if I am doing something wrong or not, but when I try to flash your kernel I get an error stating : "New Image larger than boot partition. Aborting...."
EX Kernel flashed fine. Using TWRP RC1.
Click to expand...
Click to collapse
Why aren't you using the newest stable version of TWRP?
RC1 = release candidate 1
afaik, latest release is 3.1.1-1 stable for the pixel.... https://dl.twrp.me/sailfish/
Using an old version might be your issue. Update, then try.
nine7nine said:
Why aren't you using the newest stable version of TWRP?
RC1 = release candidate 1
afaik, latest release is 3.1.1-1 stable for the pixel.... https://dl.twrp.me/sailfish/
Using an old version might be your issue. Update, then try.
Click to expand...
Click to collapse
Apparently I am using TWRP3.1.1-1 . The thread was called RC1 So I mistakenly assumes that was still the current version.
Warrimonk said:
Apparently I am using TWRP3.1.1-1 . The thread was called RC1 So I mistakenly assumes that was still the current version.
Click to expand...
Click to collapse
Can confirm this, I'm on 3.1.1-1 too and got this issue.
I'm running 8.0.0 (OPR3.170623.008, Oct 2017) build.
Keasby said:
Can confirm this, I'm on 3.1.1-1 too and got this issue.
I'm running 8.0.0 (OPR3.170623.008, Oct 2017) build.
Click to expand...
Click to collapse
kk. I'll look into this - I (obviously) do not have this problem..... What firmware images do you use?
I'm on Rogers/Canada, maybe the boot partition is a different size on some firmwares (?)....
I can also look at shrinking the boot.img, which could fix it. My boot.img is slightly bigger than the shipped boot.img and I do have an idea on how to shrink it a bit, you'll have to wait until later on for me to look at it though / not home right now.
nine7nine said:
kk. I'll look into this - I (obviously) do not have this problem..... What firmware images do you use?
I'm on Rogers/Canada, maybe the boot partition is a different size on some firmwares (?)....
I can also look at shrinking the boot.img, which could fix it. My boot.img is slightly bigger than the shipped boot.img and I do have an idea on how to shrink it a bit, you'll have to wait until later on for me to look at it though / not home right now.
Click to expand...
Click to collapse
32MB is the boot image max size AFAIK.
nine7nine said:
kk. I'll look into this - I (obviously) do not have this problem..... What firmware images do you use?
I'm on Rogers/Canada, maybe the boot partition is a different size on some firmwares (?)....
I can also look at shrinking the boot.img, which could fix it. My boot.img is slightly bigger than the shipped boot.img and I do have an idea on how to shrink it a bit, you'll have to wait until later on for me to look at it though / not home right now.
Click to expand...
Click to collapse
Maybe it's caused by the image size. Other custom Kernels are sized bout 13mb.
I'm running the Google Stock Build OPR3.170623.008, October 2017.
Hope you can fix it - TIA!
nine7nine said:
kk. I'll look into this - I (obviously) do not have this problem..... What firmware images do you use?
I'm on Rogers/Canada, maybe the boot partition is a different size on some firmwares (?)....
I can also look at shrinking the boot.img, which could fix it. My boot.img is slightly bigger than the shipped boot.img and I do have an idea on how to shrink it a bit, you'll have to wait until later on for me to look at it though / not home right now.
Click to expand...
Click to collapse
Personally I tried on these 2 firmwares:
sailfish-ota-opr3.170623.008
sailfish-ota-opr6.170623.012
The phone was originally a Project Fi device.. if that matters. Dev which firmware and TWRP are you using?
Warrimonk said:
Personally I tried on these 2 firmwares:
sailfish-ota->>>>opr3.170623.008<<<<<
sailfish-ota-opr6.170623.012
The phone was originally a Project Fi device.. if that matters. Dev which firmware and TWRP are you using?
Click to expand...
Click to collapse
I'm using the latest twrp-3.1.1-1 (but and idk if this makes a difference or not), I only use the twrp fastboot img (Ihave ZERO reason to actually install TWRP on my system).... and also, Others have installed and are using my kernel - so it must be a difference in firmwares / boot partition size (or image size)
Keasby said:
Maybe it's caused by the image size. Other custom Kernels are sized bout 13mb.
I'm running the Google Stock Build >>>>>OPR3.170623.008<<<<<, October 2017.
Click to expand...
Click to collapse
So yeah, I'm using a different build **OPR1.170623.027**, Oct 2017, Fi/Canada.... you both are having problems on >>>>>OPR3.170623.008<<<<< ~> Something is different in that build... If you like (and happen to have that image kicking around, you could send me the boot.img and I'll compare it to mine? later on)
I'm thinking it's not the kernel size, although - I do plan on making the kernel smaller on production builds, by reducing a lot of debugging that really isn't needed on a production build (I already have a defconfig for doing so);
Introduction:
Hello everyone!
The idea to this 'project' did blossom after having an conversation with @pkgnex in the past about the general idea of creating something else that follows what he started with his PK's Tuning Script for Pixel 2 (XL) but with a twist, mainly as a complement to his own thread that you can find here, but also with a completely different vision and focus on what the script itself should achieve (and deliver) for kind of results for myself and for all of you personally, of course, that wants to try it out and use it as a "daily driver".
Shortly explained.
These scripts is created with the goal of improving both battery life and performance on our Pixel 3 (XL) devices, and after a whole range of configurations and various set-ups, I've come up with something that, in my eyes, is worth sharing with all of you so that you can try it out yourself and judge on your own, with constructive feedback on what can be improved or added in future releases - if desired. My philosophy is, and will always be, this:
If something can be improved or altered in a positive way so the average user can feel and see a difference, then go for it. Non stop.
The latest release can be found here.
Disclaimer:
This is presented as "what if". If this modification screws up or breaks anything for you, I am not the one to be held responsible. It's a free will to try out this kind of changes/modifications/addons/tweaks, just don't blame the inventors for eventual bad results and/or screw-ups.
Note: These scripts is not recommended to be modified or customized by the user.
Features:
Reduced battery consumption
Device specific enhancements for best possible balance between battery life & performance
Enabled, and fully configured, Boeffla generic kernel wakelock blocker
Disabled a lot of useless stuff at kernel level (Improves battery life as well as performance)
CPUSet improvements & optimizations
Power efficiency enhancements
Wide IO block tuning (Reduces the possibility of hiccups, lags and overhead)
Possibly other miscellaneous things I've forgotten to write down here, both big and small.
Requirements/what you need for getting these scripts fully working:
An unlocked bootloader
Your own specific choice of kernel
Latest possible version of Magisk
Busybox for Android NDK Magisk Module by @osm0sis
Patience
Installation/How-To use & abuse:
1) Download the attached ZIP
2) Extract the scripts
3) Move the scripts to the following location;
/data/adb/service.d and give it the following & needed file permissions (0775)
4) Reboot your phone, let Android boot to the launcher and let Magisk boot service do its crucial magic (takes a few seconds before the scripts is fully up and running around behind the scenes)
5) Enjoy!
Note: If you still are unsure how to do for making my kernel configuration / modification work & be up and running behind the scenes, then please read @Phalanx7621 phenomenal guide here or check out @Phalanx7621 in-depth video here. The installation method is the same for all generations of released Pixels!
Credits:
@franciscofranco for all the information on which kernel wakelocks that is safe to block
@Phalanx7621 for his phenomenal how-to guide
@Lord Boeffla for his awesome generic kernel wakelock blocker
@pkgnex for inspiring me walking into this partially unknown territory.
@flar2 for his excellent EXKM application and ElementalX Kernel
@osm0sis for his Magisk Busybox module
Everyone that I've forgotten to mention here
Telegram:
If you want to try out betas / previews of my script before they are officially released, or just hangout and chat a little, then join the official Telegram group here
To-Do list:
Optimize and properly tune things even further for best possible balance between battery life, system responsivness and performance
Contributors:
@xFirefly93
Created: 2019-01-06
Last updated: 2019-10-25
Note: The changelogs have been strictly moved to the release posts.
Thank you for this, I will give it a try. I was hoping someone would come up with a script that we can use to automate whatever we want at the kernel level. I feel like this could make the stock kernel much better as far as battery life and performance. I know you said use whatever kernel, but Do you recommend using the stock kernel for this?
freebee269 said:
Thank you for this, I will give it a try. I was hoping someone would come up with a script that we can use to automate whatever we want at the kernel level. I feel like this could make the stock kernel much better as far as battery life and performance. I know you said use whatever kernel, but Do you recommend using the stock kernel for this?
Click to expand...
Click to collapse
Of course. BlackenedMod is universal across the whole Pixel 3 (XL) line-up, so it will work more than perfect with stock kernel, if that is what you are using!
:highfive:
On 2xl there was a file wich showed that mod works. How about 3 xl?
I remember on the pixel 2 XL there would be a file formed internal storage that showed that the script was working. That doesn't seem to happen on this device?
xFirefly93 said:
Of course. BlackenedMod is universal across the whole Pixel 3 (XL) line-up, so it will work more than perfect with stock kernel, if that is what you are using!
:highfive:
Click to expand...
Click to collapse
i was using proton kernel. so i went back to stock kernel through fastboot. upon booting the white google splash screen popped for about 1 sec then my phone rebooted and i got the your device is corrupt screen. i then rebooted to bootloader and loaded twrp img file. i then rooted the stock kernel with magisk. after that i still got the your device is corrupt message but i was able to continue after that and it booted up fine. so looks like you dont want to do this on stock kernel that is not rooted. heh.
it looks like my phone keeps saying my device is corrupted. i've restarted 2 times and both times it says that and you cant get past that screen unless you hit continue. any ideas how to get this to work without the phone doing that?
blaze9090 said:
On 2xl there was a file wich showed that mod works. How about 3 xl?
Click to expand...
Click to collapse
Gordietm said:
I remember on the pixel 2 XL there would be a file formed internal storage that showed that the script was working. That doesn't seem to happen on this device?
Click to expand...
Click to collapse
For now, you have to manually create a folder in your internal storage named "logs" (without quotes) because of some security kind of thing that Google have addee which prevents "automatically" created folders to even be made at all.
Otherwise the specific output log, that tells you if the script could execute or not, won't be generated because of a non-existing path / folder.
I will though look around for a possible workaround and see if it can be added directly within the BlackenedMod script for maximal flexibility directly on-the-fly.
freebee269 said:
i was using proton kernel. so i went back to stock kernel through fastboot. upon booting the white google splash screen popped for about 1 sec then my phone rebooted and i got the your device is corrupt screen. i then rebooted to bootloader and loaded twrp img file. i then rooted the stock kernel with magisk. after that i still got the your device is corrupt message but i was able to continue after that and it booted up fine. so looks like you dont want to do this on stock kernel that is not rooted. heh.
Click to expand...
Click to collapse
You need Magisk (=root) and the Busybox Magisk module for even being able to use BlackenedMod.
Installed in Pixel 3 with Botleggers and Proton V10, at the moment everything is perfect, thanks for the work! I will report results!
Enviado desde mi Pixel 3 mediante Tapatalk
gaseoso said:
Installed in Pixel 3 with Botleggers and Proton V10, at the moment everything is perfect, thanks for the work! I will report results!
Enviado desde mi Pixel 3 mediante Tapatalk
Click to expand...
Click to collapse
Enjoy!
xFirefly93 said:
You need Magisk (=root) and the Busybox Magisk module for even being able to use BlackenedMod.
Click to expand...
Click to collapse
it looks like my phone keeps saying my device is corrupted. i've restarted 2 times and both times it says that and you cant get past that screen unless you hit continue. any ideas how to get this to work without the phone doing that?
freebee269 said:
it looks like my phone keeps saying my device is corrupted. i've restarted 2 times and both times it says that and you cant get past that screen unless you hit continue. any ideas how to get this to work without the phone doing that?
Click to expand...
Click to collapse
Try with clean flashing stock firmware.
*Deleted*
xFirefly93 said:
Try with clean flashing stock firmware.
Click to expand...
Click to collapse
that worked. i backed up my current system image and data in twrp. then did the flash-all.bat without -w. then went back into twrp and rooted the stock kernel. then went back into twrp and restored my backup. thanks a lot. will report back on how its gone after a couple days.
Telegram:
Not for going off-topic far too much now but..
If you want to hang out a little, try previews / betas of BlackenedMod for Pixel 3 (XL) before they are officially released or just want to meet a lot of awesome people from every possible corner of the woeld - then join the official Telegram group, fully dedicated to the P3(XL) line-up here.
:highfive:
Will you eventually have different versions for different kernels or are you keeping the mod universal for the pixel 3 XL?
Gordietm said:
Will you eventually have different versions for different kernels or are you keeping the mod universal for the pixel 3 XL?
Click to expand...
Click to collapse
I am keeping it universal with everything good / great / greater than greatest from every kernel organized in the same package and place.
so i followed instructions, got it all done, rebooted, i'm good to go? don't need to do anything just set it up and go right?
Is there a way to tell if this is working?
Dear XDA members, I need your help and suggestion for accomplishing following goal:
A. Need to have stock ROM so that following works fine:
1. all bank/wallet app (phonepe, mobikwik dont work on custom rom)
2. Office apps (O356) with device admin.
3. VoLTE (dont work on custom rom)
B. Change CPU and GPU MIN frequencies so that phone becomes more responsive.
I am impressed with the performance settings (available under Battery menu) from the LinageOS. If similar setup can be done via some script. Or by permanently modifying the related config files for 'Quick' mode.
C. Implement following tweaks as permanent:
ro.media.enc.jpeg.quality=100
persist.camera.eis.enable=1
debug.performance.tuning=1
ro.lcd_min_brightness=1
Show boot logs (similar to linux boot) in place on boot animation
Can someone please guide me how to achieve this.
Dear Mods, please feel free to move this help request to appropriate section/group.
Many thanks in advance.
Regards,
VK
PS: My old Moto Defy still with me and in working condition.