[Kernel] Flykernel-13 "Back from the Grave"

Search This thread

erasmux

Retired Recognized Developer
May 22, 2010
1,437
455
FlyKernel is an overclockable kernel for the Hero GSM, aimed to improve stability, battery life and performance (generally in that order).

The Hero GSM now also has a newer .35 kernel "Las Venturas" you should also check that one out. At the time of writing these lines, the newest version of Las Venturax is found on the second post of the above thread (my post ;)) - you should check which post is more up-to-date on that thread.

Download and instructions are on this post.
FAQ and advanced subjects are on the second post.
Change log and previous versions are on the third post.

WARNING: Please make sure to have an up-to-date backup before you flash this kernel!

FlyKernel-13 (#253)
FlyKernel 13 - Desean
FlyKernel 13 - Mediafire
FlyKernel 13 - Multiupload

This is a post-LasVenturas update for FlyKernel, after quite some time without any updates.
Although I currently have a bit of a personal preference for Las Venturas, I believe that it is even better to have two excellent kernels for the hero (internally totally different :D), so that the users can choose whichever works best for them. Possibly, on some of the older ROMs this kernel might work better. This should also help isolate kernel issues vs. ROM issues.

SmartassV2 (informal description and comparison with the first smartass)

SmartassV2 is a governor (controls the frequency of the CPU at each give moment) which like the first smartass is generally based on the implementation of interactive with some major changes and the addition of a built in sleep profile (behaves a bit differently when screen is off vs. on).

The smartassV2 improves the very naive scheme which the first smartass had: The first smartass (with the values I set for the hero), would cap the max frequency at 352Mhz for sleep and when screen is on, would do the opposite and keep the frequency at 518Mhz or above. For sleep this was very effective but a bit crude and unclean, and there could be some cases where you would need processing power even when screen is off (something is updating and music is playing and etc.). For screen on, smartass1 was too quick to jump to the max available frequency and again would never go below the 518Mhz, so in a nutshell its was using "too high" frequencies.

SmartassV2, introduce (internally) an "ideal" frequency which is the frequency we are "aiming" for, in some sense. The way I see it is that the "ideal" frequency is a hint to the governor what is a good balance between performance and battery life. Now when screen is on, I set (on the hero) the ideal frequency to 518Mhz which will ensure nice responsiveness but limit unnecessary use of higher frequencies when they are not needed. When screen is off, I set the ideal frequency to 352Mhz (0 will disable the screen state tracking all together). From my testing this will "convince" the governor to spend most of the its time during sleep at the lowest available frequencies. Note, that both during sleep and when awake the entire frequency range (as defined by the "user" - i.e. selected with SetCPU) is used by smartassV2. For example, when the CPU is loaded heavily, the highest available frequency will be used regardless if screen is on or off.

Boot OC and optional tweaks
Optionally, you can rename the update file before you flash to change bootup frequencies and other options.
If you don't rename the file and flash "FlyKernel-13.zip" you will get the default tweaks and the min/max frequencies will remain as they where before.

For example, to set the max/min frequencies on boot to 614/176, rename "FlyKernel-13.zip" to "FlyKernel-13-M614-m176.zip".

Supported "flags" are:
Notice, all flags are case sensitive.

-MXXX - set max frequency to XXX
-mYYY - set min frequency to YYY
Supported max frequencies:
518 576 614 633 652 672 691 710 729 748
Supported min frequencies:
19 176 264 352 518 576 614 633 652 672 691 710 729 748
Default behavior, if these flags aren't given, is not to change your current settings.
For frequency recommendations and more info see FAQ #5.
Technical details: max/min frequencies are set in the kernel's ramdisk init.hero.rc file. Previous settings will be replaced. Furthermore, if one of your init.d script sets the max/min frequencies, these lines will be removed.
If you have SetCPU or other program changing the speed at boot, their change will take effect and overwrite this setting as soon as the ROM completes to boot.

-nologo - Don't show boot animation.
-logo - Show boot animation.
Default behaviour, if no flag is given, is not to change your current settings.

-noatime - Mount all partitions with -noatime to improve IO.
-atime - Mount no partition with -noatime.
Assuming, your ROM did not mount any partition with noatime, then the -atime option should undo the -noatime option perfectly. Unfortunately, it seems some ROMs (i.e. VR12) mount only some of the partitions with -noatime. It seems that in some cases, changing the noatime configuration causes boot problems.
Therefore, I highly recommend you make a backup before trying the -noatime flag - this is the only full proof way to go back if it messes something up.
Notice, this does not effect the ext partition as it is not mounted in the ramdisk init.rc. As far as I know, all ROMs mount the ext partition with noatime.

-notweak
By default, the updater will remove scheduler tweaks which exists in the ramdisk init.rc script, in order for the scheduler default compiled into the kernel to apply. This flag will disable this behavior.

More techinical information for developers about the smart update package has been updated in my github wiki.

Limitations and known bugs:
- This kernel will not make you coffee (I hope)!

Integrating kernel in a custom ROM (for ROM developers)
You can use my from above:
http://floyo.desean.net/FlyKernel-13-Floyo.zip
This file has a regular boot.img with a ramdisk compatible with Floyo 1.4, boots at 576/352 (smartassV2) and has all the kernel modules unpacked.
If you need to edit the ramdisk, you can either unpack the above boot.img as explained here. Or you can get the kernel binary file from my smart update package, under tmp/flykernel/kernel. The kernel modules are package in the smart update package under tmp/flykernel/syslibs.tar.

Kernel Sources
My sources with all my updates and changes are found on github:
http://github.com/erasmux/hero-2.6.29-flykernel
Use hero_defconfig for the regular version and hero-bfs_defconfig for the BFS version.
See the wiki for more information about building the kernel and more.
Please feel free to contact me regarding my sources and kernel development.

Using my Kernel Sources
Feel free to use my kernel sources, fully or partially in any (legal) way you see fit.
If you modify the sources, I urge you to share your changes with the community (as GPL obliges you to do), preferably using github. You can fork my sources on github, and this will make it easier for you to grab new changes from me and also allow you to fill pull requests so I can pull your changes back to my kernel.

GPL
Yes I am GPL complaint, all is included inside the sources, including the GPL license itself.

Thanks
Huge thanks to Desean for giving me file hosting that makes my life easier :D
Many thanks to all the Kernel/ROM developers here, especially those with open source kernels on github - LoxK, Cyanogen, Ninpo, Radu and especially Decad3nce.
Big thanks to all those who helped test the pre versions and reported bugs, specifically also to my long time testers (moonshield and floomat)



Donations are always welcome and accepted but are in no way required.
 
Last edited:

erasmux

Retired Recognized Developer
May 22, 2010
1,437
455
FAQ and Advanced Subjects

FAQ

0. When reporting a problem, do I need to include the ROM and exact kernel version I am using?
YES!

1. How do I flash the kernel update file?
You flash it from recovery, like any other custom ROM. If you are not familiar with recovery and/or haven't rooted your phone, start here.

2. Do I need to wipe anything when installing the kernel?
No you don't need to do any wipes. Just install the kernel through recovery and reboot :)

3. The update from recovery failed with errors/warning?
Please, in the same recovery session which you tried to apply the update and failed, select the "Move recovery.log to SD" from the "Other" menu and post in this thread with the recovery.log attached (for example in a .zip file).

4. After flashing the kernel my ROM does not boot

A logcat of the boot process might help me understand the problem. Using adb you can generate one with the following command and attach it to your report:
Code:
adb logcat > logcat.txt
You need to run this command relatively close to the start of the boot. Close the window after the phone is stuck for few minutes (say 2 mins with no change should do). You can start by running "adb logcat" and seeing if you get any output at all. If so, reboot once more and run the above command from the start of the boot (approximately).

Please also clearly state which ROM you are using and which kernel did work for you (which one did you use before).

To recover from such a scenario, boot into recovery and restore a backup of your working state. If you do not have a backup, and its the kernel fault, flashing your old kernel should solve the problem.

5. What min/max frequencies should I choose?

The short answer: min 176, max 614, if you have wake up issues up the min speed to 264 and then to 352.
To play with the speeds I suggest you install SetCPU (or similar app), so you can view and change your settings interactively. To change it permanently from the bootup see instructions on first post. You also use options like "Set on boot" in SetCPU if you prefer that.

The long answer:
The max frequency will effect the speed and responsiveness of your phone when screen is on. Note, that any speed above 528Mhz is above the specification of the manufacturer, hence is overclocking and could, in theory, shorten the life of your device. At high enough frequencies all devices will stop functioning, the exact threshold depends on your luck with your specific device. From my experience and knowledge, running at stable frequencies (or say one or two steps down to be on the safe side), should not harm your device - of course all overclocking is done at your sole responsibility.
As far as I know, almost all device can handle 652Mhz, most can reach the 691/710 area and some can even reach higher than the 748Mhz cap of this kernel. To find out which speed your phone supports, use SetCPU (or similar app), start from 614 for example and up the speed one tick a time. Don't select "Set on boot". At each step play with the phone a minute or two. If the phone gets stuck, reboot it (take out battery if necessary) and go one tick down.

Additionally, note the higher your max frequency the higher the battery drain will be when the screen is on. It is true that the display, data, wifi, gps, etc. should drain much more than the cpu. Still, I recommend staying in the sane frequencies range, no more than say 691Mhz (even if you phone can handle it).

Finally the min speed will effect standby battery life (when screen is off). From my experience there is a difference in battery life between 19Mhz and 352Mhz min frequencies but it is relatively small (much less than I expected). 19Mhz is not stable for me, almost stable, but over a period of weeks you will probably experience weird and possibly very rare instabilities. For me this was the when playing music with screen off the phone got stuck at 19Mhz (very hard to find this out), and became totally unresponsive until I rebooted it. Therefore, I recommend starting from 176Mhz, and if you have wakeup issues to bring it up. With 352Mhz you should have no wake up issues at all.

6. I am having wakeup issues (such as unresponsiveness to wakeup, weird coloring after wakeup, screen inversion, caller id not working on wakeup)
Up the min speed to 264 and then to 352. With a min frequency of 352 you should not have any wake issues.
See the FAQ #5 above for more information.

7. I am experiencing bad battery life with FlyKernel

First, please make sure to reboot the ROM at least one time after you flash the kernel. There have been reports that ROM/kernels behave badly on the first boot.
Personally, I do not do battery calibration, but if it makes you happy go for it. I do recommend at least charging the battery overnight, or a couple of hours after it has reached 100% to be sure it is full. Then use it, your regular usage for a few days and only then judge the battery life.
The battery percent indicator, over short periods of time seems extremely inaccurate and its very hard to reach any correct conclusions based on it.
If you do want to report bad battery life, please state your settings (kernel version, min/max speeds, governor, etc.), over which period you have been testing the battery, under what usage, what is the battery life you are used to having with which kernel and what is the battery life you are experiencing now.

Note, that roughly speaking, I lose less than 1%/hour when screen is off (wifi, data, gps, etc. also off), and about 10%/hours when just screen is on but phone does nothing at all (again wifi, gps, etc. off). About 20%+/hour when stressing my phone (although I have no data plan so can't test that). I am using the latest FlyKernel @ smartass 614/176.

8. What size should I give the swap partition?

short answer: 0.
long answer: I do not recommend using swap on the hero, hence 0. If you have a very fast SD card, and want to try it, give it say 64Mb. Note that I know of no ROM for the hero which activates swap automatically - you'll need to add a init.d script or something to activate it (see a bit more info here). Let me know if you find a scenario where the swap gives substantial improvement over no swap.
Finally note that FlyKernel versions before 12 do not support swap.

9. Should I use ext2, ext3 or ext4 for my ext partition?
Short answer: ext4. Note that FlyKernel versions before 12 did not support ext4, ext3 is supported since version 10.
Long answer:
Previously, I was under the impression that a journaling file system is a very bad idea for flashable storage. I still think its not ideal but better than the other alternative:
I have been using dual booting, placing an entire development ROM on an ext2/4 partition and using it for development. And when using ext2 it would get errors almost every boot and every couple of days get corrupted to the point I needed to manually restore damaged files to get it working....
It seems that if you only use it for app2sd, there are very infrequent changes to this volume (only when you install a new app), hence it does not get corrupted. But this also means that ext4, in this scenario, will not pay much overhead because there are very few changes. And in the case there are many changes, if I have to choose between a slightly shorter SD life with ext4 (and then I can finally get a faster one ;)) or risking my data getting corrupted on a daily basis with ext2 - I prefer the first (ext4).

Questions 10-13 are now obsolete with smartassV2 - see the first post for details about it :D

10. Do I need a SetCPU (or similar) screen off profile with smartass?
No, smartass automatically limits the screen on frequency to >= 518Mhz to ensure responsiveness, and screen off frequency to <= 352Mhz to keep standby battery life under control. Much like HTC's perfllock, it does this at the kernel level so it is much better than app level screen off profiles.

11. Using smartass the CPU frequency does not drop below 518Mhz (with screen on)
Intentional to ensure responsiveness. From my testing, when screen is on battery drain difference of speeds < 518Mhz is not significant relative to the drain by the screen itself.

12. Using smartass the CPU frequency does go above 352Mhz (with screen off)
Intentional to keep standby battery life under control.

13. Using smartass the CPU frequency is always at its max (or always at 352Mhz when screen is off)
See "Monitoring the CPU frequency" in the "Advanced subjects".

14. I am experiencing spontaneous reboots
Please post, in this thread, with as much detail as possible about the problem.
Please also attach the last_kmsg, which you can get from example using:
Code:
adb pull /proc/last_kmsg

15. What happend to the BFS version?
With the FlyKernel-12 scheduler tweaks (CFS scheduler), it surpasses the BFS version in every way. I tried to compile a BFS from the FlyKernel-12 code but even in neocore, in which the BFS was always much better, the new tweaked CFS leaves the BFS in the dust. Hence, I see no reason to continue and build/support a BFS version. The hero-bfs_defconfig is still up to date in my sources if anyone wants to build it themselves.

*. I am experiencing an issue not covered in the FAQ which I believe is kernel related
Please post, in this thread, with as much detail as possible about the problem.
Please also detail why you believe this kernel related. The best "proof" that it is the kernel's fault, is to flash back your old kernel and verify the problem is solved, then reflash the new kernel and verify the problem reappears. In any case please detail the kernel and version(s) on which your are experiencing the problem and those on which you do not.

Advanced Subjects

* Monitoring the CPU frequency
Will rewrite this more clearly. In the meantime:
http://xdaforums.com/showpost.php?p=9925116&postcount=903
http://xdaforums.com/showpost.php?p=9929325&postcount=919 <-- Mainly this one!!!
http://xdaforums.com/showpost.php?p=9989996&postcount=970
http://xdaforums.com/showpost.php?p=10010110&postcount=990
 
Last edited:

erasmux

Retired Recognized Developer
May 22, 2010
1,437
455
Change log and previous versions

FlyKernel-13
- Scheduler tweaks: use the scheduler settings that worked well on flykernel-11c and 12pre6 (tweaked them very very little), responsiveness should now be better than on the FlyKernel-12 release :)
- Backported the new smartassV2 - now the default :D
- Added interactiveX governor also
- A few config changes and compiler optimizations

