[Asus  Eee Pad Transformer Prime] _motley:
_motley kernel for the Prime

Disclaimer: You know the gig...I am not responsible for damaging your device or voiding your warranty. Play at your own risk!

New version released for testing on 4.2.2 ROMs I see popping up since this is likely our future unless Asus releases something. I have been dev'ing for the N4 and N7 lately, so I haven't had a lot of time to keep up with the Prime. However, I wanted to stop by to share the kernel I built over the course of the last two nights for my own device.

Features:

Forked from namidairo (thanks!)

OC to 1.7GHz

GPU OC to 600MHz - configurable from 520-650MHz (see below)

Voltage Control (use Trickster or System Tuner)

Removed system_mode from Asus - boots to 1.4GHz - control with standard apps (use Trickster or System Tuner)

FSYNC - 3 modes (see below) (use Trickster)

Linaro built with optimizations

Kernel log spam reduced - important for our crappy eMMC

optimized ARM RWSEM algorithm

Other misc tweaks (see github)

Build 24 (beta)

Initial release for 4.2.2

AnyKernel install works on 32GB Primes only

Added blob based installs for CM 10.1 and PA. Read notes carefully below when choosing an install zip.

View attachment 1767120 -

32 GB Primes ONLY

(any 4.2.2 custom ROM)

View attachment 1773690 -

CM10.1 based ROMs only

(blob based install for 32/64GB Primes)

View attachment 1773702 -

PA/AOSP 4.2.2 ROMs only

(blob based install for 32/64GB Primes) (only tested on PA thus far! Using PA ramdisk as donor.)

Git repo:

https://github.com/motley-git/android_kernel_asus_tf201

GPU OC

Examples:

echo 520 > /sys/devices/system/cpu/cpu0/cpufreq/gpu_oc

echo 650 > /sys/devices/system/cpu/cpu0/cpufreq/gpu_oc

FSYNC Control

Notes: I thought about combining these options, but many kernel apps already support these two options. So, I have them both and they can be controlled in combination to give us the 3 modes. If you set fsync_enabled = 0 it will be OFF regardless of how Dyn_fsync_active is set.

3 Modes:

Dynamic (default in b35 and higher)- fsync is asynchronous when screen is on, when screen is off it is committed synchronously

dynamic fsync ON

fsync ON

echo 1 > /sys/kernel/dyn_fsync/Dyn_fsync_active
echo 1 > /sys/class/misc/fsynccontrol/fsync_enabled

Off (best performance, less safe) - fsync is always asynchronous (b32 and prior builds)

dynamic fsync OFF

fsync OFF

echo 0 > /sys/kernel/dyn_fsync/Dyn_fsync_active
echo 0 > /sys/class/misc/fsynccontrol/fsync_enabled

Stock (safest) - fsync is always committed synchronously

dynamic fsync OFF

fsync ON

echo 0 > /sys/kernel/dyn_fsync/Dyn_fsync_active
echo 1 > /sys/class/misc/fsynccontrol/fsync_enabled

There is a lot of info out there on fsync, that will not be discussed here. I have run fsync off on several devices for awhile now and haven't experienced any issues. If you are using a device that is not stable and crashes alot, I recommend enabling it via init.d or script manager on boot.

See all my old tf201 kernel versions for ICS here:

Requirements (please read carefully!)

alpha version is stable for most, but changes often until we hit a good stable version. Let me know how it works!

Do a CWM backup so you can restore your boot.img and ROM if necessary!

64GB tabs please use blob based install with ramdisk. Anykernel method may not work on 64GB tablets

Recommend 1.6 or 1.7GHz. I have scored 14300+ on Antutu with 1.7GHz. 1.8 is just not necessary IMO and generates too much heat.

ICS ROMs only

You must be rooted with busybox. Busybox is used for init.d support.

You must be unlocked (Asus Unlock Tool provided on their web site)

