[Epic 4G Android Development] Rodderik:
Genocide EC05 Kernel 2.0 |1.4GhzOC|UV|VoodooSound10|VoodooColor|DualBoot

(Compatible with DK28, EB13, and EC05)

I am NOT responsible for any damages, fires, race-wars, riots, temporary blindness, killer bee attacks, or anything else that could be remotely tied to downloading this file. You have been warned!

Features:

Dual Boot Support!

Overclockable (1400MHz, 1300MHz, 1200MHz, 1120MHZ)

Undervolt via sysfs

ROM MANAGER compatible!

Working redirector

Root and busybox built in

Voodoo Sound v10

Voodoo Color

Cifs and tun modules (not loaded by default)

MANY patches and tweaks

Much much more!!!

REQUIRED READING: IF YOU DO NOT READ ALL OF THIS THEN I WILL NOT PROVIDE SUPPORT FOR YOU UNTIL YOU DO!!!!

1. This kernel is capable of 1.3 & 1.4GHz however the voltage required slightly exceeds (roughly 50mV) the manufacturer's recommended voltage. Enable these AT YOUR OWN RISK.

2. Just because the kernel is capable of higher clock speeds DOES NOT mean every device will handle them.

3. DO NOT gripe or complain and trash my thread if you're device doesn't support anything past 1.2GHz. I WILL NOT increase the voltages anymore past recommended specifications.

4. DO NOT get mad or get your feelings hurt if I tell you to read the original post (OP) instead of answering your question. It means I have already answered it here OR I felt your question(s) needed to be answered in the OP and updated it accordingly.

5. DO a complete nandroid backup in ClockworkMod BEFORE flashing the kernel or messing with the undervolt settings. Setting values too low CAN cause data corruption. Simply restore your backup that I know you just made. YOU HAVE BEEN WARNED!

6. BY DEFAULT the ONLY active frequencies are 100MHz, 200MHz, 400MHz, 600MHz, 800MHz, and 1000MHz. In order for the device to use higher frequencies they must be specifically enabled. If you install the kernel you will NOT be automatically overclocked.

7. The kernel should work with any rom EXCEPT Stock EC05 that is converted to EXT4 AND is NOT deodexed. This is a known issue I am looking into.

8. PLEASE PLEASE PLEASE take time to read and search this thread before asking questions. I am not a baby sitter and I should not have to spend my time answering the same questions over and over and over again as it takes time away from me improving the kernel or working on my other projects. If you see some one ask a question that has already been answered please do not flame them. It would help me greatly if you could take 5 seconds to answer them or link them to the post with the appropriate answer.

NOTE: If you are going to overclock I personally recommend you UNINSTALL SetCPU and set your max with Voltage Control or by hand.

Installation:

Download the kernel and flash with ClockworkMod.

How to Dual Boot:

Information on dual booting can be found here: http://xdaforums.com/showthread.php?p=15378860

Easy Overclock/Undervolt Method:

Setting up your frequencies:

Required software: Voltage Control by xan http://devphone.org/files/epic4g/kernels/VoltageControl_3.0.apk

1. Backup your device in ClockworkMod and flash the kernel. If you get messed up or confused just reboot your device to undo the changes.

2. After flashing the kernel, uninstall SetCPU and install Voltage Control (VC).

3. Open VC and hit 'States' at the bottom to open the States drawer.

4. Enable your desired frequencies and hit the menu button and 'Apply for now' (DO NOT 'Save as boot settings')

5. Hit 'States' to retract the States drawer.

6. Leave the Scheduler as 'cfq' and change Limit clock to your desired max frequency.

7. Hit the menu button and 'Apply for now' (DO NOT 'Save as boot settings' unless you are 110% sure the settings are stable and you have adequately tested)

Setting up your personal undervolt settings: (Caution: When figuring out your maximum undervolt settings there is a good chance you will get some data corruption so make sure your backup in ClockworkMod is up to date)

1. Open VC and select the desired frequency you wish to undervolt.

2. The green slider goes in increments of -25mV so select that first and take note of the frequency and value. (It is important when testing that you reduce the voltage ONE step at a time)

3. Hit the menu button and 'Apply for now'

4. Test the device's stability THOROUGHLY before you move the slider down any further. See the FAQ below for tips on testing stability.

