Giter VIP home page Giter VIP logo

kernel_adiutor's Introduction

This project is currently inactive.

KernelAdiutor

Build Status

Screenshot

Kernel Downloader

This is a feature which allows the user to download different custom kernels for their device. To add more kernel the developers have to add support by their own. I wrote up a documentation which explains how to do this.

Report a bug or request a feature

You can report a bug or request a feature by opening an issue.

How to report a bug

  • A detailed description of the bug
  • Logcat
  • Make sure there are no similar bug reports already

How to request a feature

  • A detailed description of the feature
  • All kind of information
  • Paths to sys interface
  • What's the content if the sys file
  • How to apply a new value
  • Make sure there are no similar feature requests already

Download & Build

Clone the project and come in:

$ git clone git://github.com/yoinx/kernel_adiutor.git
$ cd KernelAdiutor
$ ./gradlew build

Credits

I used following libraries:

Also codes from different people:

Andrei F.

apbaxel

(Many sys interface paths has been taken from his UKM-Project)

Brandon Valosek

Google

License

Copyright (C) 2015 Willi Ye

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

kernel_adiutor's People

Contributors

akhilnarang avatar androplus-org avatar benschhold avatar cannondalev2000 avatar electrex avatar eliminater74 avatar eroneko avatar friederbluemle avatar fusionjack avatar grarak avatar javelinanddart avatar jcruz avatar joeschubert avatar mydongistiny avatar nicksspirit avatar olivier97 avatar pafcholini avatar placiano avatar sayeed99 avatar shinyside avatar shmuelr avatar shoaib0597 avatar slo-loris avatar someshthakur avatar swapnil133609 avatar thenotonly avatar tomoms avatar yunowo avatar zeeshanhussain avatar zwliew avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

kernel_adiutor's Issues

Some bugs

Hey yoinx.

I was using some of yours tree changes to update my KA. and found some things that don't work.

Android logging

It can't read the service state, if I disable or enable and go to misc is always on. I test this on yours V13...

I fix using mpdecision code for that... But only test on my tree.

https://github.com/bhb27/KernelAdiutor/commit/8c784cb34c99c82cad5bf88e8fdc6c800182cebf

After this two commit

601d161

ac3153b

per app doesn't work it seems all ok but the profile don't load when open the app... I check the json and some app name are wrong.

I'm using CM base 6.0.1 ROM and have a lot of app freeze via Titanium backup, and some of the app on the json are the one I block, if I try to load the wrong app noting goes... so some is wrong on those code. Maybe is only on my tree as I didn't try to build yours.

Reverting those two commit changes, all works for me, I don't understand those changes to Fix. 👍

List of CPU governors broken

Hey man,
Sorry to bother you again. ;)
I have now added a bunch of governors into my kernel, so that in the end there are 32 governors.

When I use your app to change the governor, then in the list I see the first 17 governors normal. But item no. 18 is combined with the next one, e.g. interactive_proelementalx.

First I thought that I messed up something. I looked into my kernel config, but I couldn't figure any issue there.

Any idea what went wrong here?

Please add support for lazyplug

For lazyplug:
/sys/module/lazyplug/parameters/
and in this folder are: cpu_nr_run_threshold, lazyplug_active, nr_possible_cores, nr_run_hysteresis, nr_run_profile_sel, touch_boost_active

MSM Performance Hotplug - allows only 4 cores instead of 8

I am running Ressurrection Remix 5.7.2 (Adnroid 6.0.1) and Sensei Kernel 2.3R3 on Xiaomi Mi 4i.
Kernel Aditor Mod V15.

When I got to KA Mod --> CPU Hotplug --> MSM Performance Hotplug I can set these values:

  • "Disabled"
  • "-----"
  • "1, 2, 3, 4"

Looks strange since my phone has and 8 core CPU - MSM8939

Hotplugs

screenshot_20160604-133049
screenshot_20160604-133102
screenshot_20160604-133119
screenshot_20160604-132930

[fix]Hotplugs: Show tunables for hotplugs without an enable/disable toggle.
I am a bit confused how hotplug settings work now with v11.
In v10 Intelliplug, AutoSMP and Bricked Hotplug had on/off toggles. I used Bricked Hotplug with my own settings. Now, in v11 i see the tunables for them without toggles, and a warning that more than 1 activated hotplug can cause problems.
Does it mean that Intelli,AutoSMP and Bricked are running at the same time now? Beacuse i can't disable Intelli and AutoSMP with a toggle. My CPU usage doesn't follow Bricked Hotplug settings. Last screenshot shows toggles in v10.