Official CWM with latest update (see http://xdaforums.com/showthread.php?t=1533697)

You should have your current full and a stock ROM including kernel on your sdcard (just in case). This is always a good idea anyhow.

Beware of third party tweaks that may conflict. If you have installed another app that will load conflicting kernel modules or provide overclocking capability for the stock kernel, please uninstall or disable this on boot before you install this kernel.

For example, if you are using ATP Tweaks and are loading the CFQ or SIO schedulerd at boot, it can cause a crash as soon as the conflicting kernel module loads into memory. This kernel now includes the many features that folks were previously using kernel modules for. Since this kernel supports these features natively, you know longer need to load a kernel module manually or via a third party application unless the feature is not listed above. For example, if you use CIFS Manager, you should remove the requirement to load the CIFS kernel module in the settings as it is no longer needed with this kernel.

Stock/AOKP versions

Still using stock broadcom WiFi drivers (module built by me match stock modules)

Still use same scaling scripts from before (cpu3.sh etc.) or installed 2.6.11 first and then flash this kernel to be sure you have them right.

Same system modes apply as before (system_mode=3 for 1.6GHz, system_mode=4 for 1.7GHz, system_mode=5 for 1.8GHz etc.)

Generic kernel versions

Supports Gummy, Team EOS, and CM9 since they have the same WiFi driver implemented in their device trees.

No need to use an OC app (SetCPU, No-frills etc.) to set the clock.

WiFi driver is built-in (no kernel modules) using opensource broadcom drivers (nl80211)

KSM=y (ROM needs to enable KSM in dalvik and set scan in the init file like in CM9)

Overclock - needs init.d to be functional to run a init.d script on boot (see sample script below).

Same system modes apply as before (system_mode=3 for 1.6GHz, system_mode=4 for 1.7GHz, system_mode=5 for 1.8GHz etc.)

If you don't get deep sleep, make sure you have implemented the init.d script properly. "echo N > /sys/module/cpu_tegra3/parameters/no_lp" seems to be necessary on generic ROMs to get the proper deep sleep.

"Lite" kernel

This kernel version has been kept very close to stock form, except for OC and some basic features. The kernel won't be updated often, only when Asus releases new versions or an important fixable bug is discovered.

"Lite" Features

Based on stock Asus v9.4.2.28 base

Simple I/O scheduler as the default

OC from 1.5 to 1.7GHz (system_mode 3 = 1.5GHz, 4 = 1.6GHz, 5 = 1.7GHz)

Compiler optimizations (-o2), ARM toolchain - Code Sourcery Lite 2010.09-51

initramfs changes from stock - init.d support (your ROM must have the /system/etc/init.d folder and busybox) and the default.prop has been updated with ro.secure=0 (for "adb remount")

CIFS support (built-in, no need for kernel module)

NTFS/exFAT modules are provided in stock ramdisk - uses stock Tuxera modules. See http://www.tuxera.com/) - modules are loaded during init automatically with included initramfs.

Kernel compression mode LZMA

Input devices - PS3 (stock), XBox (CONFIG_INPUT_FF_MEMLESS and CONFIG_JOYSTICK_XPAD_FF), Other input device support (CONFIG_HID_APPLE, CONFIG_INPUT_MOUSEDEV, CONFIG_HID_LOGITECH)

Networking/VPN - in addition to stock: CONFIG_L2TP, CONFIG_IP_ADVANCED_ROUTER, CONFIG_NET_IPIP, CONFIG_NET_IPGRE, CONFIG_IP_MULTIPLE_TABLES,	CONFIG_INET_AH, CONFIG_INET_IPCOMP, CONFIG_INET_XFRM_TUNNEL, CONFIG_INET_XFRM_MODE_TUNNEL, CONFIG_INET_XFRM_MODE_BEET, CONFIG_L2TP_DEBUGFS, CONFIG_L2TP_V3, CONFIG_L2TP_IP, CONFIG_L2TP_ETH, CONFIG_PPP_MULTILINK, CONFIG_PPPOE

v1.0.0

Stock ROM with ramdisk and 1.7GHz heat script (init.d added, unsecured ramdisk)

CWM flashable: View attachment 1201093

(Stock and stock-based ROMs only - 32GB and 64GB primes)

Anykernel for Stock or AOKP (won't touch your ramdisk, heat, or init.d scripts)

CWM flashable: View attachment 1201088

(32GB stock-based ROMs or AOKP primes only!)

AOKP MS 6.1 with full ramdisk and 1.7 init.d OC script

CWM flashable: View attachment 1203357

(updated zip 7/16/2012 10:40pm - will OC to 1.7 on boot, WiFi is working for me)

(AOKP only - 32GB and 64GB primes)

Generic Anykernel for EOS, Gummy, CM9 (won't touch your ramdisk or init.d scripts)

CWM flashable: View attachment 1201091

(32GB EOS, Gummy, CM9 primes only!)

Alpha 3.x kernel

A more experimental kernel, with stable versions along the way.

View attachment 986646

Features - includes alpha

Asus v9.4.2.28 base with Asus keyboard dock support

Overclocking options: 1.6, 1.7, or 1.8GHz performance mode (choice of Asus modes)

Compiler optimizations (-o2)

I/O schedulers - CFQ (default), SIO, NOOP, and deadline

ZRAM (must be enabled by a script...see example below)

MMC drivers back-ported from Nvidia 3.1 kernel

Governors - optimized Interactive (default), Performance, On Demand, Power Saver

initramfs changes from stock - init.d support (your ROM must have the /system/etc/init.d folder and busybox) and the default.prop has been updated with ro.secure=0 (for "adb remount")

CIFS support (built-in, no need for kernel module)

NTFS/exFAT modules are provided in stock ramdisk - uses stock Tuxera modules. See http://www.tuxera.com/) - modules are loaded during init automatically with included initramfs.

Kernel compression mode LZMA

Userspace voltage control/undervolting (UV)- experimental, don't set on boot until you test your settings (use SetCPU or other voltage tweaking tool) (thanks richardtrip)

Input devices - PS3 (stock), XBox (CONFIG_INPUT_FF_MEMLESS and CONFIG_JOYSTICK_XPAD_FF), Other input device support (CONFIG_HID_APPLE, CONFIG_INPUT_MOUSEDEV, CONFIG_HID_LOGITECH)

Networking/VPN - in addition to stock: CONFIG_L2TP, CONFIG_IP_ADVANCED_ROUTER, CONFIG_NET_IPIP, CONFIG_NET_IPGRE, CONFIG_IP_MULTIPLE_TABLES,	CONFIG_INET_AH, CONFIG_INET_IPCOMP, CONFIG_INET_XFRM_TUNNEL, CONFIG_INET_XFRM_MODE_TUNNEL, CONFIG_INET_XFRM_MODE_BEET, CONFIG_L2TP_DEBUGFS, CONFIG_L2TP_V3, CONFIG_L2TP_IP, CONFIG_L2TP_ETH, CONFIG_PPP_MULTILINK, CONFIG_PPPOE

MMC - CONFIG_ZIMMER by HTC Studio Engineering (reference OneX kernel) -

Experimental

- can't find the source of this hack, so it may be an HTC original or a variant of another hack upstream. It increases vm swappiness to 100 by default to force swapping of dead RAM. The theory is to clear out the stale RAM and open up the RAM for something more useful. While this may be counter-intuitive to I/O performance since swapping equates to more disk i/o, the code changes also implement some changes to the block, fs, and mm portions of the kernel. Essentially, from what I can tell, it flags and handles disk operations (aka "bios") differently if they are involved in swap operations (going to or coming from swap). A "bio" is essentially a manifest of an ongoing I/O block device operation, what sectors and memory locations it contains etc. Once the RAM is freed up, I have also been increasing the Dalvik vm RAM settings in the build.prop (see Demandarin's build.prop post) to allow for more RAM consumption.

Turned off GENTLE_FAIR_SLEEPERS - Theoretically should improve UI performance on Android.

ARM toolchain - Code Sourcery Lite 2010.09-51

Many other performance tweaks and many Nvidia patches/bug fixes applied beyond the stock version. See the release notes or github for details.

alpha v3.0.7.0 - fix deep sleep issue

Stock ROM with ramdisk and 1.7GHz heat script (init.d added, unsecured ramdisk)

CWM flashable: View attachment 1182926(build 302)

(Stock and stock-based ROMs only - 32GB and 64GB primes)

AOKP build 40 with full ramdisk and 1.7 init.d OC script

CWM flashable: View attachment 1182940(build 302)

(AOKP only - 32GB and 64GB primes)

Anykernel for Stock or AOKP (won't touch your ramdisk, heat, or init.d scripts)

CWM flashable: View attachment 1182935 (build 302)

(32GB stock-based ROMs or AOKP primes only!)

Generic Anykernel for EOS, Gummy, CM9 (won't touch your ramdisk or init.d scripts)

CWM flashable: View attachment 1182932 (build 303)

(32GB EOS, Gummy, CM9 primes only!)

alpha v3.0.6.10 - fixed wifi issues in 3.0.6.9

Stock ROM with ramdisk and 1.7GHz heat script (init.d added, unsecured ramdisk)

CWM flashable: View attachment 1165763 (build 247)

(Stock and stock-based ROMs only - 32GB and 64GB primes)

AOKP build 40 with full ramdisk and 1.7 init.d OC script

CWM flashable: View attachment 1165767 (build 247)

(AOKP only - 32GB and 64GB primes)

Anykernel for Stock or AOKP (won't touch your ramdisk, heat, or init.d scripts)

CWM flashable:View attachment 1165765 (build 247)

(32GB stock-based ROMs or AOKP primes only!)

Generic Anykernel for EOS, Gummy, CM9 (won't touch your ramdisk or init.d scripts)

CWM flashable: View attachment 1165764 (build 250)

(32GB EOS, Gummy, CM9 primes only!)

Older alpha 3.0.x versions can be found in post 803

Many are stable on v3.0.5 if the above versions don't work for you.

v2.6.11 build 100 2012-04-22

Asus stock-based ROMs (aroma installer): View attachment 1018730

Flash with CWM to run the installer and pick your heat!

Other ROMs: see alpha version 3.0.x above as previous generic kernels discontinued due to wifi incompatibility other than AOKP.

Installation

1. Backup stock boot.img (just do a full backup with the latest CWM)

See http://xdaforums.com/showthread.php?t=1533697

2. Flash the proper zip with CWM

--------------------------------------------------------------------------------------------------------------------------------------

If you want to set your modes and play with the scripts manually as before see this post:

http://xdaforums.com/showpost.php?p=24565491&postcount=278)

Don't set your core_cap_level higher than 1400mV as it is the highest core voltage available.

system_mode numbers (3=1.6GHz, 4=1.7GHz, 5=1.8GHz)

--------------------------------------------------------------------------------------------------------------------------------------

Going back to stock:

If you want to revert to stock boot image including stock kernel from your backup

Use your CWM backup. You can do a selective restore and just restore your boot.img

If you want to revert back to your Asus scaling scripts

Flash the stock scaling script: View attachment 1018729

--------------------------------------------------------------------------------------------------------------------------------------

Github rep: https://github.com/motley-git/TF201-Kernel

--------------------------------------------------------------------------------------------------------------------------------------

Past versions

v2.5.8 build 71 (GPU Love) 2012-04-14

CWM flashable zip: v2.5.8

Aroma installer with heat scripts: View attachment 1006440

v2.4 build 34 (Neon glitter) 2012-04-06

CWM flashable zip: View attachment 986645

v2.3 build 25 (Need for speed)

CWM flashable zip: View attachment 978413

v2.2 build 23 (No fools, more Asus Tweaks)

CWM flashable zip: View attachment 976821

Thanks to:

Asus for the awesome machine and kernel source

viperboy, jermaine151, MasterZen88, di11igaf, Diamondback and shaky156 for sharing their knowledge and tools

raman84 (RaYmAn) and others for the blob tools that work on transformer

Turge - awesome Aroma installer base creation for us!

amarullz - Aroma Installer

Doktaphex - touch recovery thread used by Turge for the touchscreen components.

AnyKernel - Koush and TeamDRH (and Jermaine for bringing it to the Prime)

All of those that have helped with testing! Special thanks to CekMTL for his troubleshooting skills and Deathmo for really going above and beyond to help out.

Sample overclock init.d script example (needed for AOKP or generic roms). AOKP uses /system/etc/init.d/cpu_overclock, so I recommend you edit that file for AOKP since it is already working.

#!/system/bin/sh
echo 4 > /sys/module/cpu_tegra/parameters/system_mode
echo 1350 > /sys/kernel/tegra_cap/core_cap_level
echo 0 > /sys/kernel/tegra_cap/core_cap_state
echo 0 > /sys/devices/platform/tegra_grhost/enable_3d_scaling
echo 10 > /sys/module/cpu_tegra3/parameters/mp_overhead
echo 9999999 > /sys/module/cpu_tegra/parameters/pwr_cap_limit_1
echo 9999999 > /sys/module/cpu_tegra/parameters/pwr_cap_limit_2
echo 9999999 > /sys/module/cpu_tegra/parameters/pwr_cap_limit_3
echo 9999999 > /sys/module/cpu_tegra/parameters/pwr_cap_limit_4
setprop power.saving.mode 1
setprop persist.tegra.NV_FPSLIMIT 0
setprop persist.sys.NV_FPSLIMIT 0
setprop persist.sys.NV_POWERMODE 0

echo 1700000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
echo N > /sys/module/cpu_tegra3/parameters/no_lp

Sample ZRAM init script (thanks show-p1984) (needs to be run as "su" using script manager):

#!/system/bin/sh
# auto zram activation init script with busybox search
# by show-p1984

echo "[90ZRAM]: Firing up /system/etc/init.d/90zram";

if [ ! -e /sys/block/zram0/disksize ] ; then
echo "[90ZRAM]: ERROR unable to find /sys/block/zram0/disksize";
echo "[90ZRAM]: Is this a ZRAM kernel?";
echo "[90ZRAM]: ZRAM NOT ACTIVATED. (404)";
else
#find busybox in /system
bblocation=$(find /system/ -name 'busybox')
if [ -n "$bblocation" ] && [ -e "$bblocation" ] ; then
echo "[90ZRAM]: busybox found in:" $bblocation;
echo "[90ZRAM]: Setting ZRAM disksize.";
echo $((100*1024*1024)) > /sys/block/zram0/disksize

echo "[90ZRAM]: Starting ZRAM...";
bblocation=${bblocation%/*}
cd $bblocation
./busybox mkswap /dev/block/zram0
./busybox swapon /dev/block/zram0

echo "[90ZRAM]: ZRAM activated.";
else
echo "[90ZRAM]: ERROR! busybox not found!";
echo "[90ZRAM]: Is busybox installed? Symlinks set?";
echo "[90ZRAM]: ZRAM NOT ACTIVATED. (404)";
fi
fi