FlyKernel 12a (mediafire)
- Fix wake up issues with new scheduler tweaks
- Smart update script: make noatime tweak option to (hopefully) solve boot problems
FlyKernel 12
- Smart update script
- Optimized scheduler parameters
- Fix Usb mass storage after usb tethering (at least on CM ROMs)
FlyKernel-12pre6
- Align ext2/3/4 config options
- Merge small fixes to lowmemorykiller module.
FlyKernel-12pre5
- Backport of smd rpcrouter to avs333 request.
FlyKernel-12pre4
- Partial fix for the lockscreen flickering when locked/unlocked rapidly (with smartass).
- Very small tweak to other smartass parameters.
FlyKernel-12pre3
- Fixed frequency table according to Radu's comments. Frequencies which are not on PLL2 have been removed!
- Tweaked smartass to spend more time at the lower frequencies to improve battery life. Also smartass's allergy to 19Mhz has been cured!
- Some configuration tweaks, mostly sleep related.
- 528Mhz frequency does not work well with OC, so it has been replaced with 518Mhz which does work fine.
FlyKernel-12pre2
FlyKernel-12pre2 optimized for CM based ROMs (default speed 576/352)
- Added compcache support
- Added 19Mhz and 264Mhz frequencies
FlyKernel-12pre1
- Lower voltages of high frequencies (>= 528Mhz)
- Added ext4 support (I currently use it for dual booting)
- Interactive updated (does anyone find it better than smartass? in what scenario?)
- Smartass fixes and optimizations - should be more responsive now and battery life should (hopefully) still be excellent.
- Camera backport from .32 (12pre1-cam32)

