Android OS Forum banner

[kernel][v2.0][Apr 28][GPL] PopcornKernel!

15K views 61 replies 16 participants last post by  jxxhwy 
#1 · (Edited by Moderator)
W00T first post in the Development Section!

First: Me and jdkoreclipse are blindly developing for this. That means neither of us have a Spectrum. Therefore, updates will come out slower (since they have to be sent to testers), and what we do with the kernel might be a little more conservative than what we might normally do with it. If you really want to see more development, either donate to us so we can get the phone, or if you're really nice, you can send a phone to either one of us.

EDIT: I (SONICXML) NOW HAVE A SPECTRUM THANKS TO SHOCKAHOLIC! YOU GUYS CAN STILL GET JDKORECLIPSE ONE IF YOU'RE FEELING NICE :)

Kernel Philosophy: [background=rgb(245, 245, 245)]The philosophy of this kernel is to combine a stable, snappy (real-use wise, not benchmarks) kernel with great battery life. We (me and jdkoreclipse) feel we have achieved the best balance of these in PopcornKernel.[/background]

We are not responsible for anything that happens to your device.
And, unfortunately, your device will not start making popcorn now - though it may be as buttery smooth as popcorn :).

Now onto the kernel!

Download: goo.gl/PBkN8

Changelog (look in the 3rd post for the full changelog):

