[APP][Jul 20th][1.28.2] "NoFrills" CPU Control: configure cpu frequencies & governor

Search This thread

hrk

Inactive Recognized Developer
Sep 4, 2008
1,097
1,048
Rome
[APP][Jul 20th][1.28.2] "NoFrills" CPU Control: configure cpu frequencies & governor

Hi,

I've made a very simple application which can be used to set cpu scaling frequencies and governor. Yeah, imagine SetCPU without profiles, minimal use of RAM, released as open source, and requiring CyanogenMod (or any sysfs-enabled ROM). "No frills" is the right description for it. Source is released under the Apache License, version 2.0, but the resources (i.e.: icons) are released under their original license. The notification icon is mine and is proprietary. This should avoid further market scams.

I've been using it on my Dream and from the start I wanted to "give back" to the community. I asked in CyanogenMod's forum if there was interest for an inclusion into the official Mod, but I got no answers from the team.
Recently, NLJ has been working on a CMPart page for the CPU settings for CM7, so does this put the final nail in the coffin of this app?

I guess it depends on whether CM6 (and lower) will get the CPU settings page and whether people find it useful..
Looks like some people are finding it useful. :)

Problem is: I'm currently calling it "CyanogenMod CPU Governor" (yeah, boring) and I'm using CyanogenMod icon for it. Since it won't be included I feel like I should find a different name and icon, and this is where the community could give back :p... or get a plain "Market" icon and "GUI for cpufreq settings" name. :)

Market links
No-frills CPU (2.1+, ICS look & feel)
No-frills CPU CLASSIC (1.6+, simple/plain look & feel)
If you don't want to use (or can't use) Google's Play Store, it's available through F-Droid.org

Source code
It's now available on GitHub.

Features
- Easy GUI to set frequencies and governor.
- "safety valve" to avoid boot-loops in case of unsafe settings (more info in the FAQ)
- Stats screen to see the effective usage of frequencies

Translations & Localization
Translations are welcome and they are now handled through GetLocalization! It'l make it way easier for people to translate it and for me to update them. I cannot stress enough how I am grateful for the following people, who originally translated this app. Thank you guys! (and keep translating by creating an account on GetLocalization, please! :p)

hrk (Italian), jdb78 (German), kallt_kaffe (Swedish), David Kejzlar (Czech), Ryunosuke Tanaka (Japanese), Charlie Cheung (Traditional and Simplified Chinese), dxdiag32 (Traditional and Simplified Chinese), Corentin Garcia (French), Carlos Camacho (Spanish), dancer_69 (Greek), TorbenKB (Danish), Chris (Brazilian Portuguese), FellowWings (Hungarian), Spaar (Dutch), prescott66 (Slovakian), Marco Bizarro (Portuguese), Cristian Silaghi (Romanian), Cenk H. Uzunboy (Turkish) ... all the other translators can be found on GetLocalization

FAQ
Q: What files do I need?
A: Download the .apk and install it the way you prefer. The .zip is not a flashable zip and is meant for other developers.

Q: I am a ROM cook, can I put your app in my ROM?
A: Sure do! Just contact me and I'll send you the latest .apk. Be sure to make it so that people will get market updates. :)

Q: Do you plan on adding profiles? I'd love to select a different profile for when my screen is off!
A: Short answer is "No". I think that profiles are useless, because that's what governors are already: a profile for your CPU to follow while changing frequencies.
Adding profiles would mean adding the need for more memory, the need to run more often, check if something is happening (screen on, screen off and so on)... all of this without a real benefit.

Q: What is the safety valve you added in 1.3?
A: If you enable "Apply on boot", the "safety valve" works this way: the app checks if your phone didn't shut down properly or either a file named /data/.nocpu or /sd-ext/.nocpu exists.
If this is the case, the values are not applied to avoid a "reboot-loop".
Please note that there are some apps on the market which claim to perform a faster reboot but what they do is like pulling out the battery! Now... do you think it's a proper shut down? :) I guessed so...

Q: Wait, what about those /data/.nocpu /sd-ext/.nocpu files?!
A: They are empty files which were chosen by NameLessJedi as "safety valve" for his own CMPart inside of CyanogenMod7 (remember the history of this app? :)). We decided to cooperate, so I added support for the files and gave him the code to detect an improper shutdown at boot, which he added to his tool. Open source wins!

Q: What are governors and which one should I choose?
A: CPU frequency scaling allows you to change the clock speed of CPUs on the fly. This can save power, because the lower the CPU clock speed, the less power the CPU consumes. Governors are different policies to scale frequency.

- powersave will always set the "min" and never change it
- performance will always set the "max" and never change it
- ondemand (usually the default) will raise the value by a step up when the cpu is used, and lower the value by a step down when the cpu is not (much) used.
- conservative is like ondemand but will be slower when changing frequencies
- interactive is (conceptually) like ondemand but will be quicker when changing frequencies.
- smartass is (conceptually) like interactive, but I haven't understood yet why it's so much smart and loved by users.
- userspace will do nothing at all, so don't choose it. I may hide it in a future release to avoid confusion :)
For a fine grained explanation, check this post!

Q: And what about the I/O scheduler option?
A: I/O means Input/Output and it deals on how read and writes are performed on the internal NAND (not the external card!).
Thanks to roccoadam32, here is a description of the different schedulers:
The Completely Fair Queuing (CFQ) scheduler is the default algorthim in Red Hat Enterprise Linux 4. As the name implies, CFQ maintains a scalable per-process I/O queue and attempts to distribute the available I/O bandwidth equally among all I/O requests. CFQ is well suited for mid-to-large multi-processor systems and for systems which require balanced I/O performance over multiple LUNs and I/O controllers.

The Deadline elevator uses a deadline algorithm to minimize I/O latency for a given I/O request. The scheduler provides near real-time behavior and uses a round robin policy to attempt to be fair among multiple I/O requests and to avoid process starvation. Using five I/O queues, this scheduler will aggressively re-order requests to improve I/O performance.

The NOOP scheduler is a simple FIFO queue and uses the minimal amount of CPU/instructions per I/O to accomplish the basic merging and sorting functionality to complete the I/O. It assumes performance of the I/O has been or will be optimized at the block device (memory-disk) or with an intelligent HBA or externally attached controller.

