[DEV] Las Venturas - 2.6.35 kernel port for Hero // Version: 1.2 - 13 May

Search This thread

riemervdzee

Retired Recognized Developer
May 27, 2010
593
292
Dokkum
Introduction

After a year of developing, with many stalls due to studying, we finally reached a stable state with the 2.6.35 kernel port. It is a quite honour to introduce you all to the Las Venturas kernel for the GSM Hero. It is a kernel based on the Cyanogenmod sources with updates coming from the AuroraCode forums. (those lads from Aurora are just geniuses) The main idea behind the Las Venturas was well, a fun project. Let's be honest ;) I love deving new things and this is a really a nice project. We always strife to get the best out of our phones and the kernel has a big influence on it.
The 2.6.35 kernel adds speed improvements but in general it provides more functionality than the 2.6.29 kernel (based on the official HTC sources). It also has newer drivers for the Framebuffer (speed), adds ext4, better USB stack for our ARM devices.

Instructions
Go to your favourite recovery. Always wipe dalvik-cache!. Flash the kernel like any other update.zip, reboot and take a coffee while it is booting. Well done! High five yourself, as you just installed 2.6.35 for your Hero!

Downloads
Las Venturas version 1.2
http://www.mediafire.com/download.php?7r5rcr70mh3ynb3
md5sum: c37c43566cf882f21d0f1dde9afeb37d

Las Venturas version 1.1
Links:
http://www.mediafire.com/download.php?p3csh7sajbolp13
md5sum: 25d0fad0ac42ebf20be47f97c0511406

Las Venturas version 0.5.0
links:
http://94.23.152.245/xda/rmr/Las_Venturas-0.5.0.zip (thanks to wupper!)
http://www.multiupload.com/U6KYEOCWEE
md5: fa1d0b5767caa68152fe8166a7f74f4b

The big compare list

Current advantages:
  • full ext4 support
  • Newer overlay code, apps tend to be displayed faster than the original .29 kernel
  • Newer usb-code, more suitable for newer ROMs like Gingerbread and ICS than the .29 kernels
  • More stable GPS (no more reboots!)
  • General faster IO than 2.6.29
  • Less latency for playing sound/music
  • For the rest, it contains newer drivers for a lot of stuff. As it is a 2.6.35 kernel of course ;)
Current disadvantages:
  • USB is experimental. Usb-tethering might not work, for non-sense ROMs you can try Erasmus fix
  • SD-card IO is slightly slower than flykernel (around 0.5%)

Change-log
Changes of last Version 1.2:
  • Faster general IO output
  • Fixed some bugs concerning SD speeds
  • Fixes to the interactive governor
  • Newer vibration-code, less latency (small impact, but everything is welcome)
  • Ashmem flushing fix
  • Code cleanup
Full log:
https://github.com/riemervdzee/hero-kernel-2.6.35/wiki/Changelog

Source code
Config used is found under kernel/arch/arm/config/hero_defconfig
https://github.com/riemervdzee/hero-kernel-2.6.35 (0.5.0 and above)
https://github.com/riemervdzee/cm-kernel (Older repository. For pre 0.5.0 versions)

Thanks list:
--> Elemag -- Initial start of this project, great advisor and debugger :)
--> s0be -- working on the .35 fork of this project for the Hero CMDA. Good to see another dev'er at work, always inspirational
--> Erasmux -- For his flykernel and his work on getting the .35 to work
--> Ninpo -- Initial start of this project
--> Feeyo -- For general fixes. Great mentor to linux/kernel programming
--> And of course all CyanogenMod lads working on the CM-kernel

Note that I hijacked Elemag's thread (he first opened this topic). So things might sound a bit wrong if you read the first pages ;)
 
Last edited:

erasmux

Retired Recognized Developer
May 22, 2010
1,437
455
Las Venturax

