[Guide/Tweak/Mod/Script] [Feb.24] How to Tweak and Optimize Android Performance

Search This thread

primaleph

Senior Member
Dec 16, 2012
347
71
I include instructions on how each partition and storage point is mounted in data2sd, see the "Note" at the end of Step #3.

That doesn't answer my question. I wasn't clear, though, so let me ask it again: When I try to enable apps in Pimp My Rom with data2sd enabled, your guide says the zip files will be saved in internal storage instead of being flashed. But you don't say *where*.
 

glecko

Senior Member
Jan 25, 2007
52
23
That doesn't answer my question. I wasn't clear, though, so let me ask it again: When I try to enable apps in Pimp My Rom with data2sd enabled, your guide says the zip files will be saved in internal storage instead of being flashed. But you don't say *where*.

check the PIMPMYROM directory... ?
 

lucius.zen

Senior Member
Sep 16, 2012
464
482
34
Halifax
That doesn't answer my question. I wasn't clear, though, so let me ask it again: When I try to enable apps in Pimp My Rom with data2sd enabled, your guide says the zip files will be saved in internal storage instead of being flashed. But you don't say *where*.

Haha sry I thought i made that clear enough, my bad. Glecko has it right tho. It is located in /storage/sdcard0/PimpMyROM.
 

primaleph

Senior Member
Dec 16, 2012
347
71
Hundsbuah's kernel is a 4.1.1 kernel, right? It seems like some of these tweaks are not compatible with 4.2.1 kernels.

I'm running CROMI-X 4.3b4 with _that's new kernel, and several of these tweaks have led to boot loops or wifi not working. I'll post more when I've narrowed it down.
 

lucius.zen

Senior Member
Sep 16, 2012
464
482
34
Halifax
Hundsbuah's kernel is a 4.1.1 kernel, right? It seems like some of these tweaks are not compatible with 4.2.1 kernels.

I'm running CROMI-X 4.3b4 with _that's new kernel, and several of these tweaks have led to boot loops or wifi not working. I'll post more when I've narrowed it down.

CROMI 3.4.7 and HK v2.2 are 4.1 based. I have tried 4.2 but have decided to forego staying on 4.2 until it is as tweakable as 4.1. The improvements I get from my tweaks far outweigh the benefits from being on 4.2. Until sdbags gets the full tf700 version of 4.2 and Hundsbuah gets his kernel working wwith 4.2 I do not plan on making the switch.

I can't stress this enough, although 4.2 is an upgrade from 4.1 I get far superior results with my tweaks. Its not even comparable at this point. It will be once things get ironed out in 4.2. But as it stands id rather have a much more usable tablet than a tablet with the latest version of android. Thats just me, but everyone is different.
 

lucius.zen

Senior Member
Sep 16, 2012
464
482
34
Halifax
Compatibility

OP UPDATED WITH COMPATIBILITY SECTION

Have been getting some questions, hope it helps.
 
Last edited:

_that

Recognized Developer / Inactive RC
Oct 2, 2012
4,821
4,211
Note - Surface Dithering - Makes edges look sharper and smoother, applies to all elements of the display. Does not have any impact on real world or benchmarking performance (see post #2 for detailed results).

I cannot find any technical reason why this setting should have any effect at all. Can you post screenshots that show the difference?
 

lucius.zen

Senior Member
Sep 16, 2012
464
482
34
Halifax
I cannot find any technical reason why this setting should have any effect at all. Can you post screenshots that show the difference?

I will, keep checking the results section (post#2), Im really busy studying for exams right now and wanted to make sure the OP was tight and understandable. When I enabled surface dithering text and icons looked sharper. You can notice the largest difference in TWRP. The text, buttons, and slider animations look nearly as good as android. I applied this after I extensively tested the Bravia2 Engine and noticed significant improvement.

Here is some info about image dithering, how it works, and sample pictures - http://en.wikipedia.org/wiki/Dither

Can someone please tell me how to embed pictures in xda posts. I have only been using xda for six months and posting pictures is not intuitive at all lol.
 
Last edited:

lucius.zen

Senior Member
Sep 16, 2012
464
482
34
Halifax
A tweak made me lose my Wi-Fi connection after restarting. Now I can't figure out what tweak to disable to get my connection back to my tablet.


Sent from my GT-I9000 using Tapatalk 2

It was most likely PMR. I havent had any connection issues, but if you are simply go to the "Network and Internet" section of PMR. Leave all the check boxes checked, scroll down to the bottom of the page, and select "Remove Selected Tweaks". Reboot your system when PMR tells you to. You should be good to go. Or you can download a rescue package in PMR. Flashing the rescue package will allow you to remove all the tweaks you have applied in PMR. I talk about this explicitly in the PMR section in my original post. Please read instructions before asking questions.

The CrossBreeder Mod changes network and internet behaviour. If you don't have it enabled the "Network and Internet Tweaks" I have posted may not work on your system. I suggest flashing the CB mod, then try enabling the "Network and Internet Tweaks" one at a time to weed out which tweak was the culprit.

If all else fails restore the Nandroid backup you made before applying my tweaks. I mention the importance of Nandroid backups multiple times in my post. This is the ultimate fail safe way to remove any of these tweaks.

If anyone fails to heed this advice I feel bad for you, but ulltimately you fcked up. If you follow everything in detail, like i say many times, you won't break anything. If you do it can be easily fixed within 5 min.

Much love,

Lucius
 
Last edited:
It was most likely PMR. I havent had any connection issues, but if you are simply go to the "Network and Internet" section of PMR. Leave all the check boxes checked, scroll down to the bottom of the page, and select "Remove Selected Tweaks". Reboot your system when PMR tells you to. You should be good to go. Or you can download a rescue package in PMR. Flashing the rescue package will allow you to remove all the tweaks you have applied in PMR. I talk about this explicitly in the PMR section in my original post. Please read instructions before asking questions.

The CrossBreeder Mod changes network and internet behaviour. If you don't have it enabled the "Network and Internet Tweaks" I have posted may not work on your system. I suggest flashing the CB mod, then try enabling the "Network and Internet Tweaks" one at a time to weed out which tweak was the culprit.

If all else fails restore the Nandroid backup you made before applying my tweaks. I mention the importance of Nandroid backups multiple times in my post. This is the ultimate fail safe way to remove any of these tweaks.

If anyone fails to heed this advice I feel bad for you, but ulltimately you fcked up. If you follow everything in detail, like i say many times, you won't break anything. If you do it can be easily fixed within 5 min.

Much love,

Lucius



- I used the Unpimp function earlier since I got to read the various warnings and tips beforehand. I just didn't want to start from scratch the tweaks made and I was thinking maybe someone had the same problem and knew the specific tweak to undo. But I had to bite the bullet and just clicked the Unpimp button. Connection is now back and I'm about to start redoing the tweaks.

Thanks to this well written post. Backups are a must. :)

More power to the OP. Gratitude.

Sent from my ASUS Transformer Pad TF700T using Tapatalk HD
 

lucius.zen

Senior Member
Sep 16, 2012
464
482
34
Halifax
- I used the Unpimp function earlier since I got to read the various warnings and tips beforehand. I just didn't want to start from scratch the tweaks made and I was thinking maybe someone had the same problem and knew the specific tweak to undo. But I had to bite the bullet and just clicked the Unpimp button. Connection is now back and I'm about to start redoing the tweaks.

Thanks to this well written post. Backups are a must. :)

More power to the OP. Gratitude.

Sent from my ASUS Transformer Pad TF700T using Tapatalk HD


Sweet I am glad you took a backup and things are working. You probably didn't need to Unpimp with the rescue package. You could have used the "Remove Selected Tweaks" button to just remove the internet tweaks.

Have you tried installing the CrossBreeder Mod? On its own it really speeds up browsing and network performance. If you haven't this also may be the reason you are unable to apply the network tweaks in PMR that are working on my system.
 

lucius.zen

Senior Member
Sep 16, 2012
464
482
34
Halifax
Yaaaaay only 2 exams left and htc one has shipped :) ill have stats, vids, and photo results up this weekend plus some multitasking goodies and other awesome ****.
 
Last edited:

buhohitr