The Anticipatory elevator introduces a controlled delay before dispatching the I/O to attempt to aggregate and/or re-order requests improving locality and reducing disk seek operations. This algorithm is intended to optimize systems with small or slow disk subsystems. One artifact of using the AS scheduler can be higher I/O latency.

In this new version, the app tries to set the I/O scheduler on every block device except for loopN and zramN, so it will match mmcblkN, mtdN (should it matter) and stlN. If you have a device with a different name, curse your manufacturer and kernel author, but it should work provided you at least have mmcblk0 to read supported schedulers. Yeah, it's not perfect but should be more than enough. :)

For a fine grained explanation, check this post!

Q: ... can you translate it into layman terms?
A: A-yup.
CFQ: good if you have a multi processor (we're not talking dual core... much many more cores...), multi "card" system. We don't. 'nuff said.
Deadline: fast, fast, fast, but maybe one of your services will "clog" all the writes while your gmail is waiting to open that email you want to read. And maybe not.
NOOP: who said Deadline was fast? NOOP is "the fast". (NOOP = NO OPeration = nuthin' to do... ). Good if the optimization is done at the hardware level. 99% of our devices do.
Anticipatory: surely our devices have small and slow "disk" subsystems, so maybe it's worth a shot.

Requested features and roadmap
- Support for different settings in dual-core devices: investigating if it is even possible.It looks like it's possible! It looks like it's useless.
- Sort statistics in order of cpu%: 1.19
- Add "deep sleep time" to stats: 1.19
- Charts in stats: 1.19
- A bigger widget: just send me mock-ups, I'll think about it
- Silent notification on boot: 1.19
- A setting to disable the safety valve on unsafe shutdown: with a big fat warning of "Don't complain to me", ok. 1.21
- Fix the dual core bug, it's the first request! For crying out loud! There's no bug!

Changelog
2013-07-20 - 1.28.2
- r2: Fixed crash when opening About screen.
- r1: Added explicit ACCESS_SUPERUSER permission for transparency.
- Fixed I/O scheduler setting for special devices (e.g.: Minix X5, thanks to DaPa)
- Fixed wrong count of CPUs (thanks to DaPa).
- Updated current translations. If you spot an error, you can fix it at [uri]http://getLocalization.com/noFrillsCPU[/uri]

2013-03-31 - 1.27
- Ability to reset frequency stats.
- Nicer widget layout, especially for low density devices.
- Updated current translations and added Arabic, partial Hindi and Sinhala translation. If you spot an error, you can fix it at http://getLocalization.com/noFrillsCPU

2012-09-01 - 1.26
- Added Themes! Dark, Light, Light & Dark.
- UI improvements.
- Fix FC in Stats screen.
- Updated translations: Czech, German, Spanish, Finnish, French, Croaian, Hungarian, Italian, Japanese, Georgian, Polish, Portuguese (Brazil and Portugal), Romanian, Russian, Swedish, Chinese.
- New translations: Estonian, Western Farsi, Korean, Lithuanian, Latvian, Serbian.

2012-07-07 - 1.25
- New setting: automatically update current frequency in the stats screen.
- New setting: prevent other apps from interfering with frequencies (required for Jelly Bean and some HTC devices).
- Fix: "double sort" issue on stats screen for certain devices.
- Updated translations: Catalan, Chinese (Simplified & Traditional), Czech, German, Greek, French, Hungarian, Italian, Japanese, Polish, Romanian, Russian, Slovak, Spanish, Swedish and Turkish.
- New translations: Croatian, Finnish, Georgian, Indonesian.

2012-05-20 - 1.24
- Updated to latest Google support code.
- Updated German, Spanish, Dutch and Chinese translation.
- Added Polish, Turkish and Malay translation.

2012-04-21 - 1.23
- Minor performance improvements.
- Updated Hungarian, Ukrainian, Russian, Greek (Retrosid) and Japanese translations.
- Added Romanian (Cristian Silaghi), Norwegian (Rezern) and Catalan (Ferran Riu) translations.
- Added a "Donate" button in About > Info. You can donate if you like this app!

2012-03-18 - 1.22
- Hopefully fixed crash when refreshing stats on some devices. If you still get a crash, please contact the developer through email to help him fix this issue!
- Updated Hungarian translation
- Added Ukrainian and Russian translation

2012-03-11 - 1.21
- Android 4.0 Ice Cream Sandwich look & feel on Android 2.1 and above!
- Android 1.6 and Android 2.0 users can use the new app "No-frills CPU Control CLASSIC" which has the old look & feel AND all the features of the regular app.
- Ability to disable safety-valve. Use with caution!
- Changed kernel detection in CPU data. Please send your CPU data again, if you can.

2012-01-23 - 1.20
- Fixed bug: I/O scheduler wasn't applied to all applicable block devices.
- Updated Portuguese translation by Marco Bizarro.

2012-01-15 - 1.19
- New "Settings" screen.
- Ability to select a custom (or silent) ringtone.
- Ability to select a custom vibration pattern or disable vibration entirely.
- Display deep sleep in stats (optional).
- Sort stats by frequency, percentage, partial percentage.
- Graphical representation of percentage in stats.
- Updated Chinese translation by dxdiag32.

2011-12-31 - 1.18.4
- New Portuguese translation by Marco Bizarro

2011-12-28 - 1.18.3
- New Slovakian translation by prescott66.

2011-11-14 - 1.18.2
- New Dutch translation by Spaar

2011-11-12 - 1.18.1
- New Hungarian translation by FellowWings

2011-11-05 - 1.18
- Fixed "black screen" issue with HTC Sensation, HTC EVO 3D and (possibly) other devices. Note: as with other devices, for best results you need a custom kernel, stock HTC will not allow frequency scaling even if you have root.

2011-11-02 - 1.17
- Fix bug on kernels with broken i/o schedulers which caused FC in 1.16

2011-10-31 - 1.16
- Avoid lockup/reboot on particular devices when setting frequencies (Thanks to JoPhj).
- Sort frequencies on particular Samsung devices which have them backwards (Thanks to JoPhj).
- Prevent FC on homescreen widget for devices without root.
- Fix crash when no governors were available.
- Updated japanese translation.

2011-10-10 - 1.15
- Fixed the stupid bug I introduced when changing "unclean shutdown" check... sorry people!

2011-10-10 - 1.14
- Changed the "unclean shutdown" check to support apps such as LCD-Density changer and such
- First release of an homescreen widget
- After updating, clear app data then set again options (only this one time)

2011-09-23 - 1.13.2
- New Brazilian Portuguese translation by Chris

2011-08-28 - 1.13.1
- Fixed danish and czech translations not appeaing for respective users, sorry for the inconvenience!

2011-08-27 - 1.13
- Fixed FC reported to Market when governor wasn't available
- Fixed bug of missing VIBRATE permission reported to Market
- New danish translation by TorbenKB

2011-07-10 - 1.12.1
- New greek translation by dancer_69

2011-07-10 - 1.12
- New french translation by Corentin Garcia
- New spanish translation by Carlos Camacho
- Fixed landscape layout (broken in 1.11 with the new I/O scheduler option) and changed portrait layout accordingly

2011-07-09 - 1.11.2
- Fixes to the chinese translation
- Updates to the japanese translation

2011-07-07 - 1.11.1
- New chinese translation (Simplified and Traditional) by Charlie Cheung

2011-07-04 - v 1.11 (btw, happy 4th of july to da peeps in the us!)
- Initial support for dual core devices (LG G2X/Optimus Dual, Samsung Intercept, ...). Please report any issues you may have. There shouldn't be any, though...
- Added i/o scheduler selection for internal storage memory
- Rewritten detection code to support more non-standard* kernels
- New german translation, many thanks to jdb78. Man, thanks and sorry for taking so long to publish your translation!

2011-05-28 - v 1.10.1
- Fixed english typos in the About screen
- New japanese translation, thanks to Aozora Genei

2011-05-22 - v 1.10
- New about screen added, with changelog, FAQ and license. App now looks like a real one. :)
- Awesome new icon, courtesy of Anil K Solanki Design (www.thisiswhatwedo.com). Thanks Anil! Little easter egg: if you want to see the old icon, "tap" the new one in the about dialog.
- Fixed FC when trying to send CPU data with no email client installed (d'uh!)

2011-04-29 - v 1.9.3
- Added czech translation by David Kejzlar
- Added "quick check" informations on top of CPU data email

2011-04-10 - v 1.9.2
- Fixed usage on horizontal layout
- Added an initial root check
- Other small code fixes

2011-03-23 - v 1.9.1
- New swedish translation by kallt_kaffe

2011-03-22 - v 1.9
- New option to show a notification on boot
- Bugfix: FC when screen was rotated while progressbar was on screen

2011-03-19 - v 1.8
- New refresh icon (2.2- and 2.3+)
- Added current frequency to the stats screen
- Little GUI improvements
- Improved first screen when run on nonworking devices

2011-03-14 - v 1.7
- First Android Market release. The app is the same as 1.6.1 but with a different package name due to the "BrinkDroid incident". Binary package has been removed from this post in order to avoid duplication, but don't worry: the app is still free and it will always be both free and open source.
Please, manually uninstall the app from the phone and then install through market, this will help you stay up to date with my releases. :) But I already know that if you are reading this, you're someone who is already keeping up to date...
Code:
adb uninstall it.sineo.android.cpu

2011-03-06 - v 1.6.1
- Reworked from scratch notification icon w/ a Gingerbread version too.

2011-03-04 - v 1.6
- Added "View stats" to see the percentage of usage for each available frequency. Refresh icon is courtesy of Joseph Wain / glyphish.com
- Slight changes in the code.
- Some new texts for translators! Whee!

2011-02-26 - v 1.5 "Why do I have only two frequencies?!?"
- Added support for weird kernels which don't expose the available frequencies as they should. This should fix the issue for people having only two frequencies to choose. Let me know how it goes. :)

2011-02-25 - v 1.4
- Governor is now applied first, frequencies last. This may or may not fix smartass. It's not so smart from the reports I've got. :(
- Added german translation (thanks to zantekk)
- Thanks to everybody who sent his data and hasn't got a personal answer. I appreciated it! 1.4 adds kernel and rom information to the sent data, which should have been there in the first place...

2011-02-05 - v 1.3
- Added safety valves on boot: if unclean shutdown is detected or /data/.nocpu or /sd-ext/.nocpu exist, the frequencies will not be updated.
- Added a menu with an option to send me CPU data. No more logcat needed! Horray!
- GUI: configuration screen shows both current and desired values. You'll know if the app is working.
- i18n: added some new strings, translators please send me your new files and thank you for your work! :)

2011-01-22 - v 1.2.3 EXPERIMENTAL
- Experimental version for Wildfire and Galaxy Tab (and all the devices which didn't work). Please, download and send me a logcat of the app.
- Removed source package due to misunderstandings. No panic, it's still open source and I'll add it back later.

2011-01-15 - v 1.2.2
- Went for the name "No Frills CPU Control"
- Added translations for it (myself) and es (jrsoft)
- Added LICENSE.txt
- Minor GUI changes

2011-01-14 - v 1.2.1
- Fix the "1 GHz" issue
- Small code fixes

Obsolete information, kept just in case...

Latest compatibility report: (Please, not that I am not keeping this up to date anymore, so there may lots more devices which work)
Working
Advent Vega - ? - chris4500uk
Archos 43 IT - stock+root - daveid
Huawei U8220 - CM 6.1 - veloo
HTC Aria - CM 6.1 - the_hatter, CallMeAria
HTC Aria - CM7 - CallMeAria
HTC Desire GSM (lcd screen) - CM7 - D4nt35
HTC Desire HD - CM7 - kiwiboy_1978
HTC Desire HD - Buzz 1.2.2 kernel - mancman
HTC Desire Z / Vision / G2 - CM 6.1.1 - sundar2012, TimD123, Pickx, Azrael.arach
HTC Desire Z / Vision / G2 - CM 7 - adam18488
HTC Dream / G1- CM6.1 - hrk
HTC Dream / G1 - ? - MrFrankfromCM
HTC Dream / G1 - Froyo For Trout - kaabob
HTC Evo 4G - MikFroyo + King Kernel 2.6.32.15 - ccaudio1
HTC Evo 4G - latest Fresh Rom - mprunty
HTC HD2 - Cope's SD Gingerbread - shamez23
HTC Hero CDMA - CM 7 - dburg84
HTC Hero - CM 6.1 and flykernel 12a - nfcarvalho
HTC Incedible - Chad0989 Kernel - ilhe1s
HTC Nexus One - CM7 - jrsoft
HTC Nexus One - MicroMod777 Gingerbread v.20 ROM - masterpfa
HTC MyTouch 4G - CM - bobsbbq
LG Optimus V - CM7 - dburg84
Motorola Droid 2 - Fission ROM - Spitemare
Motorola Milestone - Chronos 1.7 - PsyCl0ne
Motorola xt720 - 2.1 ROMA - dateno1
? - ? - RayearthX
Nook Color - both STOCK and Nookie Froyo - camwinnn
Nook Color - ? - 12paq
Nook Color - rooted on 1.0.1update - hondaxtc
Droid - ? - CJM01

Not working: (please send a logcat so I can try to fix it or try latest again)
Galaxy Vibrant - Nero - lotherius
Epic 4G - ? - mikeschevelle
HTC Hero - CM 6.1 - funkyboy1281
HTC HD2 - android builds? - dohclude
HTC Wildfire - CM 6.1 - patrask
Samsung Galaxy S I9000 - darky's mod v8.0 - ValkyrieSB9
Samsung Galaxy Tab - ? - z3120
Sony X10 - 2.2.1 rom - DaKidSlim
GT 540 - CM 6.1.1 - markbusa
GT 540 - Optimus 2.1 - arvind92

MARCH 12TH 2011: MARKET FRAUD ALERT! Somebody called "BrinkDroid" has published an old release of this app on the Android Market, selling it for $1.99. This is NOT endorsed or approved by me at all, and a DMCA infringement notice has been sent by Google. With "BrinkDroid" releasing my app on the market, I cannot release it anymore until Google fixes this.

Please, look for "nofrills" on your phone Market app, then report a violation, choosing "Other" and putting this text:
App is a scam/stolen from other developer, proof is here: http://xdaforums.com/showthread.php?t=911917[/COLOR]
Thank you.



MARCH 14TH 2011: Yesterday BrinkDroid contacted me and he agreed to remove the application from the Android Market. Unfortunately, the package name is now "owned" by him and I cannot use it anymore. For this reason I have released a 1.7 release which is identical to 1.6.1 but with a new package name (it.sineo.android.cpu -> it.sineo.android.noFrillsCPU). In order to avoid further scams, I have released the app on the Market, see the QR code. :)
Thank you all for your support.
 

Attachments

  • 01.png
    01.png
    17.7 KB · Views: 15,894
  • 02.png
    02.png
    15.4 KB · Views: 14,287
  • 03.png
    03.png
    17.5 KB · Views: 14,107
  • 04.png
    04.png
    19.2 KB · Views: 12,824
  • 05.png
    05.png
    18.1 KB · Views: 11,847
  • 06.png
    06.png
    17 KB · Views: 11,951
Last edited:

dburg84

Senior Member
Sep 14, 2010
481
116
thanks! The older version FC'd me. 1.2 works fine on the heroc. Thanks again nice lightweight app that works!
 
  • Like
Reactions: gl3nborj

PsyCl0ne

Senior Member
Jun 10, 2010
981
268
OnePlus 6
Google Pixel 6
Hey Ill give it a shot, Im running Chronos 1.7 on my Moto Milestone. I will post back results. Thanks for all your hard work :)


