[KERNEL][NOKIAX][3.4.106] NULL for all 4.1.2 based roms [20150203]

mdfzhi

Senior Member
Jun 15, 2011
4,147
3,853
0
Code:
#include <std_disclaimer.h>
/*
 * Your warranty is now void.
 *
 * I am not responsible for bricked devices, dead SD cards,
 * thermonuclear war, or you getting fired because the alarm app failed. Please
 * do some research if you have any concerns about features included in this KERNEL
 * before flashing it! YOU are choosing to make these modifications, and if
 * you point the finger at me for messing up your device, I will laugh at you.
 */
Introduction/About

This kernel is born because of me not satisfy with stock kernel, horrible heat management, some things doesn't works like firewall, vpn is buggy etc... But not meant to be stable as the stock kernel, just to hack things up :)
Should boot with all roms based on android 4.1.2, be it stock rom, stock based custom rom, lewa, baidu, aosp, cm10 etc as long as its 4.1.2 based roms.


Features:

Based on dhacker29's nokia x kernel, branch jellybean. He already patched it from original 3.4.0 to upstream 3.4.86 and many other fix/patch.
Things that i've added:
  • Further patched to upstream. Currently on 3.4.106.
  • Applied fix to compile with linaro toolchain, and i've compiled with custom linaro 4.9.3 2014.11 for generic arm processor by christopher83.
  • Modified cpu table, added more cpu frequencies; 122mhz, 700mhz, 806mhz and 902mhz.
  • Modified ion reserve value in boardconfig for higher userspace ram, now got 410mb same as stock 1.1.2.2 kernel.
  • Compiled with arm cortex-a5, neon, graphite and link time optimization flags.
  • Compiled with cpu supported unalign acccess. Supposedly to be faster than software based unalign access.
  • All cpu frequencies undervolted 50mv.
  • Disabled mpdecision service by default. mpdecision is qualcomm's userspace proprietary cpu hotplug control. Its closed source so no easy way to tweak it as u like or prefer, what u see is what u get.
  • Added Hotplug cpu governor for replacing the disabled mpdecision.
  • Added exFAT (Extended File Allocation Table) driver. exFAT is a Microsoft file system optimized for flash drives.
  • Added F2FS (Flash-Friendly File System) driver. F2FS is a flash file system initially developed by Samsung Electronics for the Linux operating system kernel.
  • Added and made fiops as default booting disk io scheduler. Use Trickster MOD to change it and change its parameter yourself.
  • Using slub memory allocator.
  • Optimized AES and SHA1 routines for ARM cpu architecture.
  • Optimized ARM RWSEM (read/write semaphore) algorithm.
  • Added Force Fastcharge. This feature allows force AC charging for any charger that is detected as USB (eg. PC USB ports, USB Car Chargers) and pull the full current the charger can support, in such a way as to speed up the time required for a complete battery recharge. By enabling this feature, the USB/ADB data transfers will be disabled (security limitation to protect your data). Default is disabled. Use Trickster MOD to enable/disable it.
  • Added Dynamic FSync. This feature has been developed by Faux123 and allows to dynamically manage the synchronous writes performed on file system (FSync). It uses asynchronous writes when the screen is on, instead of synchronous writes, to have better performance and a slightly lower battery drain, while when the screen is off the synchronous writes are re-enabled to flush all the outstanding writes and prevent possible data loss. Default is enabled. Use Trickster MOD to enable/disable it.
  • Added Dynamic dirty page writebacks. This feature has been developed by christopher83 and allows to dynamically manage the dirty page writebacks with two different intervals, one when the screen is on and another when the screen is off. It is based on a commit of Francisco Franco, but instead of using hard coded values and of disabling at all the dirty page writebacks while the screen is on (possibility of data loss), I preferred to use a customizable higher dirty page writebacks interval (15 seconds) than the default one (5 seconds) while the screen is on and a customizable default interval (5 seconds) when the screen is off. By using a higher interval we have better performance and less battery consumption, with a very low risk of data loss. Default is enabled.
  • Added more gpu steps and overclock it. Looking in specsheet, our Adreno203 support upto 400mhz but for cautious reason i've only compiled with max 350mhz. Use Trickster MOD to lower/raise it.
  • Enabled all tcp congestion control and changed default to westwood. Use Trickster MOD to change it yourself.
  • Zram and zsmalloc backported from kernel 3.10.
  • Using google snappy compression for zram.
  • Updated lowmemorykiller driver taken from Sony Xperia Z kernel.
  • Sysfs interface to control android logger, ie logcat and dmesg. Default is disable, to enable just do
    Code:
    echo "1" >> /sys/kernel/logger_mode/logger_mode
  • Using AnyKernel 2.0 based installer/flasher. Original AnyKernel is developed by Koushik Dutta aka Koush. Its a template for update.zip that can apply any kernel to any ROM, regardless of ramdisk. Basically what it does is to extract kernel directly from device, unpack it, repack ramdisk with supplied kernel in the installer and flash in onto device. AnyKernel 2.0 pushes the format even further by allowing kernel developers to modify the underlying ramdisk for kernel feature support easily using a number of included command methods along with properties and variables to customize the installation experience to their kernel. AnyKernel 2.0 is developed by osm0sis.
  • Added init.d support.
  • Probably many, many other things i forgot...