Senior Member
Nov 30, 2011
5,966
1,821
Yaaaaay only 2 exams left and htc one has shipped :) ill have stats, vids, and photo results up this weekend plus some multitasking goodies and other awesome ****.

Not Galaxy S4? I like the look of htc one, but no removable battery and sdcard are the show stopper for me. I purchased the zerolemon 7000 mah battery for my S3, because I need to use the phone for 8-10 hrs screen on per day.:good:
 

lucius.zen

Senior Member
Sep 16, 2012
464
482
34
Halifax
Not Galaxy S4? I like the look of htc one, but no removable battery and sdcard are the show stopper for me. I purchased the zerolemon 7000 mah battery for my S3, because I need to use the phone for 8-10 hrs screen on per day.:good:

Personally, I could never buy a device from a manufacturer who spends more energy and money on lawsuits and marketing than they do on making innovative devices. The S4 is an S3 with slightly better specks and some gimmicky software features. I thought the eye tracking stuff was cool, but after thinking about it for a while it doesnt actually make all that much sense. Im usually not looking at my device when im watching videos on the go anyways, and even if they get page scrolling with eye tracking i hardly doubt they could implement pinch to zoom, so youll need hands anyways, and hands have better control. Id rather have a few really solid useful features and stunning hardware. To me the S4 is simply not engineered or designed as well as the htc one. I will always support the manufacturer who brings the best of engineering and design. Thats why I bought the infinity, and its paid off, I have dropped my baby so many times on every face and corner. I dropped it directly on its corner onto concrete and it didnt even get dented. I dropped it into snow once, and its still good, still no lightbleed lol. I also dont case my devices, I buy the thinnest and lightest devices for a reason. I can deal with the software side on my own, thats why i use android. Allthough sense 5 is stunning (despite slightly different navigation). Its the only android skin i would ever consider actually keeping for a bit and playing with. Htc is moving in the right direction here, and seems more commited to improving and supporting android development than Samsung.

I still very much respect your decision though, we are all looking for different things. I dont need removable storage, everything is cloud based for me. I currently only have 1.5Gb of data on my tablet and 2.5Gb on external storage lol, makes setting up my tab from scratch easy at least. I could see why the removable battery is an issue. it would be nice on the one, but id rather have unibody design and zero gap engineering for an excellent feel. I have seen many reports and reviews stating that 25%-35% of battery is still left on the one after a day of heavy use. Thats more than enough for me. Ill never be away from a charger for more than a day and I dont do any gaming, so my battery use will be paltry, especially if i keep the screen brightness down.
 

buhohitr

Senior Member
Nov 30, 2011
5,966
1,821
Personally, I could never buy a device from a manufacturer who spends more energy and money on lawsuits and marketing than they do on making innovative devices. The S4 is an S3 with slightly better specks and some gimmicky software features. I thought the eye tracking stuff was cool, but after thinking about it for a while it doesnt actually make all that much sense. Im usually not looking at my device when im watching videos on the go anyways, and even if they get page scrolling with eye tracking i hardly doubt they could implement pinch to zoom, so youll need hands anyways, and hands have better control. Id rather have a few really solid useful features and stunning hardware. To me the S4 is simply not engineered or designed as well as the htc one. I will always support the manufacturer who brings the best of engineering and design. Thats why I bought the infinity, and its paid off, I have dropped my baby so many times on every face and corner. I dropped it directly on its corner onto concrete and it didnt even get dented. I dropped it into snow once, and its still good, still no lightbleed lol. I also dont case my devices, I buy the thinnest and lightest devices for a reason. I can deal with the software side on my own, thats why i use android. Allthough sense 5 is stunning (despite slightly different navigation). Its the only android skin i would ever consider actually keeping for a bit and playing with. Htc is moving in the right direction here, and seems more commited to improving and supporting android development than Samsung.

I still very much respect your decision though, we are all looking for different things. I dont need removable storage, everything is cloud based for me. I currently only have 1.5Gb of data on my tablet and 2.5Gb on external storage lol, makes setting up my tab from scratch easy at least. I could see why the removable battery is an issue. it would be nice on the one, but id rather have unibody design and zero gap engineering for an excellent feel. I have seen many reports and reviews stating that 25%-35% of battery is still left on the one after a day of heavy use. Thats more than enough for me. Ill never be away from a charger for more than a day and I dont do any gaming, so my battery use will be paltry, especially if i keep the screen brightness down.

Agree that HTC one is in fact fit your needs, one thing about the "look" even for iphone, everyone that I know, they all have cover for their phones and once the cover is on, it no where look like original any more, which defeat the purpose of the "look", don't you think?
 

