[Android Apps and Games] hrk:
[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:

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

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.