FlyKernel-11c
FlyKernel-11c #66 (Generic)
FlyKernel-11c-BFS #67 (Generic)
- Smartass: now wakeups up from sleep first at 528Mhz (no OC), to hopefully help with wake up issues.
- Bunch of fixes/optimization from CM espresso kernel and from Decad3nce (see github)
- BFS version :D

"Optimized Kernel Packages" (only for CM6 based ROMs: Floyo, Elelinux, Froyd):
Find the appropriate kernel for you by its name in the FlyKernel-11c directory
The naming conversion is:
flykernel-11c-CM-<min>-<max>.zip (with boot animation)
flykernel-11c-CM-<min>-<max>-nologo.zip (no boot animation)
flykernel-11c-BFS-... (BFS version)

FlyKernel-11
- New smartass governor (see technical detail below). Previous governors still supported.
- Added IPv6 (only for Google Googles?!)
- Fixes camera freezing CM6-based ROMs (thanks Ninpo for a "code cleanup" which fixed this :))
- Fixes detection of USB connection during boot on CM6-based ROMs.
- Various squash-sets imported (see github)
- NORMALIZED_SLEEPER disabled.

FlyKernel-10a (rapidshare megaupload)
- Optimize some sleep/idle code (thanks to ninpo)
- Add module for IP header compression - hopefully this helps google apps (inspired by ninpo).

FlyKernel-10a-BFS (rapidshare megaupload)
- BFS version of 10a.
- Whats is BFS? see wikipedia and more details here.

FlyKernel-10
- Fixes for Froyo ROMs (FroydVillain and Elelinux)
- Added some more modules inside the kernel (notably using VPN should now work). I am now more aligned with the modules included in other kernels (well mainly ninpo's kernels), so hopefully you should not run into any missing modules.
I even added support for ext3.
- Generic update for all ROMs.

Flykernel-09:
FlyKernel-09 for VR12,RCMix,ChoclateEclair,Modaco and SuperHero
FlyKernel-09 for Kimera and Sensehero
FlyKernel-09 for MMod 1.2.3
FlyKernel-09 for FroydVillain and elelinux - Beware there are problems with 09 and Froyo ROMs.
FlyKernel-09 for CM6
- Added the excellent minmax governor.
- Removed interactive as it does not behave well at all - just use minmax :)
- added version which supports the 288M data partition :D - removed now since MAX appears to be fading out - just use dalvik2SD instead.