Top Liked Posts

  • There are no posts matching your filters.
  • 52
    Please see post #2 for instructions and change log.

    BASICS/PREREQUISITES:
    To begin you must unlock, install TWRP, and acquire system files and mods.

    Unlocking:
    Use the Asus unlocking tool from the downloads section on the Asus TF700 support website. Simply install the .apk, run the app, and follow the prompts.

    Installing TWRP:
    TWRP can be found here - http://xdaforums.com/showthread.php?t=1797692
    Instructions for installing TWRP can be found here - http://xdaforums.com/showthread.php?t=1938129&highlight=root+custom+recovery

    NOTE - To boot into TWRP press and hold the power and volume down button until white text appears in the top left corner of your screen. Release both buttons and press volume up.

    System Files:
    System files and mods can be obtained from the following links. Please thank/donate to the devs for all of their hard work.

    CROMi-X
    [ROM] - http://xdaforums.com/showthread.php?t=2425383

    Hundsbuah’s Kernel - http://xdaforums.com/showthread.php?t=2143093&page=80

    Data2SD [Mod] - http://xdaforums.com/showthread.php?t=1962507

    ROM2SD [Mod] - http://xdaforums.com/showthread.php?t=2501129

    CrossBreeder [Mod] - http://xdaforums.com/showthread.php?t=2113150


    DATA2SD/ROM2SD:
    Data2SD works around poor I/O performance by giving us the ability to utilize a fast microSD card as our primary mode of storage. ROM2SD follows a similar premise as Data2SD; however, it also gives us the ability to dual boot any android ROM compatible with our tablet. The application of these mods results in apps opening faster, faster boot times, faster read/write speeds, and faster downloading/less lag while downloading. Step #1 and Step #2 only need to be followed the first time you apply these mods.

    Step #1 - Create GParted Live USB Stick:
    In order to run your tablet from a microSD card you will need to reformat it using Gparted (a linux based partition editor) installed on a live USB stick. A live USB stick has the image (.iso file) of a program burnt onto it so that it can be run at boot on a PC.

    Find Gparted here - http://gparted.sourceforge.net/livecd.php

    Download the live CD/USB image. The easiest tool for burning the image is the LinuxLive USB Creator.

    LinuxLive USB Creator can be found here - http://www.linuxliveusb.com/

    Download the program and install it. Simply follow the instructions within the program using the Gparted image.

    Step#2 - Reformat microSD Card:
    This involves booting into Gparted, clearing your microSD of existing partitions, and creating new partitions to store androids /system (ROM, kernel), /data (apps and data), and /media partitions (user data and media files - "sdcard0"), which were previously stored internally.

    Boot Into Gparted:
    Insert your live USB and microSD card into your PC. To boot into Gparted power on your PC and select one of the "FX" buttons to bring up the boot selection menu (I need to select F9). The live USB will be labelled something like "USB Diskette", or "USB Hard Disk". Select your live USB and follow the prompts to boot into Gparted.

    Create Partition for External Storage:
    Once Gparted has loaded delete any existing partitions on your microSD card. Next create a primary partition using the Fat32 file system at the very beginning of your card with at least 4Gb of storage (I am using 8Gb). This is recognized and functions as external storage so that we have a place to store flashable (installable) .zips and TWRP backups. It does not contain any data relevant to the functioning of our tablet.

    NOTE - Partitions should be aligned to mb and ideally be divisible by 4.

    Create Partition for System Storage:
    After creating a partition for external storage we need to create partitions for androids /system, /data, and /media partitions. If you plan on using Data2SD you only need to make a second partition. If you plan on using ROM2SD then you need to make 2 additional partitions.

    Data2SD - Create a second primary partition using the ext4 file system with the remaining space on your microSD. This partition will contain your /system, /data, and /media partitions. After you have created this partition you will need to flag it to run at boot. Right click the ext4 partition and select “Manage Flags”. Check the box beside “Boot”. You are done reformatting, simply exit Gparted.

    ROM2SD - The second partition you need to make will contain your /data and /media partitions. The third partition will contain your /system partition. It only needs enough space to store your ROM and kernel so we will create it first at the very end of the microSD card. Create a primary partition using the ext4 file system with 1Gb of space. After you have created this partition you will need to flag it to run at boot. Right click the ext4 partition and select “Manage Flags". Check the box beside “Boot”. Now create another primary partition using the ext4 file system with the remaining space on your card. You are done reformatting, simply exit Gparted.

    Step #3 - Install System Via TWRP:
    I do not recommend setting up Data2SD or ROM2SD using old data. Please do a fresh install to avoid issues. I am able to wipe my tablet completely, install my system, set up my apps/data, and apply all of the tweaks in this guide in less than half an hour.

    Getting Started:
    If using Data2SD please download the "mount-data2sd.zip" file attached to this post (credit @Mistar Muffin). If using ROM2SD please download the "mount-rom2sd.zip" file attached to this post (credit @_that). Move this file, your ROM, your kernel, and any applicable mods to the Fat32 partition on your microSD card. Power down your tablet and boot into TWRP (see basics section for details).

    Install Using Data2SD:
    Boot into TWRP and wipe everything other than external storage (cache, dalvik cache, data, system, internal storage). To begin setting up Data2SD select CROMi-X for installation. Next choose "mount-data2sd.zip". This resets device nodes so that TWRP will install .zips to our microSD card rather than internal storage. Begin installation once the rest of your .zips are selected (ex - themes, mods, etc). During CROMi-X installation you will be presented with a kernel selection page. In the first section select your desired kernel. In the second section choose the Data2SD compatible option. When installation has finished reboot your tablet and set it up as usual.

    Install Using ROM2SD:
    Before proceeding check out _that`s ROM2SD thread so you understand how ROM2SD works - http://xdaforums.com/showthread.php?t=2501129. CROMi-X or miniCROMi-X users can utilize the following instructions to install ROM2SD, see the following post if you are dual-booting other ROMs - http://xdaforums.com/showpost.php?p=47333729&postcount=31.

    Boot into TWRP and wipe everything other than external storage (cache, dalvik cache, data, system, internal storage). We begin by setting up our tablet to run from internal storage. Select CROMi-X or miniCROMi-X for installation. Hundsbuah's kernel and _that's kernel are available through CROMi-X and are ROM2SD compatible. Next choose any other .zips you need to flash (ex - themes, mods, etc). During CROMi-X installation you will be presented with a kernel selection page. In the first section select a ROM2SD compatible kernel, in the second section choose the 4th option. This installs CROMi-X to your internal storage and allows you to boot to an additional system on a microSD card. Once installation has finished reboot your tablet.

    When you reboot you will be presented with the android set up wizard. Go through this as usual and set up you tablet. Once you have finished reboot your tablet back to recovery. Next we will set up our microSD. Select CROMi-X or the ROM2SD compatible version of miniCROMi-X for installation. Next choose "mount-rom2sd.zip". This file updates TWRPs device nodes so that .zips are installed to the correct partitions on your microSD card. Select the rest of the .zips you need to flash and begin installation. Once you reach the kernel selection page in the CROMi-X installer select your desired kernel and the third option in the second section. Once installation has finished reboot your tablet. After rebooting you should be presented with the android set up wizard again.

    NOTE - To boot using internal storage remove your microSD card from your tablet and power on. To boot to using your microSD simply put it back in and turn on your tablet.

    Creating/Restoring Nandroid Backups:
    To create or restore a TWRP Nandroid backup you must first install mount-data2sd.zip or mount-rom2sd.zip. This resets device nodes so that TWRP will correctly backup/restore partitions on your microSD card. The "Backup" section allows you to create Nandroid backups. The "Restore" tool in TWRP allows you to restore Nandroid backups.

    Wiping Partitions and Factory Reset:
    Boot into TWRP and install mount-data2sd.zip or mount-rom2sd.zip. This resets device nodes so that TWRP will correctly wipe partitions stored on your microSD card. The "Wipe" section can be used to do a factory reset or selectively wipe your dalvik cache, cache, /system partition, /data partition, or internal storage.

    NOTE - Partitions are mounted differently after implementing Data2SD/ROM2SD. The Fat32 partition on your microsd is recognized as "MicroSD". The media partition is still mounted as "sdcard0". It can be found in the /system/storage/ directory, along with your tablets internal storage, which is mounted as "sdcardi". If using ROM2SD you internal /data partition can be accessed via the/datai directory.


    CPU/GPU FREQ CAPS:
    With Hundsbuah's kernel you can set freq caps for the CPU and GPU within each of Asus' power modes (power saving, balanced, performance). The parameters we need to edit can be found in the following files:

    cpu1.sh (power saving)
    cpu2.sh (balanced)
    cpu3.sh
    (performance)

    Which are located in the following directory:

    /system/etc/cpuX.sh

    To apply the following tweaks a text editor is used to edit lines contained in the aforementioned files. I utilize the editor built into AntTek Explorer Ex.

    GPU Frequency Cap:
    The following lines set GPU voltage:

    logi "echo GPU voltage > core_cap_level"

    echo GPU voltage > /sys/kernel/tegra_cap/core_cap_level


    To modify the GPU freq cap simply fill the red portion of the above lines with your desired GPU voltage. The GPU voltage determines the GPU freq cap. Here is how Hundsbuah's stock voltage table works, if you modify the voltage table these values will be different:

    700 mhz - 1425 mV
    650 mhz - 1387 mV
    600 mhz - 1350 mV
    520 mhz - 1300 mV
    484 mhz - 1250 mV
    446 mhz - 1200 mV
    408 mhz - 1150 mV
    361 mhz - 1100 mV
    247 mhz - 1000 mV
    200 mhz - 950 mV

    GPU FPS Limit:
    To unlock the GPU FPS limit and change it to 90 add the portion in red to the following lines:

    logi "setprop persist.tegra.NV_FPSLIMIT 1"
    setprop persist.tegra.NV_FPSLIMIT 1

    logi "setprop persist.sys.NV_FPSLIMIT 90"
    setprop persist.sys.NV_FPSLIMIT 90

    CPU Frequency Caps:
    To change the frequnecy caps for each CPU core fill the red portion of the following lines with the desired frequency:

    logi "echo Core 1 freq cap > pwr_cap_limit_1"
    echo Core 1 freq cap > /sys/module/cpu_tegra/parameters/pwr_cap_limit_1

    logi "echo Core 2 freq cap > pwr_cap_limit_2"
    echo Core 2 freq cap > /sys/module/cpu_tegra/parameters/pwr_cap_limit_2

    logi "echo Core 3 freq cap > pwr_cap_limit_3"
    echo Core 3 freq cap > /sys/module/cpu_tegra/parameters/pwr_cap_limit_3

    logi "echo Core 4 freq cap > pwr_cap_limit_4"
    echo Core 4 freq cap > /sys/module/cpu_tegra/parameters/pwr_cap_limit_4


    Asus Power Saving Modes:
    The following profiles are optimal for specific tasks/uses. They were designed to obtain a lag-free experience based on certain levels of CPU load.

    Power Saving - Used for tasks with a moderate to high load for extended periods of time (productivity, browsing heavy websites, streaming video online, heavy multitasking)
    - GPU Voltage/Freq = 1425/700
    - Core 1/2/3/4 = 1750000
    - Quadrant Score - 7400-7500 (Screenshot - https://www.dropbox.com/s/jqdcrwc7t...core - Power Saving Mode (max 1.75Ghz).jpg?m=)

    Balanced - Used for tasks with low to moderate load (general use, light browsing, email, media consumption, etc.)
    - GPU Voltage/Freq = 1425/700
    - Core 1/2/3/4 = 1600000
    - Quadrant Score - 6900-7000 (Screenshot - https://www.dropbox.com/s/zlfhnv1jq...ant Score - Balanced Mode (max 1.6Ghz).jpg?m=)

    Performance - Used for short intense workloads
    - GPU Voltage/Freq = 1425/700
    - Core 1/2/3/4 = 1900000
    - Quadrant Score - 8000-8100 (Screenshot - https://www.dropbox.com/s/iv5wawq49...ant Score - Performance Mode (max 1.9Ghz).jpg)


    INTERACTIVE GOVERNOR TWEAKS:
    The CPU governor controls how the CPU scales through frequency steps in response to changes in CPU load. CPU load reflects the difference between our processors current power (increased by freq and voltage - decreased by leakage) and the power needed to effectively process work queued up by the process scheduler. The magnitude and variability of CPU load are important indicators of processor performance. As load increases instances of lag also tend to increase. If we were to graph instances of lag/stuttering and CPU load over time you would see that stuttering happens most when load is high. An unstable, or highly variable CPU load indicates that CPU scaling is not responsive to the demands of the process scheduler; its almost as if scaling is a half-step too late. In this condition scaling is generally erratic, which decreases time spent idling, system stability, and responsiveness. Ideally we want CPU load to be as low and stable as possible as this indicates scaling is working efficiently. The amount of power a CPU can output does not matter; if it is not effectively scaled based on changes in load then lag/unresponsiveness is bound to occur. The following governor tweaks improve the efficiency of CPU scaling. To evaluate their effectiveness Android Tuner was utilized to monitor CPU load, CPU scaling in real-time, total time spent at each frequency step, and core temperature during benchmark tests and actual use. Detailed explanations can be found beneath each tweak.

    NOTE - You will need to write an init.d script to apply the following tweaks. See my guide to writing init.d scripts for details - http://xdaforums.com/showthread.php?t=2198510.

    NOTE - CROMi-X Users - The following tweaks, aside from max_boost, are applied by default in CROMi-X.

    timer_rate - 20000
    Sets the rate at which the governor samples cpu load. Lower values result in scaling that is too jumpy. Higher values result in scaling that is not responsive enough.

    min_sample_time - 40000
    Sets the minimum amount of time spent at a freq step before scaling down. The interactive governor samples CPU load every 2 ms. If the CPU is underpowered core freq is ramped up. Once load decreases the CPU is scaled back down. By default the CPU must spend at least 3 ms at a freq before it can scale down, which does not make sense if the governor is set on a 2 ms timer. A 4 ms minimum downscaling delay makes sense - the timer samples load twice before scaling down. Load tends to fluctuate drastically with touch devices; thus we do not want the CPU to scale down if it is going to have to ramp up again. Having a 2 ms timer allows the CPU to be scaled up quickly, while a 4 ms down scale delay prevents the CPU from downscaling early.

    midrange_freq = 760000 - set as close to middle of freq table as possible
    Needs to be recalibrated to reflect modified freq caps. If core freq caps are increased midrange freq should be adjusted so that the governor knows how to control the CPU properly.

    max_normal_freq = 1300000
    Instructs the CPU to jump to this freq when midrange_go_maxspeed_load is reached. For some reason this tweak has had a greater impact on performance than any of my governor tweaks. Before applying this tweak 475 mhz and max frequency are used most while under low/moderate load. After applying this tweak 475 mhz and 1.3 Ghz are utilized more often, as are a wider range of freq steps. Despite spending far less time at max frequency benchmark scores and performance have increased.

    max_boost = 1900000 - set to highest freq available
    Max boost is a mechanism for clearing a mounting queue as quickly as possible to prevent lag. It will do its job most effectively if we give it as much juice as possible. Controlled by go_maxspeed_load.

    NOTE - CROMi-X Users - To apply the above tweak delete or edit the line changing max_boost under "#CPU and VM Tweaks" in sdbags 50CleanTWEAKS init.d script.

    midrange_go_maxspeed_load = 65
    go_maxspeed_load = 85
    Optimal for keeping CPU load low and stable. Through my testing I have found that it is more efficient to adjust freq a little earlier by setting load thresholds lower (65/85) than it is to make adjustments when load has already gotten relatively high. Improves responsiveness without hurting battery life because the CPU spends more time idling.

    To implement the above tweaks add the following lines to your init.d script:

    echo "20000" > /sys/devices/system/cpu/cpufreq/interactive/timer_rate
    echo "40000" > /sys/devices/system/cpu/cpufreq/interactive/min_sample_time
    echo "760000" > /sys/devices/system/cpu/cpufreq/interactive/midrange_freq
    echo "1300000" > /sys/devices/system/cpu/cpufreq/interactive/max_normal_freq
    echo "1900000" > /sys/devices/system/cpu/cpufreq/interactive/max_boost
    echo "65" > /sys/devices/system/cpu/cpufreq/interactive/midrange_go_maxspeed_load

    echo "85" > /sys/devices/system/cpu/cpufreq/interactive/go_maxspeed_load

    NOTE - Detailed descriptions of each governor can be found at the following link - http://xdaforums.com/showthread.php?t=1369817.


    HOTPLUG CONFIG:
    The hotplug config in Hunds Kernel allows you to control how CPU cores are brought online as threads are processed. A thread is the smallest sequence of instructions that can be managed independently by a process scheduler. Threads are contained within a process. A process is the execution of instructions contained within a program. On a single processor system multi-threading (multitasking) is generally implemented by transmitting/sending signals over a common path; the processor switches between different threads. This switching generally happens frequently enough that the user perceives the threads or tasks as running at the same time. If the CPU is overloaded and a thread is queued up by the process scheduler then lag/stuttering is likely because thread switching does not occur quickly enough to be hidden from the user. On a multi-core system threads can be truly concurrent, with every processor or core executing a separate thread simultaneously, which decreases the potential for lag/stuttering. If core 1 is busy processing a thread and another thread is queued up by the process scheduler we want an additional core to become active so that core 1 does not have to switch between threads. However, we also do not want to bring cores online needlessly. If a core is able to process multiple threads fast enough such that switching is unnoticeable then it would be inefficient to bring another core online.

    NOTE - CROMi-X Users - The following tweak is applied by default in CROMi-X.

    To change the hotplug config add the following line to your init.d script:

    echo "2 4 6" > /sys/kernel/rt_config/rt_config

    Instructs the kernel to bring core 2, 3, or 4 online when more than X threads are active. Core 2 is brought online when 3-4 threads are active, core 3 is brought online when 5-6 threads are active, and core 4 is brought online when 7+ threads are active. Through my testing I have found that a single core running at 475 Mhz has enough power to effectively process a constant low load. If hotplugging values are set lower then the kernel tends to unnecessarily bring additional cores online while in a low load state. If the kernel is told to activate cores later then we begin to notice lag/stuttering due to thread switching.


    KERNEL TWEAKS:
    The following tweaks directly impact how the kernel controls our tablets hardware.

    CPU Frequency Table:
    The CPU frequency table sets the frequencies that are available to the CPU. The following tweak modifies the minimum freq step that is available to the CPU, to apply it add the following line to your init.d script:

    echo "475000" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq

    Through my testing I have found that if an app is open and generating a very low load we cannot utilize frequencies below 475 mhz. If allowed to drop below 475 mhz core freq bounces between 204 mhz and 475 mhz while in an active low load state; which indicates that freq steps below 475 mhz are incapable of handling the load induced by the activation of a foreground app. Preventing the CPU from dropping below 475 mhz increases responsiveness and stabilizes CPU load as the CPU cannot drop to ineffective frequencies. This does not impact battery life because of the design of the Tegra 3 processor. The Tegra 3 has 5 cores; 4 primary fast-process cores and 1 slow-process battery saving core. If our tablet is asleep or idling/inactive (no foreground app) then processing is handled by the low-powered battery saving core. If any foreground app is open our kernel activates a combination the 4 primary cores. Scaling_min_freq has no impact on the battery saving core. Therefore, increasing scaling_min_freq ensures we utilize effective frequencies while in an active state without preventing the CPU from dropping to lower frequencies while inactive.

    CPU Voltage Table:
    The CPU voltage table sets the voltages that are supplied to frequencies in the frequency table. Processing power is increased by frequency and voltage; while it is decreased by leakage, which is increased by heat. As voltage increases so does heat. Therefore, voltage has a positive and negative impact on processing power. The optimal voltage table balances the costs of reducing voltage with the benefits of reducing heat. When undervolting we want to drop voltages as low as possible without decreasing the load that a frequency step can handle. If voltages are dropped too low the need to jump to higher frequencies negates the benefit of running lower voltages. At this point, stability is also compromised. In order to change your CPU voltage table add the following line to your init.d script:

    echo "1337 1300 1275 1250 1225 1200 1175 1150 1125 1100 1075 1050 1025 1000 975 950 925 900 875 850 825 800 775 750 725 700 687 675" > /sys/devices/system/cpu/cpu0/cpufreq/UV_mV_table

    The voltage table above has been rescaled and undervolted such that heat production is decreased while performance and stability are maintained. Battery consumption correspondingly decreases as less voltage is drawn by each freq step. Lower voltages are used across the entire table yet the undervolting is not very severe, if voltages are dropped any lower the load that each freq step can handle begins to decrease and introduce instability. The lowest and highest freq, where CPU utilization is highest, are undervolted the most. The voltages supplied by the table are optimal for the load each freq step needs to process, which is indicated by improved CPU scaling. CPU load is lower and more stable, low to mid range freq are used more, and upper range freq are used less. The CPU responds to changes in load more appropriately; while in a low load state we are much more likely to jump to a midrange feq than an upper range freq.

    GPU Voltage Table:
    The GPU voltage table sets the voltages that are supplied to freq in the freq table. Hundsbuah's voltage table is nearly optimal. The voltage supplied to 700 mhz (1425 mV) cannot be dropped without negatively impacting performance. That being said, the voltages supplied to lower freq can be dropped and rescaled such that performance is maintained. The following voltage table reduces heat production and battery consumption without impacting performance and stability. To edit your GPU voltage table add the following line to your init.d script:

    echo "1425 1375 1325 1275 1225 1175 1125 1075 1025 975 925" > /sys/devices/system/cpu/cpu0/cpufreq/gpu_voltage_control


    I/O TWEAKS:
    I/O (input/output) refers to the communication between an information processing system and external sources (users, network cards, monitors etc). I/O operations involve an input device, a processing unit, and an output device. Whether or not a device is classified as input or output depends on one's perspective because many devices can serve as an input or produce output. Within computer architecture the CPU is the processing unit and main memory (RAM) is the output device. Any operation involving the transfer of data to/from this combination (ex - from an SSD) is considered I/O. I/O operations utilize both slow-access bulk storage (ROM) and fast-accesss memory (RAM), which prevents the CPU from processing flows of information at the same rate in both directions. The bottleneck introduced by R/W operations on slow-access storage often underlies laggy/unresponsive performance. I/O scheduling is utilized to avoid lag/stuttering that results from disparate rates of information processing.

    Scheduler:
    I/O schedulers control the flow of information between input devices, processing units, and output devices. Schedulers utilize algorithms to maximize the efficiency of I/O operations. Thus, I/O performance is significantly impacted by the scheduler that we use. To evaluate each scheduler's performance both Quadrant and Android Tuner were used; Quadrant for global I/O performance, Anroid Tuner for specific R/W speeds. I ran all schedulers through 6 trials in Quadrant and 6 trials in Android Tuner to control for variability in test scores and the effects of confounding variables. Following trials I calculated the mean R/W speed of each scheduler for all tested file sizes. Mean memory, I/O and total Quadrant scores were also calculated. Schedulers were then ranked from 1-6 within the previous measures. Finally, schedulers were ranked globally based on the mean of all within measure ranks. Results are as follows:

    1)sio
    2)deadline
    3)row
    4)cfq, noop
    5)bfq

    While the aforementioned ranks accurately reflect global I/O performance schedulers excel in a different areas. I suggest checking out my data at the following link and selecting the scheduler that is optimal for your system - https://www.dropbox.com/s/iie89tn33qe07j8/Lucius.Zen - IO Scheduler Data.xlsx?m=.

    NOTE - CROMi-X Users - The following tweak is applied by default in CROMi-X.

    To change your scheduler to "sio" add the following line to your init.d script:

    echo "sio" > /sys/block/mmcblk0/queue/scheduler
    echo "sio" > /sys/block/mmcblk1/queue/scheduler


    NOTE - Detailed descriptions of each scheduler can be found at the following link - http://xdaforums.com/show....php?t=1369817.

    NOTE - Additional I/O tweaks can be found in the "I/O Scheduler Tweaks" section in post #3.
    30
    Additional Resources

    APPENDIX - USEFUL RESOURCES/TWEAKS/MODS:

    CROMi-X INSTALLER OPTIONS:
    I select the following options during the CROMi-X installation process:
    • DPI - 200
    • Launcher - Apex Launcher
    • Sound Manager - X-Loud Audio Mod (Noozxoide)
    • Tweaks - Browser2RAM, Zip Align .apks
    • Apps - AdAway App
    • Hard Core Tweaks - Force GPU Rendering
    DPI Settings:
    DPI, or dots per inch, determines how images are rendered across the pixels on your display. Setting DPI to a lower value results in content looking smaller. Changing DPI settings will not impact performance. 240 DPI is standard for most tablets because it makes things easiest to see/use for the widest number of people. 200 is better if you use your tablet as a laptop replacement because more content can be displayed at any given time.

    Launcher:
    I suggest using Apex Launcher. It has great features that extend functionality if desired. The UI is also incredibly customizable and can be stripped down to the bare essentials. Disabling features and cleaning up the UI is more important to me than adding features. Apex also won an award for top 5 apps in 2012 from xda. Make sure you select "Lock launcher in memory" in Apex's "Advanced Settings".


    NOOZXOIDE SETTINGS:
    The optimal noozxoide settings depend on the speakers you are using. I am utilizing the following settings for our tablets built-in speaker.

    Noozxoide Xlimiter Processor:
    - Compress and reduce overload for smooth audio - Enabled
    - Select Effect Strength - Hard

    Noozxoide Balanced X-EQ Processor, Noozxoide Maxxbass Processor:
    - Deliver balanced natural soundstage and premium bass - Enabled
    - Digital Presets - Cinema
    - Noozxoide VE-Engine - Stongest

    Noozxoide Logic Surround ES Processor:
    - Create VSUR on practical monitors and widen the soundstage - Enabled
    - Create Room Size - Live


    CROSSBREEDER MOD/ADAWAY APP:
    The CrossBreeder Mod utilizes 5 techniques to reduce lag. See the CrossBreeder mod link in post #1 for further details. From my experience it noticeably improves web page loading speed and the responsiveness of apps relying on mobile networks. It also completely removes ads instead of covering them with the "Web Page Not Availabe" dialogue. In order to enable ad removal you will need the CrossBreeder mod and AdAway app (obtained via the CROMi-X installer or the following link - http://xdaforums.com/showthread.php?t=2190753).

    Step #1 - Enable CrossBreeder:
    If you did not install CrossBreeder during your system installation download the CrossBreeder mod and move it to your external storage. Boot into TWRP and install CrossBreeder (if you are flashing to a microSD make sure device nodes are set correctly). Wipe cache/dalvik and reboot.

    Step #2 - Disable CrossBreeder's Governor & I/O Tweaks:
    The CrossBreeder mod implements governor and I/O tweaks that may interfere with the application of the tweaks in this guide. To disable CrossBreeder's governor and I/O tweaks open a root explorer and navigate to the following file:

    /system/etc/CrossBreeder


    Next remount the /system partition as rewritable (see "Step #5 - Enable Your Script" in my guide to writing init.d scripts for details - http://xdaforums.com/showthread.php?t=2198510). Once your /system partition is mounted as rewritable locate the following files:

    /system/etc/CrossBreeder/START_TWEAKING_GOVERNOR
    /system/etc/CrossBreeder/START_TWEAKING_IO


    And change their name to:

    /system/etc/CrossBreeder/STOP_TWEAKING_GOVERNOR
    /system/etc/CROssBreeder/STOP_TWEAKING_IO


    Step #3 - Enable AdAway App:
    Once you have rebooted open the AdAway app. Select "Download Files and Apply Ad Blocking". Reboot your system when prompted. All ads should now be completely removed.


    REMAP DOCK KEYBOARD:
    To remap the dock keyboard we need to edit the following file using a text editor:

    /system/usr/keylayout/asusdec.kl


    I suggest backing up this file to an additional location before you begin editing. To remap a particular key simply delete the function to the right of the key's number and replace it with the desired function. Once you are done editing save the file and reboot your tablet.

    EXAMPLE:
    key 142 SLEEP WAKE UNLOCK
    key 142 FORWARD_DEL WAKE UNLOCK

    NOTE - Invoking the APP_SWITCH function opens the recent apps menu.

    NOTE - The files below asusdec.kl contain the keyboard mappings for various external keyboards (ex - generic PC keyboards). I suggest checking out these files as they contain numerous functions that can be remapped to our keyboard dock (ex - escape).

    NOTE - For a list of useful keyboard shortcuts see the following thread - http://www.transformerforums.com/fo...list-shortcut-keys-keyboard-dock.htmlhortcuts


    DISABLE APPS:
    Disabling the following apps will not impact basic functionality, cause instability, or boot looping. However, I primarily use my tablet as a laptop replacement; therefore, I offload many functions that I find better suited to my phone (ex - location based anything, lockscreen, daydream, etc).
    • Asus Battery
    • Asus Sync
    • Basic Sleep Mode Apps
    • Bluetooth Share
    • Calculator
    • com.android.backupconfirm
    • com.android.lockscreen
    • com.android.providers.partnerbookmarks
    • com.android.sharedstoragebackup
    • com.asus.pcsynclauncher
    • com.asus.quicksearch
    • com.asus.youtubesearch
    • com.google.android.voicesearch
    • Gallery
    • Google Backup Transport
    • Google Partner Setup
    • Google Search
    • Google Text-to-speech Engine
    • Live Wallpaper Picker
    • Market Feedback Agent
    • Mobile Data
    • Mobile Network Configuration
    • MusicFX
    • Network Location
    • Photo Screensavers
    • Search
    • Search Applications Provider
    • Setup Wizard
    • Setup Wizard
    • Sound Recorder
    • Talkback
    • User Dictionary
    • Wi-fi Direct Share

    DISABLE BOOT ANIMATION:
    Disabling the boot animation significantly reduces heat production and battery consumption brought about by the boot sequence. Core temperature ranges between 44-46 degrees celsius following a cold boot with the boot animation enabled. Core temperature ranges between 38-40 degrees celsius following a cold boot with the boot animation disabled. To disable the boot animation add the following line to the bottom of your build.prop file (found in the /system directory) using a text editor:

    debug.sf.nobootanimation=1


    DISABLE EXT4 JOURNALLING:
    The ext4 file system utilizes journalling as a safeguard against data loss. A journalling file system keeps track of write operations in a journal before committing them to storage. In the event of a shutdown brought about by a system error it is possible for write operations to be interrupted, which may introduce inconsistencies in the file system. Instead of doing an entire file system check the journal is examined for write operations that were potentially interrupted. Thus, journalling allows ext4 file systems to quickly recover from crashes as entire file system checks can be avoided. However, write operations cannot be executed until the journal is updated and actively maintaining a journal requires memory and processing resources. Therefore, disabling journalling is advantageous from a performance perspective. I have found that disabling journalling reliably produces an increase in performance. To test I ran through 5 trials in Quadrant with journalling disabled and 5 trials with journalling enabled. On average disabling journalling increased total score by 88.2 points. The minimum and maximum total scores out of 5 trials were also much higher with journalling disabled. These results suggest that disabling journalling is a reliable way to improve performance. Follow the steps below to disable journalling:

    Step #1:
    Download Disable_Journal.zip (credit - @LetMeKnow) from post #1 and move it to your microSD card.

    Step #2:
    Boot into TWRP and install Disable_Journal.zip (if you are flashing to a microSD make sure device nodes are set correctly). Wipe cache/dalvik and reboot.


    DISABLE LOGGING/LOGCAT:
    Logcat, the android logging system, provides a mechanism for collecting and viewing system debug output. Various logs from applications, portions of the system, and kernel are recorded in logcat so that users can debug system failures/crashes brought about by errors in processes. Thus, logcat can be an incredibly useful tool for developers, testers, and advanced users. However, maintaining logcat involves recording thousands of lines of data as processes are executed, which requires system resources. Despite logcat's usefulness as a debugging tool it negatively impacts performance. To test I ran through 5 trials in Quadrant with logcat disabled and 5 trials with logcat enabled. On average disabling logcat increased total score by 20.2 points. The minimum and maximum total scores out of 5 trials were also higher with logcat disabled. Therefore, disabling logcat is advantageous for users who do not require advanced debugging capabilities. To disable logcat add the following line to you init.d script:

    rm dev/log/main


    I/O SCHEDULER TWEAKS:
    The following tweaks improve I/O performance by modifying parameters that control the behaviour of the I/O scheduler. Detailed explanations can be found beneath each tweak.

    iostats - 0
    Disables I/O stats, which reduces overhead.

    rotational - 0
    Optimizes I/O scheduler behaviour for non-rotating storage. Scheduler no longer uses logic meant to reduce seek times.

    rq_affinity - 1
    Forces the kernel to process I/O requests on the CPU core that issued the request. Improves the effectiveness of CPU data caching.

    nr_requests - 1024
    Increases the size of the I/O request queue so that more requests can be sorted before execution.

    read_ahead_kb - 6144
    Increases the size of the read-ahead cache, which improves the reading of sequential data.

    To evaluate the effectiveness of the above tweaks I compared mean R/W speeds of various file sizes following the application of each tweak. The above parameters represent independent variables (experimental conditions) and R/W speed, measured via Android Tuner, represents the dependent variable. I subjected each experimental condition to 5 trials to control for variability in test scores. In the first set of trials no tweaks were applied in order to establish a baseline measure of R/W speed (baseline condition). After establishing baseline performance each tweak was applied and tested in a sequential manner (experimental conditions C0-C4). Following trials the mean R/W speed of each file size was calculated for each experimental condition. In order to compare the impact of each tweak the total mean R/W speed of each experimental condition was also calculated. Global R/W speed increased sequentially following the application of each experimental manipulation. These results suggest that all of the aforementioned tweaks have a positive and measurable impact on I/O performance. You can find an excel chart detailing my results at the following link - https://www.dropbox.com/s/ezkbenk1ruql9rt/Lucius.Zen - Scheduler Tweaks Data.xlsx?m=.

    To apply the above tweaks add the following lines to your init.d script:

    MMC=`ls -d /sys/block/mmc*`;
    for i in $MMC;
    do
    echo "0" > $i/queue/iostats;
    echo 0 > $i/queue/rotational;
    echo "1" > $i/queue/rq_affinity;
    echo 1024 > $i/queue/nr_requests;
    echo "6144" > $i/queue/read_ahead_kb;
    done;
    echo "6144" > sys/devices/virtual/bdi/179:0/read_ahead_kb



    TCP/IP PROTOCOLS AND CONGESTION ALGORITHMS:
    TCP/IP is a core set of communication protocols used to transfer data over the Internet and similar networks. IP packets are the vehicle devices use to transfer data between an application program and a web host. They are comprised of a header, which contains the source/destinatin address (among other things), and a payload, which contains the actual data. TCP, part of the transport internet layer, provides intermediate communication between an application and a host. When sending large chunks of data a program can issue a single request to TCP instead of breaking down data into a series of IP packets and requests.

    Due to network congestion and other factors IP packets are often lost. TCP maintains the ordered delivery of packets by detecting packet loss, requesting retransmission, reordering data, and minimizing network congestion. When a host receives a stream of packets it reassembles the data into the sequence that was originally sent. Once the receiver confrims the soundness of the data it sends a packet acknowledging its retrieval. To avoid overloading the connection between a program and a host this aknowledgement must occur before more packets can be sent/recieved.

    For each connection TCP maintains a congestion window. The TCP congestion window is maintained by the sender and is used to prevent network congestion/overload due to packet loss. When packet aknowledments are received the size of the TCP congestion window increases exponentially until a timeout occurs or the receiver reaches its bandwidth limit. Thus, as more packets are acknowledged the maximum segment size (specifies the largest amount of data in a single TCP segment) of the congestion window becomes larger; every round-trip time the maximum segment size effectively doubles. A mechanism called "slowstart" controls the maximum segment size of the TCP congestion window. To prevent network overload TCP congestion avoidance algorithms modify TCP window size, "slow-start", and the slow-start threshold. Thus, TCP congestion avoidance algorithms have a significant impact on the speed of packet delivery between an application program and a web host.

    Optimal TCP Congestion Algorithm:

    NOTE - CROMi-X Users - The following tweak is applied by default in CROMi-X.

    My research and testing suggests that "lp" is the optimal TCP congestion algorithm. Although "westwood" produces marginally higher download/upload speeds (see the following post - http://xdaforums.com/showpost.php?p=48088128&postcount=1884) "lp" results in a stronger connection between an application and a host; which is indicated by fewer timeouts, lost connections, and more responsive web browsing. This leads to the best overall user experience. To change your TCP congestion algorithm to "lp" add the following line to your init.d script:

    /system/xbin/sysctl -w net.ipv4.tcp_congestion_control=lp
    25
    Structural/Clerical Section

    METADATA:

    INTRODUCTION:
    Please advance through post #1 in the order I have laid out. I include prompts to links or other sections when necessary. I suggest reading the entire guide before applying any tweaks. See the "Appendix" section (post #3) for additional tweaks, mods, and useful resources.

    Kernel Compatibility:
    I am running Hundbuah's latest kernel. However, these tweaks should work well with other kernels (ex - _that's kernel).

    Android Version/ROM:
    This guide is based on the latest version of the android 4.2 ROM CROMi-Xenogenesis by sdbags. The modifications made in newer versions of android should have little impact on the effectiveness of these tweaks.

    Init.d Scripts:
    CROMi-X and other users can utilize the appropriate scripts attached to post #1 to apply tweaks implemented via init.d. To activate the script simply save it and remove the .txt appendage at the end of the file. See "Step #5: Enable Your Script" in my guide to writing init.d scripts for application instructions - http://xdaforums.com/showthread.php?t=2198510.

    Caution:
    It is not possible to brick your device by applying the tweaks/mods in this guide. I have done terrible things to my tablet and she still works like a charm. However, I suggest taking a Nandroid backup of your /system, /data, and boot partitions before proceeding (see "Data2SD/ROM2SD" section in post #1).

    Disclaimer/Support:
    I am not a developer. I am simply an android enthusiast. I can guarantee that if you thoroughly follow the instructions in this guide you will not run into any issues. That being said I will not hold your hand. I have spent an immense amount of time ensuring this guide is incredibly thorough and easy to follow. I welcome all feedback relating to how this guide can be improved and promise I will do all I can to help anyone with issues. However, I have already spent far too many hours preparing this guide. I only ask that you do your best to avoid being a dumbass.

    Happy Tweaking!
    Lucius


    IMPLEMENTATION GUIDE:
    The following list outlines how I set up my system on a microSD formatted for ROM2SD (related section - "Data2SD/ROM2SD" - post #1). This roadmap is meant to simplify the overall application of this guide. Detailed instructions can be found in post #1 & #3. System files and installable mods can be obtained through links in the "Basics" section in post #1.

    1) Wipe old data for fresh install (see "Data2SD/ROM2SD" - post #1).
    - Boot into TWRP
    - Install mount-rom2sd.zip (attached to post #1)
    - Wipe cache, dalvik, system, data, and internal storage
    - Format /data
    - Power off


    2) Install system and mods (see "Data2SD/ROM2SD" - post #1).
    - Boot into TWRP
    - Install CROMi-X to microSD
    - Install mount-rom2sd.zip
    - Install CrossBreeder mod (see "CrossBreeder Mod/AdAway App" - post #3)
    - Install Disable_Journal.zip (attached to post #1 - see "Disable Ext4 Journalling" - post #3)
    - Reboot System


    3) Disable unnecessary apps (see "Disable Apps" - post #3).

    4) Modify CPU/GPU profiles (see "CPU/GPU Freq Caps" - post #1).

    5) Apply init.d script (attached to post #1 - see my guide to init.d scripting for application instructions - http://xdaforums.com/showthread.php?t=2198510).

    6) Disable CrossBreeder's governor & I/O tweaks (See Step #2 in "CrossBreeder Mod/AdAway App" - post #3)

    7) Disable boot animation (see "Disable Boot Animation" - post #3).

    8) Remap dock keyboard (see "Remap Dock Keyboard" - post #3).

    9) Enable AdAway app & reboot when prompted (see "CrossBreeder Mod/AdAway App" - post #3).


    CHANGE LOG:
    Code:
    [B]Feb.24/14:[/B]
    - Added "Step #2 - Disable CrossBreeder's Governor & I/O Tweaks" in the "CrossBreeder Mod/AdAway App" section in post #3 - important for CrossBreeder mod users only
    - Updated Quadrant scores in the "CPU/GPU Profiles" section in "CPU/GPU Freq Caps" in post #1
    - Updated "Implementation Guide" in post #3
    - Added note to "Remap Dock Keyboard Section" in post #3 - found APP_SWITCH function that invokes recent apps menu
    
    [B]Feb.21/14:[/B]
    - Added "Implementation Guide" section to post #2
    - Renamed "Instructions" section in post #2 to "Introduction"
    - Edited and cleaned up "Disable Ext4 Journalling" section in post #3
    - Updated Power Saving mode Quadrant score in the "CPU/GPU Profiles" section in post #1
    
    [B]Feb.20/14:[/B]
    - Added new flashable .zip (Disable_Journal.zip) for disabling journalling - old one wasn't configured for our device - thanks LetMeKnow!
    - Updated Quadrant scores in the "CPU/GPU Profiles Section" in post #1 and added screenshots
    
    [B]Feb.19/14:[/B]
    - Added "I/O Scheduler Tweaks" section to post #3
    - Updated scripts to include aforementioned changes
    - Added note to "Scheduler" section in post #1
    
    [B]Feb.18/14:[/B]
    - Added "Disable Logging/Logcat" section to post #3
    - Updated scripts to include aforementioned change
    - Reorganized post #3
    
    [B]Feb.17/14:[/B]
    - Added "Disable EXT4 Journaling" section to post #3
    - Added "Set GPU FPS Limit" section to "CPU/GPU Freq Caps" in post #1 - thanks LetMeKnow!
    - Added "Search Applications Provider" to "Disabled Apps" section in post #3
    Updates Related to CROMi-X:
    - Updated script for CROMi-X 5.3a compatibility
    - Updated "Cromi-X Installer Options" section in post #3
    - Added note to "TCP/IP Protocols and Congestion Algorithms" section in post #3
    - Added note to "Scheduler" section in post #1  
    
    [B]Jan.13/14:[/B]
    - Caught up on editing, reformatting, and reorganizing - fewer errors, clearer instructions, increased consistency across post #1-3 - not a single sub section made it out unscathed :)
    - Modified intro to post #1
    - Changed "Introduction" section in post #2 to "Instructions"
    - Added "Init.d Scripts" section to "Instructions" section
    - Added Google Search, Search, and User Dictionary to "Disabled Apps" section
    - Added link to my TCP congestion algorithm data in "Optimal TCP Congestion Algorithm" section 
    Updates Related to CROMi-X:
    - Updated script for CROMi-X users, please use new script for compatibility reasons - script was altered and renamed as entries in sdbags 50CleanTWEAKS script need to be removed or overwritten for compatibility reasons - see notes below
    - Added note to "max_boost" in the "Interactive Governor Tweaks" section
    - Added note to "Optimal TCP Congestion Algorithm" in the "TCP/IP Protocols and Congestion Algorithms" section
    - Added note at the top of the "Interactive Governor Tweaks" section
    - Added note at the top of the "Hotplug Config" section   
    
    [B]Jan.5/14:[/B]
    - Updated CPU voltage table - midrange voltages rescaled and undervolted more - results in less heat, less battery consumption, greater usage of mid range freq, lower and more stable cpu load, feels more responsive, benchmark scores maintained, no decrease in stability thus far - attachments also updated 
    - Apologies for the many updates, voltage table tweaking can be finicky, tends to be a work in progress, should be the last for a while
    
    [B]Jan.4/14:[/B]
    - Changed top voltage (1.9 Ghz) in CPU voltage table from 1350 mV to 1337 mV as it is running much more stable - attachments also updated
    
    [B]Jan.3/14:[/B]
    - Moved "Introduction" to post #2 - ran out of room in post #1
    - Added "GPU Voltage Table" section to the "Kernel Tweaks" section in post #1
    - Uploaded a copy of the scripts I use - download and remove the .txt appendage to use - see my guide to writing init.d for application instructions
    
    [B]Jan.2/14:[/B]
    - Added "CPU Voltage Table" section to the "Kernel Tweaks" section in post #1
    
    [B]Dec.30/13:[/B]
    - Added "Disable Boot Animation" section to post #3
    
    [B]Dec.27/13:[/B]
    - Updated links to descriptions of governors/schedulers as they were out of date
    - Added "Noozxoide Settings" section to post #3
    - Added "Optimal TCP Congestion Algorithm" section to "TCP/IP Protocols and Congestion Algorithms" in post #3
    - Added note to "Remap Dock Keyboard" section
    - Cleaned up "Data2SD/ROM2SD" section
    
    [B]Dec.26/13:[/B]
    - Added "Remap Dock Keyboard" section to post #3 - thanks berndblb!
    
    [B]Dec.23/13:[/B]
    - Added "TCP/IP Protocols and Congestion Algorithms" to Appendix
    - Went through and edited entire guide several times over to make everything as clear and easy to read as possible  
    
    [B]Dec.19/13:[/B]
    - Added "I/O Tweaks" section
    - Updated "Introduction" section (disclaimer)
    - General cleaning, editing, clarification 
    
    [B]Dec.17/13:[/B]
    - Cleaned and updated "Data2SD/ROM2SD" section - thanks _that and Thibor!
    - Updated "Caution" section
    
    [B]Dec.16/13:[/B]
    - Tested CROMi-X 5.2.3, updated guide to reflect new changes - thanks sdbags!
    - Changed "Introduction" section significantly
    - General editing, cleaning, and reorganizing - simpler, more concise, easier to understand :)
    
    [B]Dec.15/13:[/B]
    - Added max_normal_freq tweak to "Interactive Governor Tweaks" section
    - Added scaling_min_freq tweak to "Frequency Table Tweaks" in the "Kernel Tweaks" section
    - Moved "CrossBreeder Mod/Ad Blocking" section to post #3
    - Fixed typo in "Set CPU Freq Caps" in the "CPU/GPU Freq Caps" section - first line editing core 2/3/4 were improperly labelled as core 1 - copy/paste error, sorry guys    
    
    [B]Dec.14/13[/B]
    - More editing - Arghhhhhh!!!
    - Added "CROMi-X Installer Options" and "Disabled Apps" sections to post #3
    - Updated "Special Thanks" section in post #3  
    - Updated "CPU/GPU Freq Caps" section - dual/quad core modes are no longer needed to increase utilization of the entire freq table - better performance without hurting efficiency or battery life
    - Added quadrant scores to "CPU/GPU Profiles" section
    - Reorganized "Interactive Governot Tweaks" section - ready to add the most powerful governor tweak thus far
    
    [B]Dec.13/13[/B]
    - Added "Disclaimer" section in "Intro"
    - Updated Post #2 and #3
    - More editing
    
    [B]Dec.12/13:[/B]
    - General cleaning, reorganizing, editing
    - Ready for more tweaks
    
    [B]Dec.6-11/13:[/B]
    - And the updating begins...
    - Updated "Introduction", "Basics", "Data2SD/ROM2SD", and "CrossBreeder/Ad Blocking" sections
    - Updated "CPU/GPU Profiles" and "Stock (Interactive) Governor Tweaks" section 
    - Added "Hotplug Config" Section


    SPECIAL THANKS:
    This guide would not have been possible without the support of the xda community. I would like to take this opportunity to thank the community at large for all of your support. I would also like to formally thank the following individuals:

    @Dees_Troy for bringing TWRP to our device.

    @scrosler for the original CleanROM.

    @clemsyn for his awesome kernel development.

    @sdbags for CROMi-X and his incredible support.

    @Hundsbuah for Hundsbuah's Kernel and explaining the inner-workings of kernel tweaking.

    @_that for ROM2SD, kernel development, and his incessant need to challenge everything that I do. Thank you for helping keep my brashness in check, tolerating my lack of knowledge, and explaining rather than simply lecturing.

    @Mistar Muffin for Data2SD

    @idcrisis and @fivefour for their CrossBreeder Mod and sticking it to the man.

    @buhohitr for the essential. support he provided during my initial foray into the "Android Development" section

    @LetMeKnow for GPU fps unlocking, Disable_Journal.zip, sharing his results, and general support.


    RESEARCH AND TESTING:
    In order to evaluate a tweak I conduct experiments using a pretest-posttest design, which involves comparing mean pretest/posttest scores within and between a test group and a control group. Both groups are subjected to testing before the application of the experimental manipulation to establish an estimate of baseline performance in the measure of interest. Following pretests the experimental manipulation is applied to the test group while the control group is left constant. Posttest measures of both groups are then made. The mean score of both groups in pretests and posttests are calculated. To evaluate the overall effect of the experimental manipulation mean posttest scores are compared between the test and control group. If mean scores in the test group are greater than the control group then it is likely that the experimental manipulation was effective. Statistical hypothesis tests are needed to validate the comparison by ensuring within group variability does not exceed between group variability. If within group variability is higher than between group variability we cannot be sure that our mean scores are actually different. The pretest posttest design gives us the ability to evaluate changes within both groups as well. This is done by comparing mean pretest to protest scores within each group. If the control group made statistically significant improvements between the pretest and posttest this decreases our confidence in the validity of our between group comparison; unless the change within the control group can be accounted for. To create a test and control group ROM2SD was used to install two seperate systems on the same microSD card (32GB Sandisk UHS-1). One install was utilized as the control group, the other was utilized as the test group. Both setups were exactly the same in all respects to ensure accurate comparisons of mean test scores. The tweak being applied represents the experimental manipulation. Each tweak was tested in a separate experiment on a clean system. In between blocks Sd Maid was used to clear caches and junk files and dalvik/cache were cleared via TWRP. Various benchmarking and system monitoring tools were used to measure performance. While benchmarking and system monitoring tools are great they are not perfect. Thus, the effect of each tweak was subjectively tested in real world use for 3 days at minimum. Generally speaking I do not put much faith in others' subjective opinions; however, I make sure I know exactly what to look for with respect to a tweaks impact on performance. This is the point where I ask you to momentarily suspend disbelief, take my word for it, and try these tweaks for yourself. If you think I am nuts after all the more power to you.
    11
    Dear fellow tf700 users,

    In light of the recent loss of my infinity I have purchased a tf701. Thus, I wont really be around anymore, this is my final farewell. While I am somewhat excited to have a new device a large part of me misses my tf700 dearly bc of the awesome and supportive development community we have built. Through hard work and collaboration we have done some amazing things with our device, which I was very lucky to have observed and been a part of. This was my first android device, thank you for making this experience so memorable and enriching, it was a pleasure to meet and work with you all. Best of luck, hope to hear from you in the future.

    Peace,

    Lucius

    PS - Its a celebration *****es, enjoy yo self :victory:
    5
    PMR BETA

    Hey Guys,

    Just thought Id throw you an update regarding the PMR Beta tweaks. I finished testing them a while ago and they work great, most of the old ones are working as usual and there are a couple of new ones that work very well. However, the application process is a little finicky due to some bugs so it can be difficult to work with. I have mainly been waiting for an update to fix these bugs before I post it in my guide. I will wait another day or so to see, if not I will start posting it, I have been busy moving (taking my sweet ass time) and putting in some quality time with 4.2.

    All the best,

    Lucius