Values for Sultan's CPU Input Boost driver

Hi!

I had noticed that you had said that you would add features were we able to provide the sysfs paths for things and what their intention is. Sultan's CPU input boost driver is better than CAFs implementation in my experience and it would be awesome were you to add native support for it in your app

Here are the values:

/sys/kernel/cpu_input_boost/enabled (export 1 to enable the driver, 0 to disable it)
/sys/kernel/cpu_input_boost/ib_freqs (you choose two frequencies, one acts as the initial boosting frequency and the other is used later so for instance on an msm8974pro device, Sultan has it set to 1190400 and 1497600)
/sys/kernel/cpu_input_boost/ib_duration_ms (you choose the input boost duration in milliseconds)

That is all.

Just a suggestion, but maybe in the future we could manage sysfs stuffs from KA just like in EX kernel manager? Then there wouldn't have to be so many feature requests... Though native support is good

CPU Governor Locker

I want to have a feature that can lock the CPU governor, because when I powering on or rebooting my phone, it changes from "interactive" to "sprdemand" governor. Thank you.

AutoHBM Steps

Note to myself. Sort of like a TODO list

Increase AutoHBM threshold steps from 2000 to 10000. Users are reporting flickering as 2000 isn't high enough.

voltage table enhancement?

Any way to store the global voltage offset differently? If a user sets a +25 offset and doesn't remember what they set it to, they have no practical and easy way to know if they set it to +25 or +15 or anything else, for that matter. Might require a lot of code re-writing. Might be more effort than you want to put into it, but would be damned fine feature!

As always, amazing work @yoinx!

Add AiO HotPlug (complete sysFS entries and Descriptions are provided)

Hi @yoinx,

I request you to add AiO HotPlug, an All in One HotPlug for Traditional Quad-Core and Hexa/Octa-Core big.LITTLE SoCs. I have developed this HotPlug myself.

This HotPlug offers a total of 4 sysFS entries. They are (order-wise)---

1. Enable/Disable Toggle---
sysFS Path---
/sys/kernel/AiO_HotPlug/toggle
Range---
1 or 0

2. A Traditional "Number of Online Cores" SeekBar---
sysFS Path---
/sys/kernel/AiO_HotPlug/cores
Range---
1 to 4

3. A "big Cluster" SeekBar---
sysFS Path---
/sys/kernel/AiO_HotPlug/big_cores
Range---
0 to 2 (on Hexa-Core big.LITTLE SoCs)
0 to 4 (on Octa-Core big.LITTLE SoCs)
Note:
At value 0, the entire Cluster will be switched off.

4. A "LITTLE Cluster" SeekBar---
sysFS Path---
/sys/kernel/AiO_HotPlug/LITTLE_cores
Range---
0 to 4
Note:
At value 0, the entire Cluster will be switched off.

Misc. Notes--

  1. The HotPlug will expose only 1 and 2 sysFS entries if it is running on a Traditional Quad-Core SoC.
  2. The HotPlug will expose only 1, 3 and 4 sysFS entries if it is running on a Hexa/Octa-Core big.LITTLE SoC.

Optional Requests---
1. Titles and Descriptions---
a. Enable/Disable Toggle---
Main Title-----AiO HotPlug
Description---An All in One HotPlug, developed by Shoaib Anwar a.k.a. Shoaib0597, for all main types of SoCs.

b. "Number of Online Cores" SeekBar
Main Title-----Number of Online Cores
Description---No Description (Leave Blank)

c. "big Cluster" SeekBar---
Main Title-----big Cluster
Description---Set the Number of Online Cores. At value 0, the entire Cluster will be switched off (only if atleast 1 LITTLE Core is active and HotPlug Boost Toggle (available in CPU TAB) is Enabled).
Note: At value of 0 of this SeekBar, instead of showing "0", show "Offline".

d. "LITTLE Cluster" SeekBar---
Main Title-----LITTLE Cluster
Description---Set the Number of Online Cores. At value 0, the entire Cluster will be switched off (only if atleast 1 big Core is active).
Note: At value of 0 of this SeekBar, instead of showing "0", show "Offline".

2. Please, if possible, try to copy/paste these descriptions exactly. :)

