[Captivate Android Development] Unhelpful:
WARNING

Overclocking/undervolting could cause crashes with loss of data, or even damage hardware including the CPU or GPU.

Voodoo support included since 1.5, remove all non-Voodoo lagfixes before installing.

This works for me, but you are ultimately responsible for what happens to your device and your data - have backups, preferably on an external SD that you remove for initial testing.

These are unsigned and will not flash via stock recovery. Use ROM Manager to flash, with ROM Manager you also don't need to rename them as it can select any zip file from internal storage.

Features:

Voodoo lagfix support - should work correctly flashed over other Voodoo beta4 kernels, remove non-Voodoo lagfixes before installing.

BLN support to allow use of touch-button lights to indicate pending notifications when screen is off. The lights will light for all statusbar notifications, unless disabled in the app producing the notification (not all apps will have an option to do this, I don't think any stock Samsung apps do).

Stock voltages/clocks at boot, runtime configuration of clocks and voltages via sysfs, nilfs2 and ext2/3/4 filesystem support, two-stage user init - early scripts for mounting filesystems, late ones for running services. Default I/O scheduler is BFQ, BFQ/CFQ/anticipatory all perform roughly the same in benchmarks with multiple threads competing for I/O. Typical wakeup between instant and about one second, built with the binutils 2.19.1 / gcc 4.3.4 toolchain.

User clock/voltage configuration can be read from/written to /sys/devices/system/cpu/cpu0/cpufreq/freq_volt_table. Copy this file to get the defaults, edit your copy and write back over the original to update, or save your new file in /sdcard/sd/config, /sdcard/config, or /system/etc/config to have it applied on boot. The first column is CPU clock, the second GPU clock, the third CPU voltage, the fourth internal voltage. Changing values besides CPU clock/voltage is not recommended. You must keep 100MHz as the lowest speed. Clocks are in KHz, voltages in mV. Modify at your own risk, I find that my phone runs 1.2GHz @ 1.3V just fine, but yours may vary.

Be aware that your phone might appear to run fine with overclock/undervolt at first but crash later due to some error in calculation or data transfer - i recommend a good number of runs on something like Quadrant, and at least five minutes or so of SetCPU stress test for each frequency you add or change.

User inits must be placed in /system/etc/init.d, and properly named - names starting with "E" will run before /data and /dbdata are mounted, names starting with "S" will run right before startup is completed and normal Android services start. Inits are sorted by name, so you can follow the initial E or S with a number to change the order in which they will run. Scripts need not be executable, and will be run with the shell provided in initramfs for Voodoo support (busybox ash). If either /data or /dbdata is not a mount point after E scripts are completed, /user_early_init.sh will attempt to mount an rfs filesystem there from the usual location. If you want to mount a filesystem that is some other type, you will need to do so in a user script. If you want to format /data with another filesystem, you must edit the partition table to change the partition number - I have disabled the code in /sbin/init that rewrites the partition table, but if it finds something on standard /data partition that does not look like a valid RFS filesystem, it will reformat it.

If you want to build yourself, see the toolchains thread for known-working tools. Run

make ARCH=arm i897_defconfig
make ARCH=arm menuconfig [COLOR="blue"]optional[/COLOR]
make CROSS_COMPILE=/path/to/toolchain/arm-none-eabi- zImage [COLOR="blue"]change if using a different toolchain[/COLOR]
tar c -C arch/arm/boot/zImage >captivate_zimage.tar

Flash captivate_zimage.tar as PDA in Odin - see other threads for how to use Odin and where to get it. Use menuconfig to select a different initramfs source if you wish, by default an included one at usr/initrd_files will be used.

Starting with v1.4, create a .build_config file to change any variables and run build_kernel.sh to build tar flashable with Odin or update.zip. As of v1.5.2 you can also use .build_config to inject commands and files into update.zip builds.

CREDITS

raspdeep - the original OC code

curio - Voodoo lagfix original concept and script

neldar - BLN support

atinm - BLN port for Captivate

BusyBox, buildroot, crosstool-ng, nilfs2 - see respective projects for original contributors and source

v1.7

ClockworkMod Recovery

flashable binary: mediafire mirror | github mirror

github source

BETA ClockworkMod Recovery replaces stock recovery

BETA support for backup/restore with Voodoo enabled

v1.6

BLN Support

flashable binary: View attachment 412117 | mediafire mirror | github mirror

github source

BLN support - use the touch-button lights to alert of pending notification when screen is off.

Disable check for SGH-I897 device, since this can fail on Captivate hardware if an alternate ROM is flashed.

v1.5.3

Bugfix release

flashable binary: View attachment 409719 | mediafire mirror | github mirror

github source

Revert from the config based on kepler_rev02_defconfig, suggested by the 9/6 code drop, to aries_rev02_defconfig. The config change appears to have been responsible for the power drain problems seen in v1.5.1 and v1.5.2.

v1.5.2

Bugfixes and Voodoo lagfix support

flashable binary: View attachment 408642 | View attachment 408648 | mediafire mirror | github mirror

github source

Odin-flashable tar file (inside 7z to allow upload to XDA), please use only to recover from bad flash of v1.5.1, the update.zip contains scripts that are important if you're running SRE.

Voodoo lagfix support

Restore correct stock voltage (1.275V) for 1GHz

Update sources and config from Captivate 9/6 source drop

Update modules from JH7 OTA

LZMA initramfs compression to reduce compressed kernel size / allow larger initramfs

Enhanced update.zip support allows developers to easily inject their own commands and files into update.zip on build, and allows run_programs scripts to produce screen output and can flash kernel/modem partitions directly.

v1.4.1

BUGFIX for SRE users

flashable binary: View attachment 401514 | View attachment 403731 | mediafire mirror | github mirror

github source

Bug with SRE + 1.4 causing storage to become unavailable should be fixed by this kernel, fix works on my phone but some have reported problem spontaneously ifxing itself.

v1.4

Load OC/UV config from file, system early init (for developers).

downloads removed due to bugs

github source

Built with gcc-4.4.3

build_kernel.sh reads variables from .build_config, or from config file specified by $BUILD_CONFIG, so you can keep the script file clean.

Early system init - E* scripts in /sbin/init.d run before user early init, for developers to include startup scripts.

System init loading of OC/UV table - searches for config/freq_volt_table on external SD, then internal SD, then in /system/etc.

ADB checks uses the first shell found from the list bash, ash, /system/xbin/sh, /system/bin/sh, sh.

Correctly set cpufreq policy on table change - should fix resets of maximum clock to 1GHz after new tables are loaded.

v1.3.1

OC/UV configuration

flashable binary: View attachment 399700 | mediafire mirror | github mirror

github source

Stock clocks/voltages at boot, user can add new clocks and change voltages at runtime - see above for details.

Modify stock init to avoid rewriting partition table at boot - change the partition table for internal SD, resize partitions or remake /data with a different partition number so it can be safely formatted with another filesystem.

v1.2

Bugfix / update.zip / dev features

flashable binary: View attachment 389189 | mediafire mirror | github mirror

github source

Fix scaling bug, performance level was set past end of table on sleep

Scaling enhancement, selectable clock source for GPU

GPU clocked at 222MHz for all speeds except 100MHz, where it matches CPU clock

Basic build_kernel.sh script, edit to change configuration - builds unsigned update.zip with default kernel config by default

Add interactive CPU governor - enabled in build but conservative is still configured as the default

v1.1

Bugfix release

flashable binary: mediafire mirror | github mirror

github source

Rework of user init, resolves lost-settings-on-boot issue for me.
​

v1.0

Initial release for Captivate I897

flashable binary: mediafire mirror | github mirror

github source

nilfs2, ext2/3/4 filesystems

separate early and late user init

600MHz and 1.2GHz speeds, use SetCPU to enable 1.2GHz

fast scaling from low speed, skipping from 100MHz to 800MHz​

Other Downloads

User Init Scripts

mediafire, github - enable 1.2GHz overclock on startup

mediafire, github - start Mobile AP background service