~PsyCl0ne

EDIT: So yea it does work, any chance of adding 1.1Ghz, and possibly more frequencies in between 250 and 400??
 
Last edited:
  • Like
Reactions: gl3nborj

hrk

Inactive Recognized Developer
Sep 4, 2008
1,097
1,048
Rome
EDIT: So yea it does work, any chance of adding 1.1Ghz, and possibly more frequencies in between 250 and 400??

My app will show every frequency which is supported by your kernel. It is really just a simple GUI, all the hard work is done by the kernel.

I know nothing about your phone and ROM. Can you provide me the contents of /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies? If you have Android SDK, just run:
Code:
adb shell cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
 
  • Like
Reactions: Minions_Army

sundar2012

Senior Member
Oct 8, 2009
555
21
Manhattan
its not properly detecting clock speeds on my g2/desire-z running cm6.1.1.

It finds all clocks up to 1ghz and then shows multiple 1ghz entries. In reality, there are clocks available from 1 to 1.5ghz
 

PsyCl0ne

Senior Member
Jun 10, 2010
981
268
OnePlus 6
Google Pixel 6
My app will show every frequency which is supported by your kernel. It is really just a simple GUI, all the hard work is done by the kernel.

I know nothing about your phone and ROM. Can you provide me the contents of /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies? If you have Android SDK, just run:
Code:
adb shell cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies

Thank you for the quick reply the output that I got from adb was aling_available_frequencies
1100000 750000 500000 250000

Is there any way that you could place these into a config so it starts up with these frequencies instead of being applied when the phone is fully booted up?
~PsyCl0ne

EDIT: If there is anything else I can get for you let me know :)
 
Last edited:

AllGamer

Retired Forum Moderator
May 24, 2008
11,917
1,657
SGH-T989
AT&T Samsung Galaxy Note I717
Problem is: I'm currently calling it "CyanogenMod CPU Governor" (yeah, boring) and I'm using CyanogenMod icon for it. Since it won't be included I feel like I should find a different name and icon, and this is where the community could give back :p... or get a plain "Market" icon and "GUI for cpufreq settings" name. :)

How about "No-Frills CPU freq"
icon14.gif


Now, lets install it for fun

and do a comparison between SetCPU vs. No-Frills CPU freq :D
 

camwinnn

Senior Member
Jul 23, 2009
131
22
Woot 6mbs used on nook color, setcpu is about 15 so definitely switching.

I guess the setcpu profiles are useful, I never used them tho, why wait till my batteries low when its 300-950 ondemand always :p

sent from a Nook Color using xda-app
 
  • Like
Reactions: akmalazim

CJM01

Member
Sep 1, 2010
5
2
Thanks for the app. Freed up just 1mb on my Droid. Gonna run it for a while to see how it compares to the profiles on SetCPU. I'd also like to see frequencys above 1.1 too.
 
Woot 6mbs used on nook color, setcpu is about 15 so definitely switching.