v2.0
  • Reverted FAIR_SLEEPERS, as this may improve UI responsiveness
  • Use SLQB memory allocator
  • Use Fast_NO_Hz
  • Better memory management for lowmemorykiller
  • Added our special Aggressive and Gallimaufry governors from our GNex kernel
    • Aggressive: This is a modified conservative governor, tweaked for speed while still having excellent battery life. It should also have better screen-on battery life
    • Gallimaufry: This is a modified ondemand governor, tweaked for speed while still having excellent battery life. It features a two-phase algorithm which should improve battery life
  • Added CPU overclock to 1.836GHz
  • Added GPU overclock - 2d module to 266MHz, 3d to 300Mhz
  • Added L2 Cache overclock
  • Added Bus overclock
  • Increased the rate of usb charging from miscellaneous cables to 650mA from 450mA. I don't want to increase it any higher as faster charging gives a lower battery life, and some GNex users using a patch that allowed for higher rates of usb charging experienced issues with their usb ports (granted, that was pulling 1A)
  • Added VMAP_AREA_CACHE (see here for explanation: http://git.kernel.or...61cb6cbf179b10a )
  • Added some codeaurora patches for better and more stable hotplugging
  • Added SVS (voltage control interface). This allows you to undervolt each frequency slot of the cpu. To use this, you have to be using an app that can properly read and control the voltages. Chad0989's IncrediControl (https://play.google....WRpY29udHJvbCJd ) is the only one I've found so far that can do this properly.
  • Some other miscellaneous speed tweaks
About our naming scheme:
0.x releases will be our initial releases, as we make sure that everything is working properly
x.0 releases will be major increments
x.x releases will be minor increments

DIRECTIONS:
Note: This has only been tested on v4 based ROM's. It will probably work on v5, but it has not been confirmed working yet.
1. Download kernel zip and place on sdcard
2. Boot into recovery by either using a software button (power menu (if on broken out), quick boot, rom manager, rom toolbox, etc.) or adb (adb reboot recovery). Only use the physical buttons if you're gonna flash Neph's bootloopfix.zip
3. Go to Install zip from sdcard > Choose zip > navigate to zip > press ok
4. There is no need to wipe cache or dalvik as the updater script does it automatically
5. Reboot your phone
6. Your first boot might take a little longer than usual since the phone is rebuilding its caches - so don't freak out immediately

[background=rgb(245, 245, 245)]ON REPORTING BUGS:[/background]
[background=rgb(245, 245, 245)]Please provide us with:[/background]
  • a detailed description of the bug
  • when the bug occured
  • a way of reproducing it, if possible
  • Your ROM and ROM version
  • Kernel version, frequencies and governor
  • dmesg or /proc/last_kmsg, whichever is applicable
  • To do #6,
    Code:
    <br />
    1. Start terminal emulator session<br />
    2. > su<br />
    3. # dmesg > /sdcard/dmesg.txt<br />
    For reboot/freeze problem, replace Step 3 above with<br />
    3. # cat /proc/last_kmsg > /sdcard/last_kmsg.txt<br />
    4. Paste contents of resultant txt files to pastebin.com<br />
    5. Post pastebin URLs here in this thread for diagnosis<br />
[background=rgb(245, 245, 245)]NOTE: I will not reply to bugs if they do not include the above, you must also be on a stable version of your rom (no alphas or betas) and you must not have any SetCPU profiles active. [/background]

As always, our kernels are GPL compliant, and you can find the source here: https://github.com/sonicxml/Spectrum

We put a lot of time and effort into this, so we encourage you to leave a comment, hit the thanks button, and/or donate:

Sonicxml: Donate

jdkoreclipse: Donate


Thanks to Neph and SupraMan401 for testing this for us!
Thanks to these devs who we have used code from:
Chad0989
Faux123
mtmichaelson
 
See less See more
#3 · (Edited by Moderator)
CHANGELOG:

v2.0
  • Reverted FAIR_SLEEPERS, as this may improve UI responsiveness
  • Use SLQB memory allocator
  • Use Fast_NO_Hz
  • Better memory management for lowmemorykiller
  • Added our special Aggressive and Gallimaufry governors from our GNex kernel
    • Aggressive: This is a modified conservative governor, tweaked for speed while still having excellent battery life. It should also have better screen-on battery life
    • Gallimaufry: This is a modified ondemand governor, tweaked for speed while still having excellent battery life. It features a two-phase algorithm which should improve battery life
  • Added CPU overclock to 1.836GHz
  • Added GPU overclock - 2d module to 266MHz, 3d to 300Mhz
  • Added L2 Cache overclock
  • Added Bus overclock
  • Increased the rate of usb charging from miscellaneous cables to 650mA from 450mA. I don't want to increase it any higher as faster charging gives a lower battery life, and some GNex users using a patch that allowed for higher rates of usb charging experienced issues with their usb ports (granted, that was pulling 1A)
  • Added VMAP_AREA_CACHE (see here for explanation: http://git.kernel.or...61cb6cbf179b10a )
  • Added some codeaurora patches for better and more stable hotplugging
  • Added SVS (voltage control interface). This allows you to undervolt each frequency slot. To use this, you have to be using an app that can properly read and control the voltages. Chad0989's IncrediControl (https://play.google....WRpY29udHJvbCJd ) is the only one I've found so far that can do this properly.
  • Some other miscellaneous speed tweaks
v1.0
  • switched default governor from performance to ondemand - no idea why LG set performance as default
  • lots of optimizations
  • - compiled vfp with neon
  • - set better cflags
  • - optimized deadline (default io scheduler) for flash based devices
  • disabled a bunch of debugging
  • used ext4 filesystem instead of ext2/3
  • Added KSM
  • Disabled fsync - this should provide better battery life and make write accesses quicker
  • Used LZMA compression - this should give slightly quicker bootup times, and also caused the drop in file size
[background=rgb(245, 245, 245)]v0.1 -[/background]
  • [background=rgb(245, 245, 245)]patched kernel up to 2.6.35.14[/background]
  • [background=rgb(245, 245, 245)]added an ext4 performance patch[/background]
  • [background=rgb(245, 245, 245)]added FAIR_SLEEPERS[/background]
  • [background=rgb(245, 245, 245)]added JHASH3[/background]
  • [background=rgb(245, 245, 245)]some performance tweaks[/background]
  • [background=rgb(245, 245, 245)]increased max_readahead to 4096[/background]
  • [background=rgb(245, 245, 245)]tweaked ksm[/background]
  • [background=rgb(245, 245, 245)]changed it to use optimal load distribution[/background]
 
#4 ·
This was done using the debloated ROM found on AndroidForums.

$ export PATH=/data/local/bin:$PATH
$ su
# mount
rootfs / rootfs ro,relatime 0 0
tmpfs /dev tmpfs rw,relatime,mode=755 0 0
devpts /dev/pts devpts rw,relatime,mode=600 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
none /acct cgroup rw,relatime,cpuacct 0 0
tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0
tmpfs /mnt/obb tmpfs rw,relatime,mode=755,gid=1000 0 0
none /dev/cpuctl cgroup rw,relatime,cpu 0 0
/dev/block/mmcblk0p26 /system ext4 ro,relatime,barrier=0,data=ordered 0 0
/dev/block/mmcblk0p22 /tombstones ext4 rw,nosuid,nodev,relatime,barrier=1,data=ordered 0 0
/dev/block/mmcblk0p1 /firmware vfat ro,relatime,fmask=0000,dmask=0000,allow_utime=0022,codepage=cp437,iocharset=iso8859-1,shortname=lower,errors=remount-ro 0 0
/dev/block/mmcblk0p28 /data ext4 rw,nosuid,nodev,relatime,barrier=1,data=writeback,noauto_da_alloc 0 0
/dev/block/mmcblk0p12 /persist ext4 rw,nosuid,nodev,relatime,barrier=1,nodelalloc,data=ordered 0 0
/dev/block/mmcblk0p27 /cache ext4 rw,nosuid,nodev,relatime,barrier=1,data=ordered 0 0
/dev/block/mmcblk0p29 /mpt ext4 rw,nosuid,nodev,relatime,barrier=1,data=ordered 0 0
/dev/block/mmcblk0p20 /drm ext4 rw,nosuid,nodev,relatime,barrier=1,data=ordered 0 0
/dev/block/mmcblk0p23 /mm ext4 rw,nosuid,nodev,relatime,barrier=1,data=ordered 0 0
/dev/block/mmcblk0p14 /system/etc/firmware/misc_mdm vfat ro,relatime,fmask=0000,dmask=0000,allow_utime=0022,codepage=cp437,iocharset=iso8859-1,shortname=lower,errors=remount-ro 0 0
/dev/block/vold/179:33 /mnt/sdcard vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0002,dmask=0002,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
/dev/block/vold/179:33 /mnt/secure/asec vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0002,dmask=0002,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
tmpfs /mnt/sdcard/.android_secure tmpfs ro,relatime,size=0k,mode=000 0 0
/dev/block/dm-0 /mnt/asec/com.realvnc.viewer.android-1 vfat ro,dirsync,nosuid,nodev,relatime,uid=1000,fmask=0222,dmask=0222,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
#
 
#6 ·
I'll do one better:
major minor #blocks name
179 0 3526656 mmcblk0
179 1 32768 mmcblk0p1 = /firmware vfat
179 2 1024 mmcblk0p2 = SBL2?
179 3 1024 mmcblk0p3 = SBL3?
179 4 1 mmcblk0p4
179 5 1024 mmcblk0p5
179 6 5120 mmcblk0p6 = ROM update commands - ipth
179 7 5120 mmcblk0p7 = DemiGod Crash Handler/Factory Reset Module
179 8 10240 mmcblk0p8 = /boot emmc
179 9 1024 mmcblk0p9
179 10 3072 mmcblk0p10
179 11 3072 mmcblk0p11
179 12 8192 mmcblk0p12 = /persist ext4 blocks = 4096
179 13 16384 mmcblk0p13 = /recovery emmc
179 14 32768 mmcblk0p14 = /system/etc/firmware/misc_mdm vfat
179 15 3072 mmcblk0p15
179 16 3072 mmcblk0p16
179 17 3072 mmcblk0p17 = empty
179 18 3072 mmcblk0p18 = empty
179 19 1024 mmcblk0p19 = empty
179 20 8192 mmcblk0p20 = /drm ext4
179 21 16384 mmcblk0p21 = empty
179 22 73728 mmcblk0p22 = /tombstones ext4
179 23 8192 mmcblk0p23 = /mm ext4
179 24 24576 mmcblk0p24
179 25 8192 mmcblk0p25 = /misc emmc - This is where the CWM bootloop flag is
179 26 1048576 mmcblk0p26 = /system ext4
179 27 270336 mmcblk0p27 = /cache ext4 blocks = 4096
179 28 1843200 mmcblk0p28 = /data ext4 blocks = 4096
179 29 16384 mmcblk0p29 = /mpt ext4
179 30 4096 mmcblk0p30 = empty
 
#11 ·
Failed to mount /cache, but everything else seemed to go ok.

-- Installing: /sdcard/Popcorn-Kernel-v0.1-AlPhA.zip
Finding update package...
I:Update location: /sdcard/Popcorn-Kernel-v0.1-AlPhA.zip
Opening update package...
Installing update...
AnyKernel Updater by Koush.mount: failed to mount /dev/block/mmcblk0p27 at /cache: Device or resource busy

minzip: Extracted file "/tmp/dump_image"
minzip: Extracted file "/tmp/mkbootimg"
minzip: Extracted file "/tmp/mkbootimg.sh"
minzip: Extracted file "/tmp/unpackbootimg"

minzip: Extracted file "/tmp/zImage"
about to run program [/sbin/busybox] with 4 args

20480+0 records in
20480+0 records out
10485760 bytes (10.0MB) copied, 0.329883 seconds, 30.3MB/s
about to run program [/tmp/unpackbootimg] with 5 args
BOARD_KERNEL_CMDLINE vmalloc=450M, console=ttyDCC0,115200,n8 androidboot.hardware=qcom
BOARD_KERNEL_BASE 40200000
BOARD_PAGE_SIZE 00000800
about to run program [/tmp/mkbootimg.sh] with 1 args

Introducing PopcornKernel by sonicxml and jdkoreclipseabout to run program [/sbin/busybox] with 4 args

Cleaning up and clearing caches...
Extracting Kernel files...
Installing kernel...
12080+0 records in
12080+0 records out
6184960 bytes (5.9MB) copied, 1.922741 seconds, 3.1MB/s
Install Successful...script result was [Enjoy the Show!]

Enjoy the Show!

Install from sdcard complete.
 
#16 · (Edited by Moderator)
AFAIK, his is just stock.

This is gonna have a lot more tweaks - and it already has a few (take a look at the github).

and status update - I got a boot.img form to boot properly, so I just need to find out what was wrong with my anykernel format
 
#18 ·
Yup: v0.1
[background=rgb(245, 245, 245)]Download: [/background]http://goo.gl/RabMh

[background=rgb(245, 245, 245)]Changelog:[/background]

[background=rgb(245, 245, 245)]v0.1 -[/background]
[background=rgb(245, 245, 245)]patched kernel up to 2.6.35.14[/background]
[background=rgb(245, 245, 245)]added an ext4 performance patch[/background]
[background=rgb(245, 245, 245)]added FAIR_SLEEPERS[/background]
[background=rgb(245, 245, 245)]added JHASH3[/background]
[background=rgb(245, 245, 245)]some performance tweaks[/background]
[background=rgb(245, 245, 245)]increased max_readahead to 4096[/background]
[background=rgb(245, 245, 245)]tweaked ksm[/background]
[background=rgb(245, 245, 245)]changed it to use optimal load distribution[/background]
 
#26 · (Edited by Moderator)
Holy crap my patience has paid off... I had to stop myself several times from going to a different device cause the lack of dev interest. Whataya know...I was able to keep myself in check a BOOM we have our first thread!

Thank you soo much to the devs for coming over to the Spectrum!!!!!!!!!!!!!!!!!!!!! You wont regret it, this device is a crouching tiger, and with the right tweaks it will be a BEAST!

I sent a donation to both devs, sonic and jd, so keep the MAGIC comin' and I will gladly continue to contribute!
 
#27 ·
Effin right............. I'm loving this right here!! I think I would like to get some blind development going for this as well! I've had good luck on some LG devices in the past helping people out... Lets bring the crew back together. I've got a few things going on right now on a positive note!
 
#31 ·
No kernel flashes don't require a data wipe, only cache and dalvik. And you don't even need to wipe these with my kernel because I made it automatically wipe those when you flash

Sent from my Galaxy Nexus using RootzWiki
 
#32 ·
Also just curious have you thought about an update to overclock the kernel to match what broken out had so that we can flash the kernel and still be at 1.8GHz

Sent from my VS920 4G using Tapatalk 2
 
#33 ·
#36 ·
Sorry this took a while, but here is v2! (finally)
Also, shockaholic donated me a spectrum so you should all say thanks to him! (jdk still doesn't have one, so if someone is feeling nice, I'm sure he'll really appreciate it)

Download: goo.gl/PBkN8

v2.0
  • Reverted FAIR_SLEEPERS, as this may improve UI responsiveness
  • Use SLQB memory allocator
  • Use Fast_NO_Hz
  • Better memory management for lowmemorykiller
  • Added our special Aggressive and Gallimaufry governors from our GNex kernel
    • Aggressive: This is a modified conservative governor, tweaked for speed while still having excellent battery life. It should also have better screen-on battery life
    • Gallimaufry: This is a modified ondemand governor, tweaked for speed while still having excellent battery life. It features a two-phase algorithm which should improve battery life
  • Added CPU overclock to 1.836GHz
  • Added GPU overclock - 2d module to 266MHz, 3d to 300Mhz
  • Added L2 Cache overclock
  • Added Bus overclock
  • Increased the rate of usb charging from miscellaneous cables to 650mA from 450mA. I don't want to increase it any higher as faster charging gives a lower battery life, and some GNex users using a patch that allowed for higher rates of usb charging experienced issues with their usb ports (granted, that was pulling 1A)
  • Added VMAP_AREA_CACHE (see here for explanation: http://git.kernel.or...61cb6cbf179b10a )
  • Added some codeaurora patches for better and more stable hotplugging
  • Added SVS (voltage control interface). This allows you to undervolt each frequency slot of the cpu. To use this, you have to be using an app that can properly read and control the voltages. Chad0989's IncrediControl (https://play.google....WRpY29udHJvbCJd ) is the only one I've found so far that can do this properly.
  • Some other miscellaneous speed tweaks
 
This is an older thread, you may not receive a response, and could be reviving an old thread. Please consider creating a new thread.
Top