This post will contain the releases I do until Riemer has time to catch up with me: (Unless I see me and Riemer would like to go in different directions with this kernel I don't want to open another thread for "my" versions)

Las_Venturax-0.6.2.zip (mediafire) (multiupload)
  • Scheduler tweaks (restored latency to 6ms and enabled hrtick - this time for real!)
  • SmartassV2: a few bug fixes.
  • Some upstream updates (thanks arco)

This is a generic "smart updater package" which can also be used to do OC from boot, as explained in my FlyKernel post under
Boot OC and optional tweaks (first post).

USB tethering on this kernel is different from the .29 kernels most ROMs are compatible with. Fixes for CM6/7 are found on post #1029.

More information about SmartassV2 (for users) can be found on my FlyKernel post.

ROM Developers

Developers aiming to integrate this kernel into their ROMs, might find it more convenient to use the following regular update package as a reference:
Las_Venturax-0.6.2-Floyo.zip
In this package the kernel's ramdisk is the one compatible with Floyo 1.4.

If you prefer to recompile the kernel yourself, you are very welcome to do so, but please share your updated sources. Obviously you are changing something (maybe very very small) otherwise why are you recompiling it? Please share with us what changes do you find to work better for you. You are also required to this by the GPL license of the kernel.

Previous versions:

Las_Venturax-0.6.0.zip (multiupload)
  • Tweaked scheduler parameters (lowered latency to minimum - ROM developers please do NOT overwrite the scheduler params in your init.rc)
  • Added smartassV2 governor as the new default governor - more details below (since 0.5f, tweaked built in sleep in 0.6.0)
  • Added interactiveX governor (since 0.5c)
  • Some compiler optimization (stable since 0.5e)
  • Fix for jogball notification (since 0.5a)
  • Use frequency table from fly kernel (since 0.5a)
  • Based on Las Venturas 0.5.0

Las_Venturax-0.5f.zip (multiupload)
  • Added smartassV2 governor (set as default)

Las_Venturax-0.5e.zip
  • Added "Wireless RNDIS" - could this fix usb tethering?
  • Tweaked compiler optimizations and moved to new toolchain

Las_Venturax-0.5d.zip
This version is a "quick fix" version trying to solve the stability issues (spontaneous reboots) reported with the 0.5c version. Only thing is I have no idea what is causing these problems so this is really a bit of a shot in the dark. Please report any stability issues, and if possible also state which ROM, what you where doing at the time and for spontaneous reboots attach a last_kmsg (i.e. "adb pull /proc/last_kmsg"). Thanks in advance to all the testers.
  • Reverted part of the compiler optimizations from 0.5c.
  • Back to NOOP scheduler
  • Default governor back to smartass. interactiveX is still available and I am still very interested in feedback regarding it.
  • Additional kernel config tweaks.

Las_Venturax-0.5c.zip
  • Added interactiveX governor by Imoseyon - for now this is the default governor (most likely a temporary situation).
  • Use BFQ I/O scheduler
  • Voodoo compilation optimizations :)
  • Fix for cpufreq time_in_state (i.e. SetCPU frequency counters) - broken only in 0.5a version (commit).

Note regarding the "new" interactiveX governor:
From a very quick look at its code, this governor looks promising to me, and I hope that it might provide better battery life over the current alternatives.
I am very interested to hear about the battery and performance with this governor vs. smartass and/or ondemand.

Some philosophical discussion on the subject:
It seems there are quite a lot of smartass/interactive variants out there (in kernels for other devices). I also have some ideas of my own, that will hopefully manifest into a new governor someday soon (smartassV2?).
In the meantime, interactiveX seems relatively close to smartass (also discriminates between screen on/off states), and to the best of my current understanding, in theory, given the parameters I have selected for it, I hope it might improve battery life.

Las_Venturax-0.5a.zip
  • Fix for jogball notification (commit)
  • Use frequency table from fly kernel
  • Based on Las Venturas 0.5.0

All changes are on my github.

Cudos to riemervdzee for all his hard work on this excellent kernel, as well as to all others who have helped to develop and test this kernel.
 
Last edited:

Hacre

Retired Senior Recognized Developer
May 29, 2010
1,323
2,076
Northwich
Yeah any and all kernel devs, get on this. I was supposed to be working on this with Elemag but Froyd has been eating my time. Hopefully one more release should get it "stable" so I can get back onto this.

Elemag has done fantastic work.
 
D

Deleted member 2500726

Guest
Hmm seems like there is already a .34 kernel for the G1. Damn them:p
 

erasmux

Retired Recognized Developer
May 22, 2010
1,437
455
Hello,
A lot of things are already working, including:
MTD
usb
adb
charger/battery
display
keypad+trackball
...and probably most thing not mentioned as not working

Do you have a config file with adb working, I am stuck with no ADB using the hero_defconfig.
Also which ROM do you use for testing with this kernel? EDIT: to be more precise, I am mostly interested in the ramdisk you are using to get ADB to work.
Any other ideas how I can get adb to work?
 