5. If you feel it is stable then repeat this process and move the slider down one step, write it down, and THOROUGHLY test.

6. When your device freezes or starts acting weird then you know that value is too much and you should use your previously stable value.

Repeat this process for each of the other frequencies you wish to undervolt. When you feel you have the stable values that you are comfortable with, open VC and apply your stable values and THOROUGHLY test your device again. After you do all of this, make sure you are 110% certain of the stability before you 'Save as boot settings' and remember you may need to restore your ClockworkMod backup before setting up your final values to ensure no data corruption.

Advanced Overclock/Undervolt Method:

Required software: Working 'adb shell' or terminal emulator

There is NO hand holding here. Make sure you read the Easy Method to familiarize yourself with the process! If you don't know what you are doing then DO NOT attempt this method. If you get messed up or confused just reboot your device to undo the changes.

Enable active states: echo "0 0 1 1 1 1 1 1 1 1" > /sys/devices/system/cpu/cpu0/cpufreq/states_enabled_table

Accepted values are 0 and 1. All ten values must be set and this example enables 1200000 to 100000.

Set maximum frequency: echo "1200000" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq

Accepted values are 1400000, 1300000, 1200000, 1120000, 1000000, 800000, 600000, 400000, 200000, and 100000.

Set minimum frequency: echo "200000" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq

Accepted values are 1400000, 1300000, 1200000, 1120000, 1000000, 800000, 600000, 400000, 200000, and 100000.

Set undervolt values: echo "0 0 0 0 25 50 0 0 0 0" > /sys/devices/system/cpu/cpu0/cpufreq/UV_mV_table

Values are in millivolts. Accepted values are 25, 50, 75, 100, 125, 150, 175, 200. DO NOT USE NEGATIVE NUMBERS. All ten values must be set.

This example applies a -25mV at 1000000 and -50mV undervolt at 800000.

To set your values on boot once you find what is stable creat a file name S_volt_scheduler with the following contents and change the values accordingly:

#!/system/bin/sh
#set UV
echo "0 0 0 0 25 50 0 0 0 0 " > /sys/devices/system/cpu/cpu0/cpufreq/UV_mV_table
echo 1200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
#select enabled states
echo "0 0 1 1 1 1 1 1 1 1 " > /sys/devices/system/cpu/cpu0/cpufreq/states_enabled_table
#set scheduler for stl, bml and mmc
for i in `ls /sys/block/stl*` /sys/block/bml* /sys/block/mmcblk*
do
echo "cfq" > $i/queue/scheduler
done

Put the file in /etc/init.d/ to apply the settings when the device boots.

FAQ (Frequently Asked Questions):

Q. Why isn't my device stable at higher clock speeds?

A. Many processors are cut at a time from one big wafer of silicon and other materials by the manufacturer. No two processors are exactly the same. From a cost stand point these chips are designed to yield a certain percentage of working chips at given specifications. These chips are made to withstand specific currents and voltages. When we exceed the currents and voltages the chips are designed to handle some will fail.

Q. What else can I try if I can't run the higher frequencies?

A. There is not a whole lot you can do. Some things I would suggest is make sure SetCPU is uninstalled. It has been reported SetCPU can cause some stability issues. Another option is to try different roms. Other than that there isn't much you can do. Sorry.

Q. Do you plan on pushing past 1.4GHz?

A. No. I do not plan to push any higher than 1.4GHz. Why? I am not going to push the higher voltages that would be required to go any higher. Please don't bother asking me to.

Q. What are some good ways to test stability while I am figuring out what undervolts my device can handle?

A. The best way to test stability is going to be setting your max frequency to the frequency you are testing and run benchmark programs like SmartBench that test multiple areas of your device. I recommend spending atleast 5-10 minutes running benchmarks and doing other tasks before you decide a given undervolt is stable.

Q. Help I was messing with the undervolts and now I get force closes (FC). What can I do?

A. This is why you made a backup in ClockworkMod. Setting voltage too low can corrupt your data and cause programs to FC. Typically you can reinstall the program or clear the applications data to fix it. As a last resort (and recommended to do anyway after you find your stable values) is to restore your backup from ClockworkMod.

Q. Why can't I use SetCPU?

A. You can use SetCPU, how ever I do not recommend it as it can cause conflicts. I am not going to support using it but if you get it working for you then by all means. I have no problems with the program or it's author and I think it is a great program but it just isn't needed and can make things tricky to get working correctly.