Thanks! I hope this gets merged soon. :)

Sweep2wake missings controls

Hello Yoinx. I have seen that missing controls in sweep2wake feature. Here I show you Flar2 xda post:

Sweep2wake

Sweep2wake allows you to turn on your phone by swiping your finger across the screen. There are four sweep actions that will work

Gesture........Value
Sweep right......1
Sweep left........2
Sweep up.........4
Sweep down....8

Add up the values for each gesture you want to enable and put the total in /sys/android_touch/sweep2wake. For example, to enable all gestures, the value is 15 (1+2+4+8). To enable sweep right, sweep left and sweep up, the value is 7 (1+2+4)

/sys/android_touch/sweep2wake

Bricked thermal FC

Hey 😃 I'm having FC when updating Bricked thermal config.. Value is saved, but app closes.

06-01 06:45:59.480 V/sensors_hal_Light(1072): processReportInd: 350000 53.000000
06-01 06:45:59.480 D/sensors_hal_Ctx(1072): poll:polldata:1, sensor:1, type:5, x:53.000000 y:0.000000 z:0.000000
06-01 06:46:00.870 D/AndroidRuntime(11282): Shutting down VM
06-01 06:46:00.879 E/AndroidRuntime(11282): FATAL EXCEPTION: main
06-01 06:46:00.879 E/AndroidRuntime(11282): Process: com.grarak.kerneladiutor, PID: 11282
06-01 06:46:00.879 E/AndroidRuntime(11282): Theme: themes:{default=overlay:com.bulletproof136.material.ColorsDark, fontPkg:system, com.android.systemui=overlay:com.bulletproof136.material.ColorsDark, com.android.systemui.navbar=overlay:com.bulletproof136.material.ColorsDark}
06-01 06:46:00.879 E/AndroidRuntime(11282): java.lang.IllegalMonitorStateException: object not locked by thread before notify()
06-01 06:46:00.879 E/AndroidRuntime(11282): at java.lang.Object.notifyAll(Native Method)
06-01 06:46:00.879 E/AndroidRuntime(11282): at com.grarak.kerneladiutor.fragments.kernel.ThermalFragment.onItemSelected(ThermalFragment.java:630)
06-01 06:46:00.879 E/AndroidRuntime(11282): at com.grarak.kerneladiutor.elements.cards.PopupCardView$DPopupCard$1.onItemSelected(PopupCardView.java:238)
06-01 06:46:00.879 E/AndroidRuntime(11282): at com.grarak.kerneladiutor.elements.cards.PopupCardView$1.onMenuItemClick(PopupCardView.java:70)
06-01 06:46:00.879 E/AndroidRuntime(11282): at android.support.v7.widget.PopupMenu.onMenuItemSelected(PopupMenu.java:227)
06-01 06:46:00.879 E/AndroidRuntime(11282): at android.support.v7.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:811)
06-01 06:46:00.879 E/AndroidRuntime(11282): at android.support.v7.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:153)
06-01 06:46:00.879 E/AndroidRuntime(11282): at android.support.v7.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:958)
06-01 06:46:00.879 E/AndroidRuntime(11282): at android.support.v7.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:948)
06-01 06:46:00.879 E/AndroidRuntime(11282): at android.support.v7.internal.view.menu.MenuPopupHelper.onItemClick(MenuPopupHelper.java:187)
06-01 06:46:00.879 E/AndroidRuntime(11282): at android.widget.AdapterView.performItemClick(AdapterView.java:310)
06-01 06:46:00.879 E/AndroidRuntime(11282): at android.widget.AbsListView.performItemClick(AbsListView.java:1195)
06-01 06:46:00.879 E/AndroidRuntime(11282): at android.widget.AbsListView$PerformClick.run(AbsListView.java:3235)
06-01 06:46:00.879 E/AndroidRuntime(11282): at android.widget.AbsListView$4.run(AbsListView.java:4080)
06-01 06:46:00.879 E/AndroidRuntime(11282): at android.os.Handler.handleCallback(Handler.java:739)
06-01 06:46:00.879 E/AndroidRuntime(11282): at android.os.Handler.dispatchMessage(Handler.java:95)
06-01 06:46:00.879 E/AndroidRuntime(11282): at android.os.Looper.loop(Looper.java:148)
06-01 06:46:00.879 E/AndroidRuntime(11282): at android.app.ActivityThread.main(ActivityThread.java:5475)
06-01 06:46:00.879 E/AndroidRuntime(11282): at java.lang.reflect.Method.invoke(Native Method)
06-01 06:46:00.879 E/AndroidRuntime(11282): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
06-01 06:46:00.895 I/Kernel Adiutor(11282): Run command: echo 1574400 > /sys/kernel/msm_thermal/conf/allowed_low_freq
06-01 06:46:00.941 W/DropBoxManagerService(1072): Dropping: system_app_crash (1976 > 0 bytes)
06-01 06:46:00.952 W/ActivityManager(1072): Force finishing activity com.grarak.kerneladiutor/.MainActivity