Last edited:

mr.bang

Senior Member
Jan 19, 2010
314
5
32
Verona
Do you have a config file with adb working, I am stuck with no ADB using the hero_defconfig.
Also which ROM do you use for testing with this kernel? EDIT: to be more precise, I am mostly interested in the ramdisk you are using to get ADB to work.
Any other ideas how I can get adb to work?

quote. i'm very interested
 

erasmux

Retired Recognized Developer
May 22, 2010
1,437
455
Do you have a config file with adb working, I am stuck with no ADB using the hero_defconfig.
Also which ROM do you use for testing with this kernel? EDIT: to be more precise, I am mostly interested in the ramdisk you are using to get ADB to work.
Any other ideas how I can get adb to work?

Played a bit with the config and I finally got it working. Would still appreciate the config file you are using.
 

Elemag

Senior Member
Oct 20, 2009
221
10
I am using the ramdisk from CM6 default boot.img. The config is hero_defconfig. Testing it under my own CM6 build which should be more or less the same as the CM6-nightlies.
 

Decad3nce

Retired Forum Mod / Inactive Recognized Developer
Feb 19, 2010
2,086
2,762
Way awesome. Great job. I'm not too well versed in all this but I'd love to lend a hand as well.
 

erasmux

Retired Recognized Developer
May 22, 2010
1,437
455
Please guys, post here your improvements, your tweaks ecc ecc ;)

Yeh a "tweak" which would make the rest of the hardware actually work would be nice.... We are still far from getting this kernel to a usable state. Let first concentrate on this.

I personally, have done a massive porting of code from the .29 kernel which has obviously resulted in the kernel not booting now - yippee :D Now working on trying to get it to boot which could takes anything between days and never.... Is there any way to debug the kernel boot if adb is not working?!

Anyone else working seriously on this?
 

Elemag

Senior Member
Oct 20, 2009
221
10
You can boot, then reboot into a working kernel and pull /proc/last_kmsg if you can't get to adb. It would be nice if you post the output to pastebin and link it here :) .

As for the massive porting from .29 -- I think that the microp driver needs to be ported first, cause it is probably the bottleneck right now.

I found that the touchscreen driver initializes as /devices/virtual/input/input0 but on the .29 kernel it is input1 and input0 is the headset. I don't know if this can cause it not to work though.

If you have building problems, write to me, preferably in github. I don't have time to work much on this, because I am trying to make my diploma, but will surely take a look if someone has an idea.

Anyway, getting the touchscreen to work will be a breaking point :)
 

erasmux

Retired Recognized Developer
May 22, 2010
1,437
455
I actually started working on the SD card not being recognized (seemed easier than fixing the touchscreen or so I thought). Somehow got pulled in to porting a whole lot of code from the .29 kernel's arch/arm/mach-msm directory....
I'll try the last_kmsg thing sounds very usefull :)
 

Hacre

Retired Senior Recognized Developer
May 29, 2010
1,323
2,076
Northwich
Guys I think porting more and more stuff forward from .29 is a bad idea. Instead the stuff we -need- should be adapted for 2.6.34. Otherwise we're going to end up with some messy 2.6.29/34 hybrid. Everything we need is there in the kernel apart from specific drivers, otherwise 2.6.34 wouldn't work with the G1, however it does.
 

erasmux

Retired Recognized Developer
May 22, 2010
1,437
455
Guys I think porting more and more stuff forward from .29 is a bad idea. Instead the stuff we -need- should be adapted for 2.6.34. Otherwise we're going to end up with some messy 2.6.29/34 hybrid. Everything we need is there in the kernel apart from specific drivers, otherwise 2.6.34 wouldn't work with the G1, however it does.

I was obviously talking only about drivers....
 