Q. How can I tell what frequencies I will benefit most undervolting or if they are even working?

A. There are two ways. The easy way is to install CPU Spy http://xdaforums.com/showthread.php?t=1011497. The advanced way is to 'cat /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state'

Q. What are the default voltages for the avialable frequencies?

A. 1400000 @ 1375 mV WARNING: above recommended voltage

1300000 @ 1325 mV WARNING: above recommended voltage

1200000 @ 1300 mV

1120000 @ 1300 mV

1000000 @ 1275 mV

800000 @ 1200 mV

600000 @ 1175 mV

400000 @ 1050 mV

200000 @ 950 mV

100000 @ 950 mV

Q. I have enabled 100MHz but I can not scale down to 100MHz. Why?

A. By default the kernel sets 200MHz minimum. In order to scale down to 100MHz you can flash this script to set 100MHz on boot http://devphone.org/files/epic4g/kernels/Genocide_set_min_100MHz.zip or add this line to /system/etc/init.d/S_volt_scheduler:

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

Q. How do I change the governor with terminal emulator or adb shell?

A. See the answer here: http://xdaforums.com/showpost.php?p=13118624&postcount=1705

Q. This kernel has Voodoo Sound but I don't hear a difference. What gives?

A. There are indeed changes but to look at the settings and adjust the volume, download Voodoo Control App from the Market. I highly encourage people to donate to supercurio as he has done some awesome modification and more of his mods will find their way into this kernel soon!

Q. What is this flashing android on top of my boot animation now? How do I fix it?

A. On a stock rom, enabling boot animation support in the kernel plays the default boot animation (flashing android logo) over top of Samsung's own boot animation. Check out this thread to get rid of the flashing android or clear Samsung's animation for your custom animations.

Q. How do I enable CIFS support?

A. From 'adb shell' or a terminal emulator type 'insmod /lib/modules/cifs.ko'

Q. How do I enable TUN support?

A. From 'adb shell' or a terminal emulator type 'insmod /lib/modules/tun.ko'

Q. How come there is no frame rate increase?

A. The current method to increase the frame rate is by bumping up the LCD refresh rate. While I am told it should not break the LCD I decided it would be best to not mess with this setting for now until we find some proper documentation on the LCD in our devices. The documentation is kept under tight wraps and requires a signed non disclosure agreement for access.

Q. How do I set the timer delay for mkasick's keyboard patch?

A. Please refer to his post on more information about the keyboard patch http://xdaforums.com/showthread.php?t=975611

A2. theimpaler747 has suggested a lower default value for the keyboard patch and has provided flashable scripts to set it lower. Please refer to his post here: http://xdaforums.com/showthread.php?t=1025533 (If reports are good I will bump this down to the default value on my next release)

Q. I don't want to overclock or undervolt. Can I still use the kernel and will it automatically overclock/undervolt my device?

A. Yes you can absolutely still use the kernel. The default frequencies are 200MHz - 1000MHz at stock voltages. This will not change until you change it yourself.

Q. I flashed a different kernel and I lost root. What gives?

A. Root is now included in the kernel. If you flash a kernel that does not have root built-in then you will need to re-root.

Q. I didn't read or my settings became unstable after setting them on boot. Now my phone freezes when it boots up. What can I do?

A. You have two options. Option 1 is to restore your ClockworkMod backup that I KNOW you did before you started. Or option 2 flash this file with ClockworkMod to erase the boot settings: http://devphone.org/files/epic4g/kernels/Genocide_undervolt_recovery.zip

Q. Where are your sources?

A. Kernel sources can be found here: https://github.com/Rodderik/Genocide-Kernel

Q. Where can I find the link to download the kernel already?

A. After you have read everything, check the next post for links and changelogs. :)

If you like what I've done please consider a donation. I'm usually not one to ask for donations but it's pretty difficult finding a job for me right now so I'm doing what I can.

Please share your undervolt settings so I can compile and recommend a 'safe' starting point to help future flashers. Thanks.

Many thanks to DRockstar, nubecoder, gzub, supercurio, tanimn, mkasick, DevinXtreme, thomasskull666, nullghost, existz, rasdeep, and any other devs that I have forgotten. I apologize in advance. If you feel you deserve credit for something then please PM me and we will get the situation solved quickly.