I guess the setcpu profiles are useful, I never used them tho, why wait till my batteries low when its 300-950 ondemand always :p

sent from a Nook Color using xda-app

Well that answers my Nook Question. Thanks.

from my modded Android Nook Color tablet,
via the XDA app.
 

lotherius

Inactive Recognized Developer
Jan 12, 2009
2,178
612
Houston, TX
Google Pixel 6
Apparently the Nero roms for the Galaxy Vibrant are not compatible with this. SetCpu works but this just force closes. Any chance of compatibility?

Tapatalk sent this.
 

the_hatter

Member
Nov 4, 2010
16
4
works like a charm on my aria running cm 6.1. Just scored 1112 in Quadrant with cpu set to 806 MHz. I have a question though: how does the governor work? And what is the difference between all the different types? Ie. what is the difference between powersave and conservative, etc?

cheers, good work!
 

Top Liked Posts

  • There are no posts matching your filters.
  • 184
    [APP][Jul 20th][1.28.2] "NoFrills" CPU Control: configure cpu frequencies & governor

    Hi,

    I've made a very simple application which can be used to set cpu scaling frequencies and governor. Yeah, imagine SetCPU without profiles, minimal use of RAM, released as open source, and requiring CyanogenMod (or any sysfs-enabled ROM). "No frills" is the right description for it. Source is released under the Apache License, version 2.0, but the resources (i.e.: icons) are released under their original license. The notification icon is mine and is proprietary. This should avoid further market scams.

    I've been using it on my Dream and from the start I wanted to "give back" to the community. I asked in CyanogenMod's forum if there was interest for an inclusion into the official Mod, but I got no answers from the team.
    Recently, NLJ has been working on a CMPart page for the CPU settings for CM7, so does this put the final nail in the coffin of this app?

    I guess it depends on whether CM6 (and lower) will get the CPU settings page and whether people find it useful..
    Looks like some people are finding it useful. :)

    Problem is: I'm currently calling it "CyanogenMod CPU Governor" (yeah, boring) and I'm using CyanogenMod icon for it. Since it won't be included I feel like I should find a different name and icon, and this is where the community could give back :p... or get a plain "Market" icon and "GUI for cpufreq settings" name. :)

    Market links
    No-frills CPU (2.1+, ICS look & feel)
    No-frills CPU CLASSIC (1.6+, simple/plain look & feel)
    If you don't want to use (or can't use) Google's Play Store, it's available through F-Droid.org

    Source code
    It's now available on GitHub.

    Features
    - Easy GUI to set frequencies and governor.
    - "safety valve" to avoid boot-loops in case of unsafe settings (more info in the FAQ)
    - Stats screen to see the effective usage of frequencies

    Translations & Localization
    Translations are welcome and they are now handled through GetLocalization! It'l make it way easier for people to translate it and for me to update them. I cannot stress enough how I am grateful for the following people, who originally translated this app. Thank you guys! (and keep translating by creating an account on GetLocalization, please! :p)

    hrk (Italian), jdb78 (German), kallt_kaffe (Swedish), David Kejzlar (Czech), Ryunosuke Tanaka (Japanese), Charlie Cheung (Traditional and Simplified Chinese), dxdiag32 (Traditional and Simplified Chinese), Corentin Garcia (French), Carlos Camacho (Spanish), dancer_69 (Greek), TorbenKB (Danish), Chris (Brazilian Portuguese), FellowWings (Hungarian), Spaar (Dutch), prescott66 (Slovakian), Marco Bizarro (Portuguese), Cristian Silaghi (Romanian), Cenk H. Uzunboy (Turkish) ... all the other translators can be found on GetLocalization

    FAQ
    Q: What files do I need?
    A: Download the .apk and install it the way you prefer. The .zip is not a flashable zip and is meant for other developers.

    Q: I am a ROM cook, can I put your app in my ROM?
    A: Sure do! Just contact me and I'll send you the latest .apk. Be sure to make it so that people will get market updates. :)

    Q: Do you plan on adding profiles? I'd love to select a different profile for when my screen is off!
    A: Short answer is "No". I think that profiles are useless, because that's what governors are already: a profile for your CPU to follow while changing frequencies.
    Adding profiles would mean adding the need for more memory, the need to run more often, check if something is happening (screen on, screen off and so on)... all of this without a real benefit.

    Q: What is the safety valve you added in 1.3?
    A: If you enable "Apply on boot", the "safety valve" works this way: the app checks if your phone didn't shut down properly or either a file named /data/.nocpu or /sd-ext/.nocpu exists.
    If this is the case, the values are not applied to avoid a "reboot-loop".
    Please note that there are some apps on the market which claim to perform a faster reboot but what they do is like pulling out the battery! Now... do you think it's a proper shut down? :) I guessed so...

    Q: Wait, what about those /data/.nocpu /sd-ext/.nocpu files?!
    A: They are empty files which were chosen by NameLessJedi as "safety valve" for his own CMPart inside of CyanogenMod7 (remember the history of this app? :)). We decided to cooperate, so I added support for the files and gave him the code to detect an improper shutdown at boot, which he added to his tool. Open source wins!

    Q: What are governors and which one should I choose?
    A: CPU frequency scaling allows you to change the clock speed of CPUs on the fly. This can save power, because the lower the CPU clock speed, the less power the CPU consumes. Governors are different policies to scale frequency.

    - powersave will always set the "min" and never change it
    - performance will always set the "max" and never change it
    - ondemand (usually the default) will raise the value by a step up when the cpu is used, and lower the value by a step down when the cpu is not (much) used.
    - conservative is like ondemand but will be slower when changing frequencies
    - interactive is (conceptually) like ondemand but will be quicker when changing frequencies.
    - smartass is (conceptually) like interactive, but I haven't understood yet why it's so much smart and loved by users.
    - userspace will do nothing at all, so don't choose it. I may hide it in a future release to avoid confusion :)
    For a fine grained explanation, check this post!

    Q: And what about the I/O scheduler option?
    A: I/O means Input/Output and it deals on how read and writes are performed on the internal NAND (not the external card!).
    Thanks to roccoadam32, here is a description of the different schedulers:
    The Completely Fair Queuing (CFQ) scheduler is the default algorthim in Red Hat Enterprise Linux 4. As the name implies, CFQ maintains a scalable per-process I/O queue and attempts to distribute the available I/O bandwidth equally among all I/O requests. CFQ is well suited for mid-to-large multi-processor systems and for systems which require balanced I/O performance over multiple LUNs and I/O controllers.

    The Deadline elevator uses a deadline algorithm to minimize I/O latency for a given I/O request. The scheduler provides near real-time behavior and uses a round robin policy to attempt to be fair among multiple I/O requests and to avoid process starvation. Using five I/O queues, this scheduler will aggressively re-order requests to improve I/O performance.

    The NOOP scheduler is a simple FIFO queue and uses the minimal amount of CPU/instructions per I/O to accomplish the basic merging and sorting functionality to complete the I/O. It assumes performance of the I/O has been or will be optimized at the block device (memory-disk) or with an intelligent HBA or externally attached controller.

    The Anticipatory elevator introduces a controlled delay before dispatching the I/O to attempt to aggregate and/or re-order requests improving locality and reducing disk seek operations. This algorithm is intended to optimize systems with small or slow disk subsystems. One artifact of using the AS scheduler can be higher I/O latency.

    In this new version, the app tries to set the I/O scheduler on every block device except for loopN and zramN, so it will match mmcblkN, mtdN (should it matter) and stlN. If you have a device with a different name, curse your manufacturer and kernel author, but it should work provided you at least have mmcblk0 to read supported schedulers. Yeah, it's not perfect but should be more than enough. :)

    For a fine grained explanation, check this post!

    Q: ... can you translate it into layman terms?
    A: A-yup.
    CFQ: good if you have a multi processor (we're not talking dual core... much many more cores...), multi "card" system. We don't. 'nuff said.
    Deadline: fast, fast, fast, but maybe one of your services will "clog" all the writes while your gmail is waiting to open that email you want to read. And maybe not.
    NOOP: who said Deadline was fast? NOOP is "the fast". (NOOP = NO OPeration = nuthin' to do... ). Good if the optimization is done at the hardware level. 99% of our devices do.
    Anticipatory: surely our devices have small and slow "disk" subsystems, so maybe it's worth a shot.

    Requested features and roadmap
    - Support for different settings in dual-core devices: investigating if it is even possible.It looks like it's possible! It looks like it's useless.
    - Sort statistics in order of cpu%: 1.19
    - Add "deep sleep time" to stats: 1.19
    - Charts in stats: 1.19
    - A bigger widget: just send me mock-ups, I'll think about it
    - Silent notification on boot: 1.19
    - A setting to disable the safety valve on unsafe shutdown: with a big fat warning of "Don't complain to me", ok. 1.21
    - Fix the dual core bug, it's the first request! For crying out loud! There's no bug!

    Changelog
    2013-07-20 - 1.28.2
    - r2: Fixed crash when opening About screen.
    - r1: Added explicit ACCESS_SUPERUSER permission for transparency.
    - Fixed I/O scheduler setting for special devices (e.g.: Minix X5, thanks to DaPa)
    - Fixed wrong count of CPUs (thanks to DaPa).
    - Updated current translations. If you spot an error, you can fix it at [uri]http://getLocalization.com/noFrillsCPU[/uri]

    2013-03-31 - 1.27
    - Ability to reset frequency stats.
    - Nicer widget layout, especially for low density devices.
    - Updated current translations and added Arabic, partial Hindi and Sinhala translation. If you spot an error, you can fix it at http://getLocalization.com/noFrillsCPU

    2012-09-01 - 1.26
    - Added Themes! Dark, Light, Light & Dark.
    - UI improvements.
    - Fix FC in Stats screen.
    - Updated translations: Czech, German, Spanish, Finnish, French, Croaian, Hungarian, Italian, Japanese, Georgian, Polish, Portuguese (Brazil and Portugal), Romanian, Russian, Swedish, Chinese.
    - New translations: Estonian, Western Farsi, Korean, Lithuanian, Latvian, Serbian.

    2012-07-07 - 1.25
    - New setting: automatically update current frequency in the stats screen.
    - New setting: prevent other apps from interfering with frequencies (required for Jelly Bean and some HTC devices).
    - Fix: "double sort" issue on stats screen for certain devices.
    - Updated translations: Catalan, Chinese (Simplified & Traditional), Czech, German, Greek, French, Hungarian, Italian, Japanese, Polish, Romanian, Russian, Slovak, Spanish, Swedish and Turkish.
    - New translations: Croatian, Finnish, Georgian, Indonesian.

    2012-05-20 - 1.24
    - Updated to latest Google support code.
    - Updated German, Spanish, Dutch and Chinese translation.
    - Added Polish, Turkish and Malay translation.

    2012-04-21 - 1.23
    - Minor performance improvements.
    - Updated Hungarian, Ukrainian, Russian, Greek (Retrosid) and Japanese translations.
    - Added Romanian (Cristian Silaghi), Norwegian (Rezern) and Catalan (Ferran Riu) translations.
    - Added a "Donate" button in About > Info. You can donate if you like this app!

    2012-03-18 - 1.22
    - Hopefully fixed crash when refreshing stats on some devices. If you still get a crash, please contact the developer through email to help him fix this issue!
    - Updated Hungarian translation
    - Added Ukrainian and Russian translation

    2012-03-11 - 1.21
    - Android 4.0 Ice Cream Sandwich look & feel on Android 2.1 and above!
    - Android 1.6 and Android 2.0 users can use the new app "No-frills CPU Control CLASSIC" which has the old look & feel AND all the features of the regular app.
    - Ability to disable safety-valve. Use with caution!
    - Changed kernel detection in CPU data. Please send your CPU data again, if you can.

    2012-01-23 - 1.20
    - Fixed bug: I/O scheduler wasn't applied to all applicable block devices.
    - Updated Portuguese translation by Marco Bizarro.

    2012-01-15 - 1.19
    - New "Settings" screen.
    - Ability to select a custom (or silent) ringtone.
    - Ability to select a custom vibration pattern or disable vibration entirely.
    - Display deep sleep in stats (optional).
    - Sort stats by frequency, percentage, partial percentage.
    - Graphical representation of percentage in stats.
    - Updated Chinese translation by dxdiag32.

    2011-12-31 - 1.18.4
    - New Portuguese translation by Marco Bizarro

    2011-12-28 - 1.18.3
    - New Slovakian translation by prescott66.

    2011-11-14 - 1.18.2
    - New Dutch translation by Spaar

    2011-11-12 - 1.18.1
    - New Hungarian translation by FellowWings

    2011-11-05 - 1.18
    - Fixed "black screen" issue with HTC Sensation, HTC EVO 3D and (possibly) other devices. Note: as with other devices, for best results you need a custom kernel, stock HTC will not allow frequency scaling even if you have root.

    2011-11-02 - 1.17
    - Fix bug on kernels with broken i/o schedulers which caused FC in 1.16

    2011-10-31 - 1.16
    - Avoid lockup/reboot on particular devices when setting frequencies (Thanks to JoPhj).
    - Sort frequencies on particular Samsung devices which have them backwards (Thanks to JoPhj).
    - Prevent FC on homescreen widget for devices without root.
    - Fix crash when no governors were available.
    - Updated japanese translation.

    2011-10-10 - 1.15
    - Fixed the stupid bug I introduced when changing "unclean shutdown" check... sorry people!

    2011-10-10 - 1.14
    - Changed the "unclean shutdown" check to support apps such as LCD-Density changer and such
    - First release of an homescreen widget
    - After updating, clear app data then set again options (only this one time)

    2011-09-23 - 1.13.2
    - New Brazilian Portuguese translation by Chris

    2011-08-28 - 1.13.1
    - Fixed danish and czech translations not appeaing for respective users, sorry for the inconvenience!

    2011-08-27 - 1.13
    - Fixed FC reported to Market when governor wasn't available
    - Fixed bug of missing VIBRATE permission reported to Market
    - New danish translation by TorbenKB

    2011-07-10 - 1.12.1
    - New greek translation by dancer_69

    2011-07-10 - 1.12
    - New french translation by Corentin Garcia
    - New spanish translation by Carlos Camacho
    - Fixed landscape layout (broken in 1.11 with the new I/O scheduler option) and changed portrait layout accordingly

    2011-07-09 - 1.11.2
    - Fixes to the chinese translation
    - Updates to the japanese translation

    2011-07-07 - 1.11.1
    - New chinese translation (Simplified and Traditional) by Charlie Cheung

    2011-07-04 - v 1.11 (btw, happy 4th of july to da peeps in the us!)
    - Initial support for dual core devices (LG G2X/Optimus Dual, Samsung Intercept, ...). Please report any issues you may have. There shouldn't be any, though...
    - Added i/o scheduler selection for internal storage memory
    - Rewritten detection code to support more non-standard* kernels
    - New german translation, many thanks to jdb78. Man, thanks and sorry for taking so long to publish your translation!

    2011-05-28 - v 1.10.1
    - Fixed english typos in the About screen
    - New japanese translation, thanks to Aozora Genei

    2011-05-22 - v 1.10
    - New about screen added, with changelog, FAQ and license. App now looks like a real one. :)
    - Awesome new icon, courtesy of Anil K Solanki Design (www.thisiswhatwedo.com). Thanks Anil! Little easter egg: if you want to see the old icon, "tap" the new one in the about dialog.
    - Fixed FC when trying to send CPU data with no email client installed (d'uh!)

    2011-04-29 - v 1.9.3
    - Added czech translation by David Kejzlar
    - Added "quick check" informations on top of CPU data email

    2011-04-10 - v 1.9.2
    - Fixed usage on horizontal layout
    - Added an initial root check
    - Other small code fixes

    2011-03-23 - v 1.9.1
    - New swedish translation by kallt_kaffe

    2011-03-22 - v 1.9
    - New option to show a notification on boot
    - Bugfix: FC when screen was rotated while progressbar was on screen

    2011-03-19 - v 1.8
    - New refresh icon (2.2- and 2.3+)
    - Added current frequency to the stats screen
    - Little GUI improvements
    - Improved first screen when run on nonworking devices

    2011-03-14 - v 1.7
    - First Android Market release. The app is the same as 1.6.1 but with a different package name due to the "BrinkDroid incident". Binary package has been removed from this post in order to avoid duplication, but don't worry: the app is still free and it will always be both free and open source.
    Please, manually uninstall the app from the phone and then install through market, this will help you stay up to date with my releases. :) But I already know that if you are reading this, you're someone who is already keeping up to date...
    Code:
    adb uninstall it.sineo.android.cpu

    2011-03-06 - v 1.6.1
    - Reworked from scratch notification icon w/ a Gingerbread version too.

    2011-03-04 - v 1.6
    - Added "View stats" to see the percentage of usage for each available frequency. Refresh icon is courtesy of Joseph Wain / glyphish.com
    - Slight changes in the code.
    - Some new texts for translators! Whee!

    2011-02-26 - v 1.5 "Why do I have only two frequencies?!?"
    - Added support for weird kernels which don't expose the available frequencies as they should. This should fix the issue for people having only two frequencies to choose. Let me know how it goes. :)

    2011-02-25 - v 1.4
    - Governor is now applied first, frequencies last. This may or may not fix smartass. It's not so smart from the reports I've got. :(
    - Added german translation (thanks to zantekk)
    - Thanks to everybody who sent his data and hasn't got a personal answer. I appreciated it! 1.4 adds kernel and rom information to the sent data, which should have been there in the first place...

    2011-02-05 - v 1.3
    - Added safety valves on boot: if unclean shutdown is detected or /data/.nocpu or /sd-ext/.nocpu exist, the frequencies will not be updated.
    - Added a menu with an option to send me CPU data. No more logcat needed! Horray!
    - GUI: configuration screen shows both current and desired values. You'll know if the app is working.
    - i18n: added some new strings, translators please send me your new files and thank you for your work! :)

    2011-01-22 - v 1.2.3 EXPERIMENTAL
    - Experimental version for Wildfire and Galaxy Tab (and all the devices which didn't work). Please, download and send me a logcat of the app.
    - Removed source package due to misunderstandings. No panic, it's still open source and I'll add it back later.

    2011-01-15 - v 1.2.2
    - Went for the name "No Frills CPU Control"
    - Added translations for it (myself) and es (jrsoft)
    - Added LICENSE.txt
    - Minor GUI changes

    2011-01-14 - v 1.2.1
    - Fix the "1 GHz" issue
    - Small code fixes

    Obsolete information, kept just in case...

    Latest compatibility report: (Please, not that I am not keeping this up to date anymore, so there may lots more devices which work)
    Working
    Advent Vega - ? - chris4500uk
    Archos 43 IT - stock+root - daveid
    Huawei U8220 - CM 6.1 - veloo
    HTC Aria - CM 6.1 - the_hatter, CallMeAria
    HTC Aria - CM7 - CallMeAria
    HTC Desire GSM (lcd screen) - CM7 - D4nt35
    HTC Desire HD - CM7 - kiwiboy_1978
    HTC Desire HD - Buzz 1.2.2 kernel - mancman
    HTC Desire Z / Vision / G2 - CM 6.1.1 - sundar2012, TimD123, Pickx, Azrael.arach
    HTC Desire Z / Vision / G2 - CM 7 - adam18488
    HTC Dream / G1- CM6.1 - hrk
    HTC Dream / G1 - ? - MrFrankfromCM
    HTC Dream / G1 - Froyo For Trout - kaabob
    HTC Evo 4G - MikFroyo + King Kernel 2.6.32.15 - ccaudio1
    HTC Evo 4G - latest Fresh Rom - mprunty
    HTC HD2 - Cope's SD Gingerbread - shamez23
    HTC Hero CDMA - CM 7 - dburg84
    HTC Hero - CM 6.1 and flykernel 12a - nfcarvalho
    HTC Incedible - Chad0989 Kernel - ilhe1s
    HTC Nexus One - CM7 - jrsoft
    HTC Nexus One - MicroMod777 Gingerbread v.20 ROM - masterpfa
    HTC MyTouch 4G - CM - bobsbbq
    LG Optimus V - CM7 - dburg84
    Motorola Droid 2 - Fission ROM - Spitemare
    Motorola Milestone - Chronos 1.7 - PsyCl0ne
    Motorola xt720 - 2.1 ROMA - dateno1
    ? - ? - RayearthX
    Nook Color - both STOCK and Nookie Froyo - camwinnn
    Nook Color - ? - 12paq
    Nook Color - rooted on 1.0.1update - hondaxtc
    Droid - ? - CJM01

    Not working: (please send a logcat so I can try to fix it or try latest again)
    Galaxy Vibrant - Nero - lotherius
    Epic 4G - ? - mikeschevelle
    HTC Hero - CM 6.1 - funkyboy1281
    HTC HD2 - android builds? - dohclude
    HTC Wildfire - CM 6.1 - patrask
    Samsung Galaxy S I9000 - darky's mod v8.0 - ValkyrieSB9
    Samsung Galaxy Tab - ? - z3120
    Sony X10 - 2.2.1 rom - DaKidSlim
    GT 540 - CM 6.1.1 - markbusa
    GT 540 - Optimus 2.1 - arvind92

    MARCH 12TH 2011: MARKET FRAUD ALERT! Somebody called "BrinkDroid" has published an old release of this app on the Android Market, selling it for $1.99. This is NOT endorsed or approved by me at all, and a DMCA infringement notice has been sent by Google. With "BrinkDroid" releasing my app on the market, I cannot release it anymore until Google fixes this.

    Please, look for "nofrills" on your phone Market app, then report a violation, choosing "Other" and putting this text:
    App is a scam/stolen from other developer, proof is here: http://xdaforums.com/showthread.php?t=911917[/COLOR]
    Thank you.



    MARCH 14TH 2011: Yesterday BrinkDroid contacted me and he agreed to remove the application from the Android Market. Unfortunately, the package name is now "owned" by him and I cannot use it anymore. For this reason I have released a 1.7 release which is identical to 1.6.1 but with a new package name (it.sineo.android.cpu -> it.sineo.android.noFrillsCPU). In order to avoid further scams, I have released the app on the Market, see the QR code. :)
    Thank you all for your support.
    6
    2013-07-13 - 1.28.1
    - Added explicit ACCESS_SUPERUSER permission for transparency.
    - Fixed I/O scheduler setting for special devices (e.g.: Minix X5, thanks to DaPa)
    - Fixed wrong count of CPUs (thanks to DaPa).
    - Updated current translations. If you spot an error, you can fix it at [uri]http://getLocalization.com/noFrillsCPU[/uri]
    4
    And here it is!

    2012-07-07 - 1.25
    - New setting: automatically update current frequency in the stats screen.
    - New setting: prevent other apps from interfering with frequencies (required for Jelly Bean and some HTC devices).
    - Fix: "double sort" issue on stats screen for certain devices.
    - Updated translations: Catalan, Chinese (Simplified & Traditional), Czech, German, Greek, French, Hungarian, Italian, Japanese, Polish, Romanian, Russian, Slovak, Spanish, Swedish and Turkish.
    - New translations: Croatian, Finnish, Georgian, Indonesian.

    That was LONG! I even broke the limit of 500 characters on Play Store's changelog size, so I had to cut text here and there.

    What's to be said? The "prevent other apps from interfering..." means that (if enabled) the app will change the (UNIX) file permissions on the frequency sysfs files so that they become read-only after no-frills has dealt with them. This seems to be needed on Jelly Bean (and some HTC devices, likely) and was kindly reported by Brandon.
    4
    2012-03-31 - 1.27
    - Ability to reset frequency stats.
    - Nicer widget layout, especially for low density devices.
    - Updated current translations and added Arabic, partial Hindi and Sinhala translation. If you spot an error, you can fix it at http://getLocalization.com/noFrillsCPU

    Well, the widget still sucks, but at least now it sucks less. :)
    3
    a lot of the old translation is translated by Google,i translated it more clear ,so i hope you can update it into your new version ,thank you

    Thank you :)

    Romanian strings.xml

    They are all in english? :confused:

    2010-01-15 - 1.19
    - New "Settings" screen.
    - Ability to select a custom (or silent) ringtone.
    - Ability to select a custom vibration pattern or disable vibration entirely.
    - Display deep sleep in stats (optional).
    - Sort stats by frequency, percentage, partial percentage.
    - Graphical representation of percentage in stats.
    - Updated Chinese translation by dxdiag32.

    Sorry for being so late. This was a busy week and the coming one will be even worse, so I chose to release what was ready. :)