FlyKernel-08
FlyKernel-08 for Froyo and ASOP
Added Mike Chan's interactive governor, adaptation to Hero by Nadlabak and Ninpo. Added some tweaks of my own - now works well also with big frequency table.
Tweaked conservative governor for better performance.
Fixed/cleaned kernel co/nfig and modules - among other things iptables should work fine now.
Bigger frequency table.

FlyKernel-05 (BFS)
BFS version of the FlyKernel-04

FlyKernel-04
Based on HTC 2.6.29 official kernel source.
Includes patchset 2.6.29.6 and various fixes


Boot OC - Only for Sense based ROMs (The smart update script added in FlyKernel-12 provides a cleaner and better solution for all ROMs)
Boots very quickly by setting the OC speed right from the start. Also sets the original HTC boot animation which is quicker for most ROMs. Finally, replaces the 09zipalign with 09betterzipalign (again thanks ninpo).
Please have a backup before you try this, as there is no other easy way to undo this.
Select the update file according to the speed your phone can handle:
boot @ 653/160: http://www.multiupload.com/5RAXNJ7AWY (rapidshare megaupload)
boot @ 672/160: http://www.multiupload.com/RRQ0HYI8O8 (rapidshare megaupload)
boot @ 691/160: http://www.multiupload.com/20AJV7FLQI (rapidshare megaupload)
boot @ 710/160: http://www.multiupload.com/WHROUYNGQ6 (rapidshare megaupload)
Theoretically, this should now work on any ROM and any OC kernel. I have tested the 691 update on VR12 and Froyd 1.4 with my kernel and it works fine. Above files (now with "_" at end of name) updated to also work on ChocolateEclair and hopefully other ROMs on 31/8.
Note that in my recent kernel versions the lowest frequency is 176, so it will boot with a min frequency of 176.
 
Last edited:

erasmux

Retired Recognized Developer
May 22, 2010
1,437
455
diffs of which change?
there are a lot of changes and fixes, which range from fixes by me in the source code, to just copying/applying files from others.
I think it would be better to keep this thread open for issues and questions about the usage of these fixes. Still I will be more than happy to share anything I have done - please contact me with the exact change you are interested, either by PM or open a new thread if you think it is of general interest for developers.
 
  • Like
Reactions: petsasj

zorxd

Senior Member
Jun 30, 2010
546
41
There are literaly dozens of different kernels floating arround, all of which are always "brand new super fast ultra optimized". From a user perspective it's hard to tell which one is the best. I think this community needs more openness in the developpement. I think it would be a good habit if developpers posted their diff files (of everything) instead of just saying that they made "optimizations".
thanks for your work
 
Last edited:

erasmux

Retired Recognized Developer
May 22, 2010
1,437
455
There are literaly dozens of different kernels floating arround, all of which are always "brand new super fast ultra optimized". From a user perspective it's hard to tell which one is the best. I think this community needs more openness in the developpement. I think it would be a good habit if developpers posted their diff files (of everything) instead of just saying that they made "optimizations".
thanks for your work

Trying it out might help in deciding which is the best for you. There is no such thing as an absolute best, sorry. To each his needs and his preferences. I also included a convenient undo update script which restores the original kernel.

Personally, I am not aware of any other kernels for the VillainROM (except the original one by ninpo) and for me my kernel works better. Additionally, I have gotten very good feedbacks for my kernel and fixes on iandroid (using HebVillain which is very tightly based on VR12). So I thought others here might want to try it and maybe would also like it. Please also feel free to bash it, but please try it first and then reply with comments which I can relate too.

Finally, I am all for complete openness: If you are really interested in the kernel sources, you can find them along with all my changes here which could be of great to help to you especially if you want to compile the hero kernel yourself. In such a case I would recommend starting from here. The biggest other change is the RTL fix, for which you find the diffs here (it is verses the eclair branch of the android source code). As for the other files & changes I did, I have tried to detail as much as possible in my original post.

Feel free to contact me (also by PM) if you want more info or help.
 
  • Like
Reactions: petsasj

lbrenes

Senior Member
Aug 1, 2008
229
28
San Jose
I just installed your Kernel and the Boot Optimization and brother my phone is flying!!!! GREAT JOB!!!

100% recommended flash for your VR12

THANKS!!!
 
Last edited:

erasmux

Retired Recognized Developer
May 22, 2010
1,437
455
I hope it does. I don't use Arabic, but if there are problems, report them and I'll do my best to fix them.
 
  • Like
Reactions: petsasj

chr15gb

Member
Jun 20, 2010
43
2
Problems for me.....

Installed Kernel & Optimization and Boot time optimization

Made all my icons go to pot,

"problem loading gadget" on powerbar,
"problem loading gadget" on Battery Meter Widget

Game Icons, CoPilot live, System Widget all showing default app icon.

Lost a WHOLE LOAD of installed apps, simply not there listed any longer. So many gone I can't recall what I have lost.

Tried the undo file Original VR12 Kernel:

Got my apps back but still probs with some widgets, boot screen remained the HTC one (didn't revert to the villian screen)
 

erasmux

Retired Recognized Developer
May 22, 2010
1,437
455
First, I have fixed the kernel restore file in the original post to also restore the original villain boot animation, note that the new file is called: V12-RestoreKernel_.zip (with additional _ at end)
Thanks, for the remark.

Regarding the apps, that is very weird. Did you get these "problem loading gadget" on the screen or where? A logcat from the start of the boot would be very helpful (although I can understand if you don't want to flash it again just to help me debug...).

Regarding the widgets (when the apps do appear) ,try clearing the HTC Sense data (unfortunately this will reset your desktop but it should restore your widgets and its better than having to reinstall everything).
 
  • Like
Reactions: petsasj

chr15gb

Member
Jun 20, 2010
43
2
I'll have to have a go later.. tied up at the mo..

Prob loading gadget appeared on the screen (still does).

Will try clearing sense and post back later.

EDIT: Clearing Sense worked. Thanks.
 
Last edited:

fallos

Senior Member
Feb 8, 2009
300
3
Tallinn, Estonia
made battery callibration (http://www.villainrom.co.uk/viewtopic.php?f=97&t=1789&start=20#p19769).. full charge (~17:15).. after 5 hours using phone.. 5-7 calls (1-5min each), 30 min wifi and playing =) and now ( 22:40) 99% battery!!! blja, im very happy!!!!!!!!!!

cpu always 245-576mhz

only like with original VR12 kernel after few hours of use at 576mhz linpack score down from 2.5 to 1.8 , but after installed autokiller ( preset 60mb) it's always 2.45-2.57

now i think VR12 the best!

Thank you one more time! will write back tomorrow eve =)
 

zorxd

Senior Member
Jun 30, 2010
546
41
is this included stuff really usefull or it can be disabled?

ipv6 (lot of different options)
LZO and ARC4 crypto stuff
extra PPP stuff (MPPE, PPPOLAC, PPOPNS)
DSCP and TCPOPTSTRIP
INET_TUNNEL
XFRM_IPCOMP
CPU_FREQ_GOV_CONSERVATIVE
the /proc/config.gz (kernel .config support)

Also, I noticed that the device boot with mem=64M. Does it mean that the rest of the RAM isn't used?
 

erasmux

Retired Recognized Developer
May 22, 2010
1,437
455
AFAIK the only way to change this is to recompile the kernel.
Many of what you said I saw requests here on XDA that kernel developers add (there applications which use it). Please note that many of those modules do not automatically load and need to be manually loaded so they should not have any effect.
Others stuff, mainly the IPv6 stuff i doubt anyone uses - must have "inherited" it from the config i used as a base. I will look into it for future release if I can remove that stuff.
About the mem=64 I am not sure what that is, my phone is definitively using the full memory. I will also try to understand and possibly adjust that for future releases.
Thanks for the input.
 

zorxd

Senior Member
Jun 30, 2010
546
41
An other question, is a kernel really tied to a specific ROM? I have VR12 right now so I could try it, but I was also thinking of upgrading to a 2.2 ROM.

About the modules, I think that most of the stuff that I noticed was compiled in (=y) and not as modules (=m). If they are only used by 1% of the users, I think it would be better to have them as modules and make sure that they don't load automatically at boot.

Also, do you know if it is better to have a small frequency table (with, let say, only 3 choices) to avoid excessive frequency switching?
Is the dalvik to SD trick included worth it for those of us with the original 2GB SD card?
 
Last edited:

Top Liked Posts

  • There are no posts matching your filters.
  • 62
    FlyKernel is an overclockable kernel for the Hero GSM, aimed to improve stability, battery life and performance (generally in that order).

    The Hero GSM now also has a newer .35 kernel "Las Venturas" you should also check that one out. At the time of writing these lines, the newest version of Las Venturax is found on the second post of the above thread (my post ;)) - you should check which post is more up-to-date on that thread.

    Download and instructions are on this post.
    FAQ and advanced subjects are on the second post.
    Change log and previous versions are on the third post.

    WARNING: Please make sure to have an up-to-date backup before you flash this kernel!

    FlyKernel-13 (#253)
    FlyKernel 13 - Desean
    FlyKernel 13 - Mediafire
    FlyKernel 13 - Multiupload

    This is a post-LasVenturas update for FlyKernel, after quite some time without any updates.
    Although I currently have a bit of a personal preference for Las Venturas, I believe that it is even better to have two excellent kernels for the hero (internally totally different :D), so that the users can choose whichever works best for them. Possibly, on some of the older ROMs this kernel might work better. This should also help isolate kernel issues vs. ROM issues.

    SmartassV2 (informal description and comparison with the first smartass)

    SmartassV2 is a governor (controls the frequency of the CPU at each give moment) which like the first smartass is generally based on the implementation of interactive with some major changes and the addition of a built in sleep profile (behaves a bit differently when screen is off vs. on).

    The smartassV2 improves the very naive scheme which the first smartass had: The first smartass (with the values I set for the hero), would cap the max frequency at 352Mhz for sleep and when screen is on, would do the opposite and keep the frequency at 518Mhz or above. For sleep this was very effective but a bit crude and unclean, and there could be some cases where you would need processing power even when screen is off (something is updating and music is playing and etc.). For screen on, smartass1 was too quick to jump to the max available frequency and again would never go below the 518Mhz, so in a nutshell its was using "too high" frequencies.

    SmartassV2, introduce (internally) an "ideal" frequency which is the frequency we are "aiming" for, in some sense. The way I see it is that the "ideal" frequency is a hint to the governor what is a good balance between performance and battery life. Now when screen is on, I set (on the hero) the ideal frequency to 518Mhz which will ensure nice responsiveness but limit unnecessary use of higher frequencies when they are not needed. When screen is off, I set the ideal frequency to 352Mhz (0 will disable the screen state tracking all together). From my testing this will "convince" the governor to spend most of the its time during sleep at the lowest available frequencies. Note, that both during sleep and when awake the entire frequency range (as defined by the "user" - i.e. selected with SetCPU) is used by smartassV2. For example, when the CPU is loaded heavily, the highest available frequency will be used regardless if screen is on or off.

    Boot OC and optional tweaks
    Optionally, you can rename the update file before you flash to change bootup frequencies and other options.
    If you don't rename the file and flash "FlyKernel-13.zip" you will get the default tweaks and the min/max frequencies will remain as they where before.

    For example, to set the max/min frequencies on boot to 614/176, rename "FlyKernel-13.zip" to "FlyKernel-13-M614-m176.zip".

    Supported "flags" are:
    Notice, all flags are case sensitive.

    -MXXX - set max frequency to XXX
    -mYYY - set min frequency to YYY
    Supported max frequencies:
    518 576 614 633 652 672 691 710 729 748
    Supported min frequencies:
    19 176 264 352 518 576 614 633 652 672 691 710 729 748
    Default behavior, if these flags aren't given, is not to change your current settings.
    For frequency recommendations and more info see FAQ #5.
    Technical details: max/min frequencies are set in the kernel's ramdisk init.hero.rc file. Previous settings will be replaced. Furthermore, if one of your init.d script sets the max/min frequencies, these lines will be removed.
    If you have SetCPU or other program changing the speed at boot, their change will take effect and overwrite this setting as soon as the ROM completes to boot.

    -nologo - Don't show boot animation.
    -logo - Show boot animation.
    Default behaviour, if no flag is given, is not to change your current settings.

    -noatime - Mount all partitions with -noatime to improve IO.
    -atime - Mount no partition with -noatime.
    Assuming, your ROM did not mount any partition with noatime, then the -atime option should undo the -noatime option perfectly. Unfortunately, it seems some ROMs (i.e. VR12) mount only some of the partitions with -noatime. It seems that in some cases, changing the noatime configuration causes boot problems.
    Therefore, I highly recommend you make a backup before trying the -noatime flag - this is the only full proof way to go back if it messes something up.
    Notice, this does not effect the ext partition as it is not mounted in the ramdisk init.rc. As far as I know, all ROMs mount the ext partition with noatime.

    -notweak
    By default, the updater will remove scheduler tweaks which exists in the ramdisk init.rc script, in order for the scheduler default compiled into the kernel to apply. This flag will disable this behavior.

    More techinical information for developers about the smart update package has been updated in my github wiki.

    Limitations and known bugs:
    - This kernel will not make you coffee (I hope)!

    Integrating kernel in a custom ROM (for ROM developers)
    You can use my from above:
    http://floyo.desean.net/FlyKernel-13-Floyo.zip
    This file has a regular boot.img with a ramdisk compatible with Floyo 1.4, boots at 576/352 (smartassV2) and has all the kernel modules unpacked.
    If you need to edit the ramdisk, you can either unpack the above boot.img as explained here. Or you can get the kernel binary file from my smart update package, under tmp/flykernel/kernel. The kernel modules are package in the smart update package under tmp/flykernel/syslibs.tar.

    Kernel Sources
    My sources with all my updates and changes are found on github:
    http://github.com/erasmux/hero-2.6.29-flykernel
    Use hero_defconfig for the regular version and hero-bfs_defconfig for the BFS version.
    See the wiki for more information about building the kernel and more.
    Please feel free to contact me regarding my sources and kernel development.

    Using my Kernel Sources
    Feel free to use my kernel sources, fully or partially in any (legal) way you see fit.
    If you modify the sources, I urge you to share your changes with the community (as GPL obliges you to do), preferably using github. You can fork my sources on github, and this will make it easier for you to grab new changes from me and also allow you to fill pull requests so I can pull your changes back to my kernel.

    GPL
    Yes I am GPL complaint, all is included inside the sources, including the GPL license itself.

    Thanks
    Huge thanks to Desean for giving me file hosting that makes my life easier :D
    Many thanks to all the Kernel/ROM developers here, especially those with open source kernels on github - LoxK, Cyanogen, Ninpo, Radu and especially Decad3nce.
    Big thanks to all those who helped test the pre versions and reported bugs, specifically also to my long time testers (moonshield and floomat)



    Donations are always welcome and accepted but are in no way required.
    11
    FAQ and Advanced Subjects

    FAQ

    0. When reporting a problem, do I need to include the ROM and exact kernel version I am using?
    YES!

    1. How do I flash the kernel update file?
    You flash it from recovery, like any other custom ROM. If you are not familiar with recovery and/or haven't rooted your phone, start here.

    2. Do I need to wipe anything when installing the kernel?
    No you don't need to do any wipes. Just install the kernel through recovery and reboot :)

    3. The update from recovery failed with errors/warning?
    Please, in the same recovery session which you tried to apply the update and failed, select the "Move recovery.log to SD" from the "Other" menu and post in this thread with the recovery.log attached (for example in a .zip file).

    4. After flashing the kernel my ROM does not boot

    A logcat of the boot process might help me understand the problem. Using adb you can generate one with the following command and attach it to your report:
    Code:
    adb logcat > logcat.txt
    You need to run this command relatively close to the start of the boot. Close the window after the phone is stuck for few minutes (say 2 mins with no change should do). You can start by running "adb logcat" and seeing if you get any output at all. If so, reboot once more and run the above command from the start of the boot (approximately).

    Please also clearly state which ROM you are using and which kernel did work for you (which one did you use before).

    To recover from such a scenario, boot into recovery and restore a backup of your working state. If you do not have a backup, and its the kernel fault, flashing your old kernel should solve the problem.

    5. What min/max frequencies should I choose?

    The short answer: min 176, max 614, if you have wake up issues up the min speed to 264 and then to 352.
    To play with the speeds I suggest you install SetCPU (or similar app), so you can view and change your settings interactively. To change it permanently from the bootup see instructions on first post. You also use options like "Set on boot" in SetCPU if you prefer that.

    The long answer:
    The max frequency will effect the speed and responsiveness of your phone when screen is on. Note, that any speed above 528Mhz is above the specification of the manufacturer, hence is overclocking and could, in theory, shorten the life of your device. At high enough frequencies all devices will stop functioning, the exact threshold depends on your luck with your specific device. From my experience and knowledge, running at stable frequencies (or say one or two steps down to be on the safe side), should not harm your device - of course all overclocking is done at your sole responsibility.
    As far as I know, almost all device can handle 652Mhz, most can reach the 691/710 area and some can even reach higher than the 748Mhz cap of this kernel. To find out which speed your phone supports, use SetCPU (or similar app), start from 614 for example and up the speed one tick a time. Don't select "Set on boot". At each step play with the phone a minute or two. If the phone gets stuck, reboot it (take out battery if necessary) and go one tick down.

    Additionally, note the higher your max frequency the higher the battery drain will be when the screen is on. It is true that the display, data, wifi, gps, etc. should drain much more than the cpu. Still, I recommend staying in the sane frequencies range, no more than say 691Mhz (even if you phone can handle it).

    Finally the min speed will effect standby battery life (when screen is off). From my experience there is a difference in battery life between 19Mhz and 352Mhz min frequencies but it is relatively small (much less than I expected). 19Mhz is not stable for me, almost stable, but over a period of weeks you will probably experience weird and possibly very rare instabilities. For me this was the when playing music with screen off the phone got stuck at 19Mhz (very hard to find this out), and became totally unresponsive until I rebooted it. Therefore, I recommend starting from 176Mhz, and if you have wakeup issues to bring it up. With 352Mhz you should have no wake up issues at all.

    6. I am having wakeup issues (such as unresponsiveness to wakeup, weird coloring after wakeup, screen inversion, caller id not working on wakeup)
    Up the min speed to 264 and then to 352. With a min frequency of 352 you should not have any wake issues.
    See the FAQ #5 above for more information.

    7. I am experiencing bad battery life with FlyKernel

    First, please make sure to reboot the ROM at least one time after you flash the kernel. There have been reports that ROM/kernels behave badly on the first boot.
    Personally, I do not do battery calibration, but if it makes you happy go for it. I do recommend at least charging the battery overnight, or a couple of hours after it has reached 100% to be sure it is full. Then use it, your regular usage for a few days and only then judge the battery life.
    The battery percent indicator, over short periods of time seems extremely inaccurate and its very hard to reach any correct conclusions based on it.
    If you do want to report bad battery life, please state your settings (kernel version, min/max speeds, governor, etc.), over which period you have been testing the battery, under what usage, what is the battery life you are used to having with which kernel and what is the battery life you are experiencing now.

    Note, that roughly speaking, I lose less than 1%/hour when screen is off (wifi, data, gps, etc. also off), and about 10%/hours when just screen is on but phone does nothing at all (again wifi, gps, etc. off). About 20%+/hour when stressing my phone (although I have no data plan so can't test that). I am using the latest FlyKernel @ smartass 614/176.

    8. What size should I give the swap partition?

    short answer: 0.
    long answer: I do not recommend using swap on the hero, hence 0. If you have a very fast SD card, and want to try it, give it say 64Mb. Note that I know of no ROM for the hero which activates swap automatically - you'll need to add a init.d script or something to activate it (see a bit more info here). Let me know if you find a scenario where the swap gives substantial improvement over no swap.
    Finally note that FlyKernel versions before 12 do not support swap.

    9. Should I use ext2, ext3 or ext4 for my ext partition?
    Short answer: ext4. Note that FlyKernel versions before 12 did not support ext4, ext3 is supported since version 10.
    Long answer:
    Previously, I was under the impression that a journaling file system is a very bad idea for flashable storage. I still think its not ideal but better than the other alternative:
    I have been using dual booting, placing an entire development ROM on an ext2/4 partition and using it for development. And when using ext2 it would get errors almost every boot and every couple of days get corrupted to the point I needed to manually restore damaged files to get it working....
    It seems that if you only use it for app2sd, there are very infrequent changes to this volume (only when you install a new app), hence it does not get corrupted. But this also means that ext4, in this scenario, will not pay much overhead because there are very few changes. And in the case there are many changes, if I have to choose between a slightly shorter SD life with ext4 (and then I can finally get a faster one ;)) or risking my data getting corrupted on a daily basis with ext2 - I prefer the first (ext4).

    Questions 10-13 are now obsolete with smartassV2 - see the first post for details about it :D

    10. Do I need a SetCPU (or similar) screen off profile with smartass?
    No, smartass automatically limits the screen on frequency to >= 518Mhz to ensure responsiveness, and screen off frequency to <= 352Mhz to keep standby battery life under control. Much like HTC's perfllock, it does this at the kernel level so it is much better than app level screen off profiles.

    11. Using smartass the CPU frequency does not drop below 518Mhz (with screen on)
    Intentional to ensure responsiveness. From my testing, when screen is on battery drain difference of speeds < 518Mhz is not significant relative to the drain by the screen itself.

    12. Using smartass the CPU frequency does go above 352Mhz (with screen off)
    Intentional to keep standby battery life under control.

    13. Using smartass the CPU frequency is always at its max (or always at 352Mhz when screen is off)
    See "Monitoring the CPU frequency" in the "Advanced subjects".

    14. I am experiencing spontaneous reboots
    Please post, in this thread, with as much detail as possible about the problem.
    Please also attach the last_kmsg, which you can get from example using:
    Code:
    adb pull /proc/last_kmsg

    15. What happend to the BFS version?
    With the FlyKernel-12 scheduler tweaks (CFS scheduler), it surpasses the BFS version in every way. I tried to compile a BFS from the FlyKernel-12 code but even in neocore, in which the BFS was always much better, the new tweaked CFS leaves the BFS in the dust. Hence, I see no reason to continue and build/support a BFS version. The hero-bfs_defconfig is still up to date in my sources if anyone wants to build it themselves.

    *. I am experiencing an issue not covered in the FAQ which I believe is kernel related
    Please post, in this thread, with as much detail as possible about the problem.
    Please also detail why you believe this kernel related. The best "proof" that it is the kernel's fault, is to flash back your old kernel and verify the problem is solved, then reflash the new kernel and verify the problem reappears. In any case please detail the kernel and version(s) on which your are experiencing the problem and those on which you do not.

    Advanced Subjects

    * Monitoring the CPU frequency
    Will rewrite this more clearly. In the meantime:
    http://xdaforums.com/showpost.php?p=9925116&postcount=903
    http://xdaforums.com/showpost.php?p=9929325&postcount=919 <-- Mainly this one!!!
    http://xdaforums.com/showpost.php?p=9989996&postcount=970
    http://xdaforums.com/showpost.php?p=10010110&postcount=990
    10
    I guess you can add "unable to take criticism" to your resumé... not funny

    Sent from my HTC Hero using XDA App

    It really is a shame, some people can't let others leave in peace. If you take the time to check your arguments you would see how wrong you are. Just this morning, after already leaving I spent half an hour preparing something for a dev from a different device who contacted me by PM. All my sources, are and have always been up to date. I have taken literally hours to write guides for devs at all levels so that my work is more accessible to them. Generally speaking, most of my changes have been updated on my github as soon as I did them, a long time before I released them - all this so other developers can see them as soon as possible.

    Anyway enough "defending" myself. As you may have noticed, bellor touched a nerve. I will not visit XDA again, because bellor is completely right about one thing: /me is "unable to take (false) criticism".

    Finally, once again I would like to thank all of you that have supported me and helped with the bug hunting, and for the kind words by most of you.
    9
    After careful consideration, I have decided to take an unlimited absence from android development. My reasons are mainly personal, but I will say that it really is a shame that the hero has talented developers but no real development community. Almost all developers stick to themselves and to some extent, you get the impression they are doing you a favor if they share anything with you. Not to speak about the possibility of working on something together....

    Note to users: I hope you appreciate the enormous efforts and sacrifices the developers are putting in to make your devices run better.

    Note to developers: quit while you can :D

    I might return when I have more time to devout to android development. For my personal shake, I really hope I don't.

    Live well and proper V
    8
    Change log and previous versions

    FlyKernel-13
    - Scheduler tweaks: use the scheduler settings that worked well on flykernel-11c and 12pre6 (tweaked them very very little), responsiveness should now be better than on the FlyKernel-12 release :)
    - Backported the new smartassV2 - now the default :D
    - Added interactiveX governor also
    - A few config changes and compiler optimizations

    FlyKernel 12a (mediafire)
    - Fix wake up issues with new scheduler tweaks
    - Smart update script: make noatime tweak option to (hopefully) solve boot problems
    FlyKernel 12
    - Smart update script
    - Optimized scheduler parameters
    - Fix Usb mass storage after usb tethering (at least on CM ROMs)
    FlyKernel-12pre6
    - Align ext2/3/4 config options
    - Merge small fixes to lowmemorykiller module.
    FlyKernel-12pre5
    - Backport of smd rpcrouter to avs333 request.
    FlyKernel-12pre4
    - Partial fix for the lockscreen flickering when locked/unlocked rapidly (with smartass).
    - Very small tweak to other smartass parameters.
    FlyKernel-12pre3
    - Fixed frequency table according to Radu's comments. Frequencies which are not on PLL2 have been removed!
    - Tweaked smartass to spend more time at the lower frequencies to improve battery life. Also smartass's allergy to 19Mhz has been cured!
    - Some configuration tweaks, mostly sleep related.
    - 528Mhz frequency does not work well with OC, so it has been replaced with 518Mhz which does work fine.
    FlyKernel-12pre2
    FlyKernel-12pre2 optimized for CM based ROMs (default speed 576/352)
    - Added compcache support
    - Added 19Mhz and 264Mhz frequencies
    FlyKernel-12pre1
    - Lower voltages of high frequencies (>= 528Mhz)
    - Added ext4 support (I currently use it for dual booting)
    - Interactive updated (does anyone find it better than smartass? in what scenario?)
    - Smartass fixes and optimizations - should be more responsive now and battery life should (hopefully) still be excellent.
    - Camera backport from .32 (12pre1-cam32)

    FlyKernel-11c
    FlyKernel-11c #66 (Generic)
    FlyKernel-11c-BFS #67 (Generic)
    - Smartass: now wakeups up from sleep first at 528Mhz (no OC), to hopefully help with wake up issues.
    - Bunch of fixes/optimization from CM espresso kernel and from Decad3nce (see github)
    - BFS version :D

    "Optimized Kernel Packages" (only for CM6 based ROMs: Floyo, Elelinux, Froyd):
    Find the appropriate kernel for you by its name in the FlyKernel-11c directory
    The naming conversion is:
    flykernel-11c-CM-<min>-<max>.zip (with boot animation)
    flykernel-11c-CM-<min>-<max>-nologo.zip (no boot animation)
    flykernel-11c-BFS-... (BFS version)

    FlyKernel-11
    - New smartass governor (see technical detail below). Previous governors still supported.
    - Added IPv6 (only for Google Googles?!)
    - Fixes camera freezing CM6-based ROMs (thanks Ninpo for a "code cleanup" which fixed this :))
    - Fixes detection of USB connection during boot on CM6-based ROMs.
    - Various squash-sets imported (see github)
    - NORMALIZED_SLEEPER disabled.

    FlyKernel-10a (rapidshare megaupload)
    - Optimize some sleep/idle code (thanks to ninpo)
    - Add module for IP header compression - hopefully this helps google apps (inspired by ninpo).

    FlyKernel-10a-BFS (rapidshare megaupload)
    - BFS version of 10a.
    - Whats is BFS? see wikipedia and more details here.

    FlyKernel-10
    - Fixes for Froyo ROMs (FroydVillain and Elelinux)
    - Added some more modules inside the kernel (notably using VPN should now work). I am now more aligned with the modules included in other kernels (well mainly ninpo's kernels), so hopefully you should not run into any missing modules.
    I even added support for ext3.
    - Generic update for all ROMs.

    Flykernel-09:
    FlyKernel-09 for VR12,RCMix,ChoclateEclair,Modaco and SuperHero
    FlyKernel-09 for Kimera and Sensehero
    FlyKernel-09 for MMod 1.2.3
    FlyKernel-09 for FroydVillain and elelinux - Beware there are problems with 09 and Froyo ROMs.
    FlyKernel-09 for CM6
    - Added the excellent minmax governor.
    - Removed interactive as it does not behave well at all - just use minmax :)
    - added version which supports the 288M data partition :D - removed now since MAX appears to be fading out - just use dalvik2SD instead.

    FlyKernel-08
    FlyKernel-08 for Froyo and ASOP
    Added Mike Chan's interactive governor, adaptation to Hero by Nadlabak and Ninpo. Added some tweaks of my own - now works well also with big frequency table.
    Tweaked conservative governor for better performance.
    Fixed/cleaned kernel co/nfig and modules - among other things iptables should work fine now.
    Bigger frequency table.

    FlyKernel-05 (BFS)
    BFS version of the FlyKernel-04

    FlyKernel-04
    Based on HTC 2.6.29 official kernel source.
    Includes patchset 2.6.29.6 and various fixes


    Boot OC - Only for Sense based ROMs (The smart update script added in FlyKernel-12 provides a cleaner and better solution for all ROMs)
    Boots very quickly by setting the OC speed right from the start. Also sets the original HTC boot animation which is quicker for most ROMs. Finally, replaces the 09zipalign with 09betterzipalign (again thanks ninpo).
    Please have a backup before you try this, as there is no other easy way to undo this.
    Select the update file according to the speed your phone can handle:
    boot @ 653/160: http://www.multiupload.com/5RAXNJ7AWY (rapidshare megaupload)
    boot @ 672/160: http://www.multiupload.com/RRQ0HYI8O8 (rapidshare megaupload)
    boot @ 691/160: http://www.multiupload.com/20AJV7FLQI (rapidshare megaupload)
    boot @ 710/160: http://www.multiupload.com/WHROUYNGQ6 (rapidshare megaupload)
    Theoretically, this should now work on any ROM and any OC kernel. I have tested the 691 update on VR12 and Froyd 1.4 with my kernel and it works fine. Above files (now with "_" at end of name) updated to also work on ChocolateEclair and hopefully other ROMs on 31/8.
    Note that in my recent kernel versions the lowest frequency is 176, so it will boot with a min frequency of 176.