Changelog:

Code:
20150203
- Updated to upstream linux 3.4.106.
Code:
20150121
- Modified cpu table, added more cpu frequencies; 122mhz, 700mhz, 806mhz and 902mhz.
- Changed default minimum cpu frequency on boot to 122mhz.
- Changed default gpu frequency on boot to 320.
- Disable multicore power savings by default.
- Added sysfs interface to control android logger.
Code:
20150111
- Added and compiled using graphite optimization flag.
- Modified hardcoded value for all cpu frequencies, undervolted 50mv.
- Added motorola memutils for memcopy and memmove.
- Enabled arch random.
- Added and enabled lz4 compression support.
- Added and enabled google snappy compression support.
- Using google snappy as zram compressor.
- Some zram enhancement/fix.
- Some enhancement/fix for ksm.
- Enabled ksm.
- Some enhancement/fix for oom.
- Some enhancement/fix for net tcp.
- Changed tcp congestion control to westwood.
- Added freezable blocker call for some process.
- Disabled useless tuner.
- Disabled tracing.
- Disabled cleancache.
- Disabled zcache.
Code:
20141212
- Revert dynamic memory allocation of ION heap through CMA (Contiguous Memory Allocator) and using back old reserve value method.
- Changed ram reserved value for kgsl and audio. Hopefully no more out of memory kgsl error in logcat.
- Added F2FS driver.
Code:
20141210
- Using dynamic memory allocation of ION heap through CMA (Contiguous Memory Allocator) for more free ram. Now got 420mb free ram.
- Raised ram reserved value for MSM_PMEM_MDP_SIZE. Hopefully no more out of memory kgsl error in logcat.
- Disabled KSM as it might cause problem with CMA.
- Added Hotplug cpu governor and made it as default booting cpu governor.
- Removed msm_mpdecision.
- Added exFAT driver.
Code:
20141209
- Updated to upstream linux 3.4.105.
- Updated crosscompile toolchain to custom linaro 4.9.3 2014.11 for generic arm processor.
- Changed some memory values.
Code:
20141029
- Updated to upstream linux 3.4.104.
- Updated crosscompile toolchain to custom linaro 4.9.2 2014.10 for generic arm processor.
Code:
20140731
- Updated to upstream linux 3.4.100.
- Updated crosscompile toolchain to custom linaro 4.9.1 2014.07 for generic arm processor.
- Some changes in memory management.
Code:
20140716
- Updated to upstream linux 3.4.98.
Code:
20140701
- Updated to upstream linux 3.4.95.
- Removed uksm and use default ksm instead.
Code:
20140617
- Updated to upstream linux 3.4.93.
- Updated crosscompile toolchain to custom linaro 4.9.1 2014.06 for generic arm processor.
- Updated cleancache driver.
- Added 350mhz max gpu overclock.
- Made 300mhz as default booting gpu frequency.
- Removed Dynamic timer slack controller, it doesn't work properly.
Code:
20140609
- Updated to upstream linux 3.4.92.
- Added link time optimization flags.
- Modified cpu frequency table to define static hardcoded voltage values.
- Added true cd emulation capability.
- Increased zram disk size to 125mb.
Code:
20140531
- Modified ion reserve in boardconfig to give more ram to userspace.
- Backported zram from kernel 3.10.
- Backported zsmalloc from kernel 3.10.
- Disabled deprecated qcache and enabled newer zcache.
- Added uksm 0.1.2.2.
- Updated lowmemorykiller driver taken from Sony Xperia Z kernel.
- Updated crosscompile toolchain to custom linaro 4.9.1 2014.05 for generic arm processor.
- Added more compile flags.
- Updated anykernel 2 installer to fix flashing on twrp and twrp based recoveries.
- Added script to enable 75mb of zram and making uksm dynamic based on screen on/off.
Code:
20140521
- Updated to upstream linux 3.4.91.
- Disabled some useless modules and making some other as built-in.
- Featuring AnyKernel 2.0 based installer/flasher. Now kernel can be flashed onto any 4.1.2 based roms.
- Updated wifi binary modules taken from latest dhacker29's cm10.
Code:
20140517
- Temporary fixed for wifi by force allow loading of precompiled wifi modules taken from dhacker29's cm10 rom.
- Gave a name to the kernel.
- Updated to upstream linux 3.4.90
- Added more gpu steps and overclocked it.
- Added Force Fastcharge.
- Added Dynamic FSync.
- Added Dynamic dirty page writebacks.
- Added more neon optimizations.
- Added fiops disk io scheduler.
- Enabled all tcp congestion control and changed default from cubic to veno.
- Added Dynamic timer slack controller.
- Optimized AES and SHA1 routines for ARM cpu architecture.
- Optimized ARM RWSEM (read/write semaphore) algorithm.
- Fixed init.d permission.
- Updated ramdisk. All stock rom init script moved to ramdisk.
- Compressed kernel with xz compression. Smaller kernel and probably faster boot time.
Code:
20140510
- First public release.