Top Liked Posts

  • There are no posts matching your filters.
  • 30
    Introduction

    After a year of developing, with many stalls due to studying, we finally reached a stable state with the 2.6.35 kernel port. It is a quite honour to introduce you all to the Las Venturas kernel for the GSM Hero. It is a kernel based on the Cyanogenmod sources with updates coming from the AuroraCode forums. (those lads from Aurora are just geniuses) The main idea behind the Las Venturas was well, a fun project. Let's be honest ;) I love deving new things and this is a really a nice project. We always strife to get the best out of our phones and the kernel has a big influence on it.
    The 2.6.35 kernel adds speed improvements but in general it provides more functionality than the 2.6.29 kernel (based on the official HTC sources). It also has newer drivers for the Framebuffer (speed), adds ext4, better USB stack for our ARM devices.

    Instructions
    Go to your favourite recovery. Always wipe dalvik-cache!. Flash the kernel like any other update.zip, reboot and take a coffee while it is booting. Well done! High five yourself, as you just installed 2.6.35 for your Hero!

    Downloads
    Las Venturas version 1.2
    http://www.mediafire.com/download.php?7r5rcr70mh3ynb3
    md5sum: c37c43566cf882f21d0f1dde9afeb37d

    Las Venturas version 1.1
    Links:
    http://www.mediafire.com/download.php?p3csh7sajbolp13
    md5sum: 25d0fad0ac42ebf20be47f97c0511406

    Las Venturas version 0.5.0
    links:
    http://94.23.152.245/xda/rmr/Las_Venturas-0.5.0.zip (thanks to wupper!)
    http://www.multiupload.com/U6KYEOCWEE
    md5: fa1d0b5767caa68152fe8166a7f74f4b

    The big compare list

    Current advantages:
    • full ext4 support
    • Newer overlay code, apps tend to be displayed faster than the original .29 kernel
    • Newer usb-code, more suitable for newer ROMs like Gingerbread and ICS than the .29 kernels
    • More stable GPS (no more reboots!)
    • General faster IO than 2.6.29
    • Less latency for playing sound/music
    • For the rest, it contains newer drivers for a lot of stuff. As it is a 2.6.35 kernel of course ;)
    Current disadvantages:
    • USB is experimental. Usb-tethering might not work, for non-sense ROMs you can try Erasmus fix
    • SD-card IO is slightly slower than flykernel (around 0.5%)

    Change-log
    Changes of last Version 1.2:
    • Faster general IO output
    • Fixed some bugs concerning SD speeds
    • Fixes to the interactive governor
    • Newer vibration-code, less latency (small impact, but everything is welcome)
    • Ashmem flushing fix
    • Code cleanup
    Full log:
    https://github.com/riemervdzee/hero-kernel-2.6.35/wiki/Changelog

    Source code
    Config used is found under kernel/arch/arm/config/hero_defconfig
    https://github.com/riemervdzee/hero-kernel-2.6.35 (0.5.0 and above)
    https://github.com/riemervdzee/cm-kernel (Older repository. For pre 0.5.0 versions)

    Thanks list:
    --> Elemag -- Initial start of this project, great advisor and debugger :)
    --> s0be -- working on the .35 fork of this project for the Hero CMDA. Good to see another dev'er at work, always inspirational
    --> Erasmux -- For his flykernel and his work on getting the .35 to work
    --> Ninpo -- Initial start of this project
    --> Feeyo -- For general fixes. Great mentor to linux/kernel programming
    --> And of course all CyanogenMod lads working on the CM-kernel

    Note that I hijacked Elemag's thread (he first opened this topic). So things might sound a bit wrong if you read the first pages ;)
    9
    Las Venturax

    This post will contain the releases I do until Riemer has time to catch up with me: (Unless I see me and Riemer would like to go in different directions with this kernel I don't want to open another thread for "my" versions)

    Las_Venturax-0.6.2.zip (mediafire) (multiupload)
    • Scheduler tweaks (restored latency to 6ms and enabled hrtick - this time for real!)
    • SmartassV2: a few bug fixes.
    • Some upstream updates (thanks arco)

    This is a generic "smart updater package" which can also be used to do OC from boot, as explained in my FlyKernel post under
    Boot OC and optional tweaks (first post).

    USB tethering on this kernel is different from the .29 kernels most ROMs are compatible with. Fixes for CM6/7 are found on post #1029.

    More information about SmartassV2 (for users) can be found on my FlyKernel post.

    ROM Developers

    Developers aiming to integrate this kernel into their ROMs, might find it more convenient to use the following regular update package as a reference:
    Las_Venturax-0.6.2-Floyo.zip
    In this package the kernel's ramdisk is the one compatible with Floyo 1.4.

    If you prefer to recompile the kernel yourself, you are very welcome to do so, but please share your updated sources. Obviously you are changing something (maybe very very small) otherwise why are you recompiling it? Please share with us what changes do you find to work better for you. You are also required to this by the GPL license of the kernel.

    Previous versions:

    Las_Venturax-0.6.0.zip (multiupload)
    • Tweaked scheduler parameters (lowered latency to minimum - ROM developers please do NOT overwrite the scheduler params in your init.rc)
    • Added smartassV2 governor as the new default governor - more details below (since 0.5f, tweaked built in sleep in 0.6.0)
    • Added interactiveX governor (since 0.5c)
    • Some compiler optimization (stable since 0.5e)
    • Fix for jogball notification (since 0.5a)
    • Use frequency table from fly kernel (since 0.5a)
    • Based on Las Venturas 0.5.0

    Las_Venturax-0.5f.zip (multiupload)
    • Added smartassV2 governor (set as default)

    Las_Venturax-0.5e.zip
    • Added "Wireless RNDIS" - could this fix usb tethering?
    • Tweaked compiler optimizations and moved to new toolchain

    Las_Venturax-0.5d.zip
    This version is a "quick fix" version trying to solve the stability issues (spontaneous reboots) reported with the 0.5c version. Only thing is I have no idea what is causing these problems so this is really a bit of a shot in the dark. Please report any stability issues, and if possible also state which ROM, what you where doing at the time and for spontaneous reboots attach a last_kmsg (i.e. "adb pull /proc/last_kmsg"). Thanks in advance to all the testers.
    • Reverted part of the compiler optimizations from 0.5c.
    • Back to NOOP scheduler
    • Default governor back to smartass. interactiveX is still available and I am still very interested in feedback regarding it.
    • Additional kernel config tweaks.

    Las_Venturax-0.5c.zip
    • Added interactiveX governor by Imoseyon - for now this is the default governor (most likely a temporary situation).
    • Use BFQ I/O scheduler
    • Voodoo compilation optimizations :)
    • Fix for cpufreq time_in_state (i.e. SetCPU frequency counters) - broken only in 0.5a version (commit).

    Note regarding the "new" interactiveX governor:
    From a very quick look at its code, this governor looks promising to me, and I hope that it might provide better battery life over the current alternatives.
    I am very interested to hear about the battery and performance with this governor vs. smartass and/or ondemand.

    Some philosophical discussion on the subject:
    It seems there are quite a lot of smartass/interactive variants out there (in kernels for other devices). I also have some ideas of my own, that will hopefully manifest into a new governor someday soon (smartassV2?).
    In the meantime, interactiveX seems relatively close to smartass (also discriminates between screen on/off states), and to the best of my current understanding, in theory, given the parameters I have selected for it, I hope it might improve battery life.

    Las_Venturax-0.5a.zip
    • Fix for jogball notification (commit)
    • Use frequency table from fly kernel
    • Based on Las Venturas 0.5.0

    All changes are on my github.

    Cudos to riemervdzee for all his hard work on this excellent kernel, as well as to all others who have helped to develop and test this kernel.
    9
    New flashable:
    http://94.23.152.245/xda/rmr/rmr35-015.zip (thanks to Wupper!)
    http://www.multiupload.com/43Q8P72MDN

    What should work:
    - headset via jack. Could anyone test whether the buttons on headsets and microphone work?
    - lightsensor
    8
    I finally got some time again for deving the next week. Since the OneX sources ain't out yet I decided to play a bit again with the Hero kernel. Are there still people who use it btw? ;)

    Cheers, R
    8
    I'm really happy of the progress today :) ported lots of stuff today, gpios are now handled correctly and there isn't a device-specific version for it. Sound is now ok, microphone also works. Even (bit unexpected tbh) WiFi :)
    Will be using this as my daily kernel I think. Best way to test stuff and there aren't anymore reboots lately.

    not working:
    green/red led and trackball led. Disabled, caused random reboots when blinking (microp driver)
    lightsensor. Disabled, causes the whole system to hang @ boot (microp driver)
    Camera. Preview-mode works, but taking pictures makes the whole thing "hang"
    Bluetooth. No idea on this one...
    all audio jack stuff, H2W is not correct.
    accelerometer (bma150 driver, included but needs updating)

    Link to flashable for the interested, should be for all ROMs:
    http://www.riemervanderzee.com/download/kernel-signed.zip

    Anyway now comes the harder stuff. The rewriting parts of drivers:
    - microp_i2c which handles all the leds and lightsensor stuff is a mess and unfortunally doesn't work.
    - accelerometer doesn't work at all? haven't had any look at it.
    - Maybe do something with the camera one?
    - qdsp5_comp has some more functions than qdsp5, however soundinput doesn't work on that one (null exception).