[Nexus 5 Android Development] big_bum:
Reserved

Lollipop Kernel

Features:

backports from upstream for most of main components

exfat for mounting exfat formatted sticks via USB OTG

f2fs for mounting f2fs formatted sticks via USB OTG or if you have an f2fs formatted internal memory (use the same image for all combinations of f2fs formatted partitions).

for mounting OTG sticks formatted in NTFS/exFAT/f2fs/other filesystem I recommend this app. FAT formatted sticks will automount if you use CM (might work on AOSP too, I haven't tested it)

I also include cherry-picks from other N5 kernels (especially from Chaos/Hybrid - [MENTION=3795148]neobuddy89[/MENTION], Uber - [MENTION=5105835]Cl3Kener[/MENTION] and Code_Blue - [MENTION=3873953]eng.stk[/MENTION])

min default CPU freq: 300MHz

max default CPU freq: 2.26GHz

default CPU governor: impulse

available CPU governors: ondemand, bacon, performance, powersave, interactive

hotplug: msm_hotplug developed by myfluxi

cpu-boost driver from CM.

I/O readahead size: 512KB

I/O default schedueler: fiops

other available I/O scheduelers: noop, deadline, cfq, BFQ, tripndroid

GPU min/max 20/450MHz

GPU default governor: simple

other GPU available governors: ondemand, performance

color profiles. Based on franco, works with FKU or Nexus Display Control app.

savoca's KCAL

franco sound

CM sound patches

dynamic fsync

various memory improvements. This doesn't mean less consumed RAM, also free RAM is wasted RAM for linux. Also, read this: http://www.linuxatemyram.com/

msm limiter (limits screenoff freq to 1.2GHz)

KSM: Kernel Samepage Merging.

the famous I2C @ 19.2MHz, plus some other chips dropped at 19.2MHz

HTCP as default TCP congestion control. (I personally don't see any differences between different TCP Congestion Control algorithms)

other TCPCC available: reno, bic, cubic (I used this in DD-WRT), westwood (they say it's good for wireless/3G/4G devices), vegas, veno

compilled with latest Linaro GCC (4.9.3), and with SaberMod

removed useless debug

I probably forgot something

Q&A

- Is it stable/bug free?

- As stable/bug free as franco's kernel is.

- Does it score better in benchmarks?

- I think so. At least Antutu says so, in the integer and float benchmarks. Quadrant also says this. It's not a huge difference, and you can't see it with the naked eye. But I don't trust in benchmarks that much.

- How's the battery life?

- (From Reddit) "The same battery life you get with Franco, if not a little better. Optimization means better performance, better performance means less time executing the same code, less time online means more deep sleep. Idk how much better it is, but it's not worse, anyway."

How can I configure it?

1. Universal Kernel Manager (Synapse + Script). Flash kernel, flash the zip from the link, install Synapse. Read here for more info on frequency getting stuck at 1.2GHz. TL;DR: go and setup via Synapse how you want, then go to CPU Tab, set minimum freq to 300Mhz, apply, enjoy.

2. FKU

3. Kernel Tweaker

4. Trickster Mod, via scripts in init.d, etc.

Recommended & tested ROMs:

Optipop

SlimAOSP

Terminus

Blisspop

This doesn't mean that ROMs are not supported, jus that I haven't tested them. The ROMs from this list are working as they should with my kernel.

Rollback:

Rename /system/lib/hw/power.msm8974.so.bak to /system/lib/hw/power.msm8974.so

Rename /system/bin/thermal-engine-hh-bak to /system/bin/thermal-engine-hh

Reboot to the bootloader and flash stock Kernel by downloading the Nexus images and then fastboot flash boot boot.img

Start the phone

Reboot to bootloader again and flash what kernel you want, and then start the phone.

Special thanks for testing and help:

[MENTION=5213672]_MirageX_[/MENTION] [MENTION=5015908]dox81[/MENTION] [mention]@pianistaPL[/mention] [mention]@shadowdevil[/mention]

Special thanks for donations:

[mention]@Paddybecks87[/mention] and the guy from reddit (notable-_-shibboleth) who also uses my build of pf-kernel for Ubuntu. (If you see this and you have a XDA username, give me a PM to put you in the list here)

Sources:

Kernel: ttps://github.com/StefanescuCristian/hammerhead

Ramdisk: https://github.com/StefanescuCristian/ramdisk_hammerhead

Toolchains:

Linaro: https://github.com/Christopher83/arm-cortex_a15-linux-gnueabihf-linaro_4.9.git

SaberMod: https://github.com/AuxXxilium/sm-arm-cortex_a15-eabi-4.9

BbKT (Big bum Kernel Tweaker): https://github.com/StefanescuCristian/android-kernel-tweaker

Old kernel info:

I said last night that this kernel works on CM.

First of all, CM is CAF. Our kernel is not CAF. This means that some libraries are not compatible with our kernel and need to be changed to make it compatible. This is exactly what Calkulin made. He made a zip that contain non-CAF libs to boot stock AOSP kernels.

I took that zip, modified it and put our kernel in it. This is more like a hack, it's not the real CAF kernel!

Also, in the OP I said that this isn't CAF-compatible by default. This is what I was talking about. With a little hack, it can run on CM.

This has nothing to do with the kernel. It's all in the libs. I only made a simple/easy/convenient way to flash CM and this kernel together.

How to:

Scenario 1: You don't have CM installed, you want to install it.

1. Download CM(tested with 07.07 nightly) or CM-based ROM zip. (In theory it should work)

2. Flash CM/CM-based ROM, gapps. Read the ROM OP for more details.

3. Flash the latest kernel/zip from CM folder.

When updating the ROM, you must reflash the kernel zip file from CM folder.

When updating the kernel, you can flash the normal ext4 version (zip or img from AOSP folder), or the hacked CM one (the zip from CM folder).

Scenario 2: You have CM and you want to try this kernel.

1. Download and flash the kernel/zip from CM folder.

When updating the ROM, you must reflash the kernel zip file from CM folder.

When updating the kernel, you can flash the normal ext4 version (zip or img from AOSP folder), or the hacked CM one (the zip from CM folder).

QA:

-f2fs/f2fs-all version for CM?

-No.

First of all, CM formats partitions to ext4 when flashing. You must edit your updater-script for it to work. If you know this, then you know what I'm talking about in the next 2 paragraphs.

Second, you can make a flashable zip by yourself.

Third, it's easier to download the zip from the thread and flash it, then flash a f2fs/f2fs-all kernel. (AOSP folder, zip or img)

You just have to be carefull that if you're on f2fs-all, you must edit META-INF/com/google/android/updater-script from Calkulin's zip file: replace ext4 with f2fs. Repack, flash your zip, flash f2fs/f2fs-all kernel, enjoy.

-I have done what you said. I now run CM on f2fs/f2fs-all. What do I do in case of an update?

-Well, it depends.

For ROM update:

1. Flash CM ROM.

2. Flash the zip you made and flashed when you asked the previous question (third point)

3. Flash f2fs/f2fs-all kernel

For kernel update:

1. Flash the appropiate f2fs/f2fs-all kernel. (AOSP folder, zip or img)

Credits: Calkulin for his thread, zip, files and discovery.