Auto-Apply profiles

I suggest this features because i was using it in "CPU control app" it enable the profile automatically without you apply it each moment like when "screen off" or "in-call", and with my experience i see it very professional.

Best regards :D

Showing the actual charging rate in KA Mod --> "Power and Battery"

I am running Ressurrection Remix 5.7.2 (Adnroid 6.0.1) and Sensei Kernel 2.3R3 on Xiaomi Mi 4i.
Kernel Aditor Mod V15.

Would be nice to see the actual charing rate in "Power and Battery".

On my phone these values seem to be somewhere here:
/sys/class/power_supply/

But unfortunately I could not locate the exact file until now. Perhaps you can find it.

MSM USB OTG settings does not stick after reboot

Refer to; 4bda06a

When enabling the control toggle I can see this line:
I Kernel Adiutor: Run command: echo 1 > /sys/module/msm_otg/parameters/otg_hack_enable

And by checking the actual value, it seemed to work as expected.
root@:/ # cat /sys/module/msm_otg/parameters/otg_hack_enable
1

As mentioned in the issue title the settings doesn't stick and also it does not appear in the list of startup commands. Maybe there is a common root cause. What do you think?

@yoinx

Vibration on the HTC 10

I discussed it with @tbalden some months ago but somehow forgot it. It seems like it isn't only me getting the following error. The only kernel app that seems to be able to handle it currently is EX Kernel Manager by flar2. Well, as the title says the vibration on the HTC 10 can't be set at all. Kernel Adiutor can't read the value as it seems. In the attachment you can find two screenshots I took which may help. I hope someone can fix that. Thanks a lot!
screenshot_20170310-173649
screenshot_20170310-173639

Edit:
Here's a working solution, the code of the beanstalk settings app:

/**
 * Copyright (C) 2013-2016 The CyanogenMod Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.settings.hardware;

import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.graphics.Color;
import android.graphics.LightingColorFilter;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
import android.os.Bundle;
import android.os.Vibrator;
import android.support.v7.preference.DialogPreference;
import android.support.v7.preference.PreferenceManager;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.Button;

import com.android.settings.CustomDialogPreference;
import com.android.settings.R;

import cyanogenmod.hardware.CMHardwareManager;
import cyanogenmod.providers.CMSettings;

public class VibratorIntensity extends CustomDialogPreference
        implements SeekBar.OnSeekBarChangeListener {

    private int mOriginalValue;
    private int mMinValue;
    private int mMaxValue;
    private int mDefaultValue;
    private int mWarningValue;

    private SeekBar mSeekBar;
    private TextView mValueText;
    private TextView mWarningText;

    private Drawable mProgressDrawable;
    private Drawable mProgressThumb;
    private LightingColorFilter mRedFilter;

    public VibratorIntensity(final Context context, final AttributeSet attrs) {
        super(context, attrs);

        setDialogLayoutResource(R.layout.vibrator_intensity);
    }

    @Override
    protected void onPrepareDialogBuilder(final AlertDialog.Builder builder,
            final DialogInterface.OnClickListener listener) {
        builder.setNeutralButton(R.string.vibrator_intensity_dialog_reset, null);
    }

    @Override
    protected void onBindDialogView(final View view) {
        super.onBindDialogView(view);

        mSeekBar = (SeekBar) view.findViewById(com.android.internal.R.id.seekbar);
        mValueText = (TextView) view.findViewById(R.id.value);
        mWarningText = (TextView) view.findViewById(R.id.warning_text);

        // Read the current value in case user wants to dismiss his changes
        final CMHardwareManager hardware = CMHardwareManager.getInstance(getContext());
        mOriginalValue = hardware.getVibratorIntensity();
        mWarningValue = hardware.getVibratorWarningIntensity();
        mMinValue = hardware.getVibratorMinIntensity();
        mMaxValue = hardware.getVibratorMaxIntensity();
        mDefaultValue = hardware.getVibratorDefaultIntensity();

        final String message = getContext().getResources().getString(
                R.string.vibrator_intensity_dialog_warning,
                intensityToPercent(mMinValue, mMaxValue, mWarningValue));
        mWarningText.setText(message);
        if (mWarningValue <= 0) {
            mWarningText.setVisibility(View.GONE);
        }

        final Drawable progressDrawable = mSeekBar.getProgressDrawable();
        if (progressDrawable instanceof LayerDrawable) {
            LayerDrawable ld = (LayerDrawable) progressDrawable;
            mProgressDrawable = ld.findDrawableByLayerId(android.R.id.progress);
        }
        mProgressThumb = mSeekBar.getThumb();
        mRedFilter = new LightingColorFilter(Color.BLACK,
                getContext().getResources().getColor(android.R.color.holo_red_light));

        mSeekBar.setOnSeekBarChangeListener(this);
        mSeekBar.setMax(mMaxValue - mMinValue);
        mSeekBar.setProgress(mOriginalValue - mMinValue);
    }

    @Override
    protected boolean onDismissDialog(final DialogInterface dialog, final int which) {
        // Can't use onPrepareDialogBuilder for this as we want the dialog
        // to be kept open on click
        if (which == DialogInterface.BUTTON_NEUTRAL) {
            mSeekBar.setProgress(mDefaultValue - mMinValue);
            setVibratorIntensity(mDefaultValue);
            testVibration();
            return false;
        }
        return true;
    }

    @Override
    protected void onDialogClosed(final boolean positiveResult) {
        super.onDialogClosed(positiveResult);

        if (positiveResult) {
            // Store percent value in SharedPreferences object
            final SharedPreferences prefs = PreferenceManager
                    .getDefaultSharedPreferences(getContext());
            final int intensity = mSeekBar.getProgress() + mMinValue;
            final int percent = intensityToPercent(mMinValue, mMaxValue, intensity);
            prefs.edit().putInt(CMSettings.Secure.VIBRATOR_INTENSITY, percent).commit();
            CMSettings.Secure.putInt(getContext().getContentResolver(),
                    CMSettings.Secure.VIBRATOR_INTENSITY, intensity);
        } else {
            setVibratorIntensity(mOriginalValue);
            CMSettings.Secure.putInt(getContext().getContentResolver(),
                    CMSettings.Secure.VIBRATOR_INTENSITY, mOriginalValue);
        }
    }

    @Override
    public void onProgressChanged(
                final SeekBar seekBar, final int progress, final boolean fromUser) {
        final int intensity = progress + mMinValue;
        final boolean shouldWarn = mWarningValue > 0 && intensity >= mWarningValue;

        if (mProgressDrawable != null) {
            mProgressDrawable.setColorFilter(shouldWarn ? mRedFilter : null);
        }
        if (mProgressThumb != null) {
            mProgressThumb.setColorFilter(shouldWarn ? mRedFilter : null);
        }

        mValueText.setText(
                String.format("%d%%", intensityToPercent(mMinValue, mMaxValue, intensity)));
    }

    @Override
    public void onStartTrackingTouch(final SeekBar seekBar) {
        // Do nothing
    }

    @Override
    public void onStopTrackingTouch(final SeekBar seekBar) {
        setVibratorIntensity(seekBar.getProgress() + mMinValue);
        testVibration();
    }

    private void setVibratorIntensity(final int intensity) {
        final CMHardwareManager hardware = CMHardwareManager.getInstance(getContext());
        hardware.setVibratorIntensity(intensity);
    }

    private void testVibration() {
        final Vibrator vib = (Vibrator) getContext().getSystemService(Context.VIBRATOR_SERVICE);
        vib.vibrate(200);
    }

    private static int intensityToPercent(final int min, final int max, final int value) {
        int percent = Math.round((value - min) * (100.f / (max - min)));

        if (percent > 100) {
            percent = 100;
        } else if (percent < 0) {
            percent = 0;
        }

        return percent;
    }

    private static int percentToIntensity(final int min, final int max, final int percent) {
        int value = Math.round((((max - min) * percent) / 100.f) + min);

        if (value > max) {
            value = max;
        } else if (value < min) {
            value = min;
        }

        return value;
    }
}

Some settings don't stick when default profile is activated and some profiles has issues with staying on

The main issues I've been having are with the default profile not enabling everything when it is automatically triggered to apply. Like GPU max freq doesn't set to the profile's settings and sometimes other things. Another issue is with the per app profiles not enabling or staying enabled when using said app
Example: I open YouTube. It enables the profile that is set to apply when that app is open. Sometimes it will flip between the home/default profile and the profile that is applied to the YouTube app. This doesn't happen with just the YouTube app. It sometimes happens with many other apps too.

MSM Limiter different for "big" and "little"

I am running Ressurrection Remix 5.7.2 (Adnroid 6.0.1) and Sensei Kernel 2.3R3 on Xiaomi Mi 4i.
Kernel Aditor Mod V15.

KA Mod --> CPU --> MSM Limiter enabled
per core control disabled.

New options are available only for "big" but not for "little":

  • Max Frequency
  • Suspend Min Frequency
  • Suspend Max Frequency

Governor for both "big" and "little" is yankactive.

Do not disable/enable CPU on startup commands when changing something on "CPU"

I am running Ressurrection Remix 5.7.2 (Adnroid 6.0.1) and Sensei Kernel 2.3R3 on Xiaomi Mi 4i.
Kernel Aditor Mod V15.

I noticed that KA Mod will add some startup commands regarding the current CPU state.
So if I go to "CPU" menue and changing frequencies and so on then it is common that the CPU cores will turn on and of automatically without doing anything. When leaving this menue and I only changed the minimum or maximum CPU MHz then KA Mod will add the commands to disable/enable CPU cores to the startup commands.

In most cases this shouldn't be a problem because the CPU hotplug dynamically enables/disables cores but I think this should not be in startup commands if the user did not change anything on CPU cores actively.

So the CPU menue should have the possibility like "CPU core selection" = manually oder dynamic.
When set to manually the cores should be configured by the user and the commands should go to the startup commands.

If set to dynamically it should be ignored for startup commands.

Perhaps this feature could be combined with the option "Max CPUs Online" so that the user can select which of the CPUs should be online. So I have 4 "big" cores and 4 "little" cores. If I set it to 6 cores maximum I perhaps would like to use 4 "little" cores and only 2 "big" cores.

Same perhaps for "Minimum Cores allowed when screen off". Could be like the "MSM Limiter" where you can select "per core control".

GPU max frequency reverts after reboot

I am running Ressurrection Remix 5.7.2 (Adnroid 6.0.1) and Sensei Kernel 2.3R3 on Xiaomi Mi 4i.
Kernel Aditor Mod V15.

I am setting the max frequency of the GPU to 465MHz instead of 700MHz. This command is in the "startup commands" and is persistent until reboot. After a reboot it changes back to 700MHz.

Going to the KA Mod settings --> Apply on boot --> Test will set the correct value in "GPU" for maximum frequency.

Delay is set to 20sec after reboot.

MSM_Limiter does not recognize 8 core CPU in "Per Core control"

I am running Ressurrection Remix 5.7.2 (Adnroid 6.0.1) and Sensei Kernel 2.3R3 on Xiaomi Mi 4i.
Kernel Aditor Mod V15.

Going to KA Mod --> CPU --> MSM_Limiter (enabled) and then enable "Per core control", too does not reflect the real CPU hardware.

Maximum Frequency:
CPU0, CPU1, CPU2 and CPU3 shows the max frequency for the 4 big CPUs but also shows 0MHz fpr CPU4 - CPU7.

Min Suspend Frequency:
shows the same behaviour als "Maximum Frequency". Only has parameters set for the first cores but not the cores CPU4 - CPU7.

Suspend Max frequency:
Not able to set it per CPU core but only for all cores.

Select governors per core:
Again only shows the first 4 cores with a value but not the other four cores CPU4 - CPU7

LITTLE:
does not show any additional options because KA Mod probably does not recognize the LITTLE cores. Probably related to the things mentioned above.

PS:
Disabling MSM_Limiter without disabling "Per core control" will still show the "Edit tunables ... Governors" for every core. So first have to enable MSM_Limiter again, disable per core control and the disable MSM_Limiter

Franco's thermal driver is reporting the wrong temp for throttling zones

Hi again. There seems to be an issue with the zones reported for Franco's driver with your sysfs enhancements. When using a factor that is not incremented by 1 as the multiplier for the calculation of threshold limits, KA assumes that the zones are in increments depicted by the thermal step value. Of course, with your defaults, this works fine as everything is incremented by 1, but I wanted something more dynamic so I utilized factors of 1,2,4,5,6,7, and 9 with a step value of 2. This should show a deviation of 2C,4C,8C,10C,12C,14C, and 18C, but instead in KA it is reported as being 2,4,6 etc... ahead of the base throttling value, so for instance, with my driver, the fourth step, third level, should be 46C, but it is reported in KA as only 44C. I could be wrong however though, and KA could be providing the right values, though I assume that I am right in my thinking. Here is a link to my heavily modified version of your Franco driver:

https://raw.githubusercontent.com/CertifiedBlyndGuy/ewok-onyx/Ewok/drivers/thermal/msm_thermal.c

It features 8 throttling steps (though KA only displays 4 of them), and the ability to shut cores off one by one once the 4th step has been reached. It also uses VADC polling instead of TSENS too

Schedule workqueues on awake CPUs to save power

Hi,

I'm using your Kernel Adiutor mod on my Beanstalk builds (experimental branch). I just compiled your sources using gradle. First I want to thank you for providing this awesome project but I also want to tell you about a bug I experience. Dunno if it's a Snapdragon 820/821 related bug but if I enable "Schedule workqueues on awake CPUs to save power" in the CPU section this setting is disabled whenever I reopen this activity so I assume it is not applied on my Snapdragon 820 HTC 10 phone. If I use the official Kernel Adiutor by Grarak this feature can be applied. The catlog doesn't tell me anything helpful and due to a lack of Java skills I couldn't fix this by myself to send a pull request. I hope you're willing to help me and persumeably many others as well. Thanks a lot in advance.

Regards
Nico

Thermald deactivation does not stick after reboot

I am using Intellithermal for CPU temp control, and Thermald has to be deactivated when using it. Deactivation works just fine, but after reboot it is always active (along with Intellithermal), the Thermald deactivation does not get applied on boot

F-Droid Support?

Since this app is open source can you please get this app in the F-Droid repo since the original project is using non-free code?

Thanks!

VM hang

Is it ROM bug? When I click "More" button in VM settings (e.g at the right of Min free Kilobytes) popup is displayed but app hangs and only force close helps..
Full log http://pastebin.com/6t0L4Jz9
Edit > Doesn't matter which theme I'm using..

Hima Hotplug strings

if [ -d "/sys/kernel/hima_hotplug" ]; then
$BB echo '{ SPane:{
title:"Hima Hotplug"
}},'
if [ -f "/sys/kernel/hima_hotplug/hima_hotplug_active" ]; then
HIMAN=$BB cat /sys/kernel/hima_hotplug/hima_hotplug_active
$BB echo '{ SCheckBox:{
label:"Hotplug Enabled",
description:"Hotplug Driver ported from HTC m9.",
default:'$HIMAN',
action:"generic /sys/kernel/hima_hotplug/hima_hotplug_active"
}},'
fi
if [ -f "/sys/kernel/hima_hotplug/current_profile_no" ]; then
HP=$BB cat /sys/kernel/hima_hotplug/current_profile_no;
$BB echo '{ SOptionList:{
title:"Hotplug Style",
description:"Sets how hotplug drives cpus.",
default:'$HP',
action:"generic /sys/kernel/hima_hotplug/current_profile_no",
values:{
1:"Power Save", 0:"Balanced", 2:"Performance"
}
}},'
fi
if [ -f "/sys/kernel/hima_hotplug/min_cpus_online" ]; then
CPU=$BB cat /sys/kernel/hima_hotplug/min_cpus_online
$BB echo '{ SSeekBar:{
title:"Minimum CPUs online at anytime",
min:1,
max:8,
step:1,
default:'$CPU',
action:"generic /sys/kernel/hima_hotplug/min_cpus_online"
}},'
fi
if [ -f "/sys/kernel/hima_hotplug/max_cpus_online" ]; then
CPU=$BB cat /sys/kernel/hima_hotplug/max_cpus_online
$BB echo '{ SSeekBar:{
title:"Maximum CPUs online at anytime",
min:1,
max:8,
step:1,
default:'$CPU',
action:"generic /sys/kernel/hima_hotplug/max_cpus_online"
}},'
fi
if [ -f "/sys/kernel/hima_hotplug/def_sampling_ms" ]; then
DS=$BB cat /sys/kernel/hima_hotplug/def_sampling_ms;
$BB echo '{ SSeekBar:{
title:"Defer Sampling",
min:0,
max:100,
unit:" ms",
step:1,
default:'$DS',
action:"generic /sys/kernel/hima_hotplug/def_sampling_ms"
}},'
fi
fi`

Franco Sound Control Addition

This is located at /sys/devices/virtual/misc/sound_control
then there is options:
camera_mic_boost
highperf_enabled
dev mic_boost
speaker_l_boost
speaker_r_boost
volume_boost
uevent
The speaker L and R boost need added, camera mic boost, mic boost, and volume boost is for headphone, they all need added to control this sound from Franco Sound Control.

Here is a link to the values from GitHub:

https://github.com/DespairFactor/angler/blob/1fd31829e205118ad7a9373ec13a69dd96d2e25e/drivers/misc/sound_control.c

and you may need this as well:

https://github.com/DespairFactor/angler/blob/1a1e22f30832194c20d71a8bceafe205c2ef6503/include/linux/sound_control.h

I am not very sure about all this, but I think this is all you need, so hopefully what I have provided will allow you to get all the information needed to implement this into the KA mod version, which I love!

CPU_Current

Google has add the current for it frequency for it core I don't know maybe is possible to control these values like CPU_Voltage. It was add to 8084 devices and some other msm8*** devices..

the commit that add it 8084
fgl27/BHB27Kernel@0e332d0
+
fgl27/BHB27Kernel@9d21c12

The file is at:
sys/devices/system/cpu/cpufreq/current_in_state

the file content is:
https://github.com/bhb27/KernelAdiutor/blob/json/current_in_state

My have over and under frequency, the file content will be empty if the Dev has made over and/or under clock and didn't add the values for the new frequency on the current table so is need to do something like this:

fgl27/BHB27Kernel@778d75b

@yoinx @shmuelr if you guys can make KA to control this let me know.

Possibility: Edit "Startup commands" and "Delete" + "Edit" Profile commands

There is a possibility to "edit" or to "copy" a command in "startup commands" but it would be useful to have the possibility to "Edit" the existing startup commands.

Same is for the "Profile" --> "information" windows. It would be very hand and easier to check the commands in a profile if they had an order like the "startup commands" and if there were the same possibilities like edit, delete, copy.

Sometimes it would be much easier to just switch a "0" to a "1" without first loading a profile, move to the specific menue, change the value, go to startup commands and check if the values are all correct and then save it again as a profile.

PS:
Could help with issue #70 and could help with issue #72

So this is more a "feature request" and should be handled with low priority I think.

Adreno_Idler reverts to "disabled" in KA Mod GUI

I am running Ressurrection Remix 5.7.2 (Adnroid 6.0.1) and Sensei Kernel 2.3R3 on Xiaomi Mi 4i.
Kernel Aditor Mod V15.

In the GPU menue I set "Adreno_Idler" to enable, it adds the command to the startup command but every time leaving the "GPU" menue and then go back to "GPU" menue shows that Adreno_Idler again disabled .

Separate Apply on boot in cpu governor setting.

A separate apply on boot toggle option will be very helpful as whenever i tune my governor, the settings don't stick after rebooting my device even if i have turned on apply on boot in cpu section.

startup commands for GPU and adreno contains double //

Changeing the following parameters leads to double // in parameter path in startup commands:

adreno_idler_downdifferential
adreno_idler_idleworkload
adreno_idler_idlewait

The following command from GPU section seems OK:
adreno_idler_active

Minimum CPU Frequency set but not persistent in GUI

I am running Ressurrection Remix 5.7.2 (Adnroid 6.0.1) and Sensei Kernel 2.3R3 on Xiaomi Mi 4i.
Kernel Aditor Mod V15.

When I set the "minimum" frequency in "CPU" to 200MHz for "big" it is still changing in GUI. The configuration fir "little" is working and persistent in WebUI.

The minimum frequencies in the start commands are correct for 200MHz for "big" and for "little".

CPU governours I used were interactive and yankactive. Both have the same behaviour.
MSM_Hotplux (myfluxi) is enabled.

Request

I need sleep timeout in notification bar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.