What Works:

Everything else not mention below in Known issue and problem section.
Do tell me if u found bugs/things doesn't work so i can list and try to fix them.


Known Issues & Problems:

Currently, none that i know of.


Todo:

  • Replace qualcomm's thermald, proprietary userspace thermal management with other better opensource alternative like msm_thermal or intellithermal.
  • Overclock cpu.


Download:


Installation Instructions:

  1. You need to already have custom recovery installed.
  2. Backup your whole rom first for cautious reason.
  3. Flash the zip.


Source:

As kernel is GPL licensed, i'm obliged to provide source for my modification but sorry, didn't have github account. Really hated git, hard to use. So i've uploaded source as patch tarball, its to be patch onto vanilla linux kernel 3.4.0 from kernel.org.


Thanks To/Credits:

  • God
  • Linus Torvalds and whole linux kernel team and contributors.
  • Google
  • Nokia
  • dhacker29
  • christopher83
  • show-p1984
  • osm0sis
  • and many, many other kernel devs whose their source i've cherry picked here and there...


XDA:DevDB Information
NULL, Kernel for the Nokia X

Contributors
mdfzhi
Kernel Special Features: force fastcharge, dynamic fsync, dynamic dirty page writebacks, overclock gpu, custom cpu table and cpu frequencies, preundervolted cpu voltage

Version Information
Status: Stable
Current Stable Version: 20150203
Stable Release Date: 2015-02-03
Current Beta Version: 20140531
Beta Release Date: 2014-05-31

Created 2014-05-10
Last Updated 2015-02-03
 
Last edited:

mdfzhi

Senior Member
Jun 15, 2011
4,147
3,853
0
So what caused your kernel cant support wifi?

Sent from my Nokia_X using Tapatalk
i can't build the modules needed using compat-wireless source provided by nokia, its in dhacker29's repo too. if i'm not mistaken its compat-wireless for kernel 3.2. strange why nokia didn't use higher compat-wireless from higher kernel as those can be build against our lower kernel 3.4.
i can build modules using compat-wireless for kernel 3.8, 3.9 or even 3.12 but doesn't know correct order to insmod the modules one by one.
 

hacktheheaven

Senior Member
Jan 12, 2013
118
36
0
just now installed.... Have to check the performance and battery performance.... Will report after testing......
Thnx for custom kernel.... Waiting for this...

Sent from my Nokia_X using XDA Free mobile app
 
  • Like
Reactions: daohmara

mdfzhi

Senior Member
Jun 15, 2011
4,147
3,853
0
i've updated to 20140521.
featuring anykernel 2.0 flasher, now kernel can be flashed onto any android 4.1.2 based rom, be it stock rom, stock based custom rom, lewa, baidu, aosp, cm10 etc as long as its 4.1.2 based roms then it will boot. i've tested on stock, b-rom, lewa and baidu.
the anykernel 2.0 flasher got problem with twrp tho, so must use cwm to flash it.
 
Last edited:

AngSanley

Senior Member
Apr 21, 2012
981
1,256
133
Medan, Indonesia
i've updated to 20140521.
featuring anykernel 2.0 flasher, now kernel can be flashed onto any android 4.1.2 based rom, be it stock rom, stock based custom rom, lewa, baidu, aosp, cm10 etc as long as its 4.1.2 based roms then it will boot. i've tested on stock, b-rom, lewa and baidu.
the anykernel 2.0 flasher got problem with twrp tho, so must use cwm to flash it.
hi bro. How do u think, if we merged my kernel project with yours? :D
 

sumondhk1

Senior Member
Oct 15, 2013
1,169
257
103
Dhaka
i've updated to 20140521.
featuring anykernel 2.0 flasher, now kernel can be flashed onto any android 4.1.2 based rom, be it stock rom, stock based custom rom, lewa, baidu, aosp, cm10 etc as long as its 4.1.2 based roms then it will boot. i've tested on stock, b-rom, lewa and baidu.
the anykernel 2.0 flasher got problem with twrp tho, so must use cwm to flash it.
I'm using your kernel with Baidu48.
Can u please tell me which tool will be best for this kernel?
 

mdfzhi

Senior Member
Jun 15, 2011
4,147
3,853
0
got many other kernel manager in googleplay but i've only tested with trickster mod. u could try others but theres no guarantee that they'll work.
 

Hzu

Senior Member
Nov 13, 2010
1,682
575
0
Hello @mdfzhi, first off, thank you for this great kernel. I'm loving the kernel but anyway, I have a question. Inside Trickster MOD, I see that the Core #1 is offline all the time. Is this how it's supposed to be? Will it only use the second core of the CPU only under heavy load, is that correct? I tried using the Performance governor, but the second core is still not running. Perhaps it's controlled by the CPU itself, I don't know.


I'm still sad to see that I can't watch 720p smoothly even with this kernel. But anyhow, thank you for your great work. I'll be using this for a few days to make sure there's no stability issues.