Monday, 1 October 2012

Android Kernel Development Update

UPDATED 5th October 2012

So, it's been a while since I posted an update.

There are a few reasons for this, mainly real life stuff which has taken the front seat in the past few weeks, such as moving flat and having no DSL connection, but now I have a vDSL connection. :P

I've also taken the time to think about future development plans regarding Android kernel development.

To be quite honest, I've totally lost the motivation to develop Android kernels. There are several reasons for this, the main ones being the development 'community' on XDA and the lack of collaboration.

As this is my blog, I am going to speak freely here, so if you are easily offended, or if your XDA username is faux123, r_data, showp1984*, et al, (you all know who you are) please close the page now, because you will not like the below, and if you don't like it, you know what you can do.

*I made an error here, and I apologise for it. I mistook noobishness, errors of judgement and uncertainty for intentional, malicious actions. Having spoken to showp at length, I don't believe what he has done was malicious or fits into any of the below. The fact is, the stuff I was referring to was quite old and had stuck in my mind because it irritated me at the time, whereas the other 2 individuals mentioned are actively pursuing the below style of development.

To be brutally honest, the XDA community is a fucking shambles. It is full of a plethora of copycats and cherry-picking morons, all trying to pass off their copying as their own innovations. None of them have got any development skills, any ability to logically solve problems, or any common sense what so ever. Yet, unsuspecting users see them as Godlike beings who produce magical things, when in reality all they have done is compiled code written by someone else, which the users themselves could do by following a simple set of instructions, it really is that easy.

Alas, the Godlike aurora that these cherry-pickers emit is bullshit, and any individual with an ounce of common sense knows that, but try telling n00b users that.

There is no collaboration and there is no attempt, whatsoever, to make anything better for the community as a whole. They compete to provide the biggest list of moronic 'features' possible. Their 'work' offers nothing good or useful, and just makes the XDA development community look moronic. The only reason why they do it is for their ego. Perhaps long feature lists makes up for something else which is lacking length, who knows.

The other thing which seriously pisses me off about these morons is their selective adherence to the GPL, even though it isn't their code they are compiling. It really is simple: you release the binary and push code at the same time. You don't release a 'test' release with 'new features' then push the code a week later. That is out of order and you are *not* GPL compliant. And you only do that because you don't want the other cherry-picking morons to cherry-pick the cherry-picks you have cherry-picked. Seriously, why the stupid competition? Nobody gives a fuck, apart from you.

This is pretty much non-existent. Doing something like IDLE2 is not for the faint of heart. It is complicated, it contains a lot of logic, and for the most part it works well, but there are bugs, which I could use some help with, because coding and working so close to the hardware is very new to me. Alas, no help has been forthcoming. Perhaps it is because nobody is interested in the Nexus S anymore. I don't blame them to be honest, it's old and slow, which is why I am selling mine in the next week or so. The fact is though, I embarked on a fairly ambitious project which has been, for the most part, successful. I published my work on XDA hoping that other developers would see the potential and assist, in fact, I actively requested this, but to date, not one person has approached me offering to help with development, which is really fucked up if you ask me.

I can't do it all on my own, I have spent countless hours attempting to fix the outstanding issues, but I can't. Basically, the IDLE2 project is on hiatus as far as I am concerned.

So...that stuff has been boiling up for months, as you probably know from some of my recent posts on XDA. I can't and won't deal with the fact that noise from the moronic crap outlined above blasts away the small amount of real development which takes place on XDA.

Seriously, XDA, sort the shit out. Move these morons into their own subforums or something. Make 'original' development actually mean that, and don't just allow any old cherry-picked crap to reside in there.

Anyway...fuck XDA and it's plethora of pseudo developers.

Some people may think 'well, you aren't exactly a master of kernel development either, you are an arsehole with an attitude problem'.

I totally agree. I'm not. I'm quite n00bish when it comes to writing code, but I try to make things better, I don't do stuff for my ego and I do genuinely do things to try to better the community.
But what is the point in putting countless hours in when it is drowned out by moronic shit and when you receive abuse from moronic users for trying to tell them that their favourite 'developer' is a fake?
As for an attitude problem, appearances can be deceptive. Being intolerant of morons and fakes does not equal an attitude problem. It just means I see past the bullshit, which is a good thing.

Future Plans
Future plans are pretty much to cease 'official' Android kernel development. I won't be releasing any other Android kernel binaries officially via my blog or via XDA. I will announce developments on my blog and may provide binaries to test, but that will be the limits of my Android development.

There *may* be more regular 'unofficial' releases for Nexus Prime and Nexus 7 available in my IRC channel, #thalamus-hacking on FreeNode, but it will be what I'm working on personally.

IDLE2, as previously mentioned, is on permanent hiatus unless somebody assists me with the outstanding bugs, but it would have to be more than just talk to rekindle my interest there, because I've wasted too much time on it already, and I'm not into flogging dead horses.

Nexus S kernel will not be updated any more. It's old, slow and I'm not sure how people use it as a daily device without throwing it against the wall. I couldn't now, it would be too frustrating.

I've been doing a bit of collaboration with morfic with things I'm trying out, so you'll probably find some of my recent work in test Trinity kernels. We have a fairly similar development ethos, slim, fast and no bullshit, so it works well. The fact he isn't a cherry-picking, feature list wanking moron certainly helps. :)

My personal plans are to do more kernel development with 'proper' Linux on development boards such as the PandaBoard. Much of this work will likely be able to be used in Android kernels. This will also mean I will be able to develop with the latest versions of the Linux kernel instead of being constrained to older versions.
Anyone fancy buying me a Versatile Express? ;)

Current development plans

  • ARM auto hotplug driver needs some work.
  • BFS for ARM SMP is currently broken and I would like to fix it as I believe it would be extremely beneficial to multi-core ARM devices.
  • Work on my personal NP an N7 kernels, although the NP one is pretty perfect as is and the N7 one just needs the ARM auto hotplug improvements.
Apologies for the long blah blah blah post, but I really needed to get the above off my chest.

By the way, I look forward to the abuse in the least I'll get a laugh out of it. :)


  1. Thanks thalamus, I enjoyed reading your "blah blah". And hope one day to enjoy your work within the trinity kernel, or yours, on future Nexus devices.

    1. I can't say I blame you for moving on. This noob will miss your kernel on the Nexus S. Hope you know there is a silent following that has only gratitude for the time and effort you put into making our old devices still feel snappy.

    2. If I can get interest in IDLE2 going, I won't kill off the Nexus S kernel development.

      And, I may well do a 'final'? stable release of the Nexus S kernel in the next few days, without IDLE2. I did make a few other changes which I never released in a 'stable' kernel.

      Apart from IDLE2, the Nexus S kernel doesn't need anything else, it's rock solid stable and has all the features I wanted to add anyway.

  2. Thanks for speaking the truth and not fearing it, theres just not enough of it out there. sometimes the truth isnt pleasant, but the fact remains, its still the truth. without it, we have nothing.

  3. My main frustration is with the community, not the users. I think that thanks to the fakes on XDA, the community has become horribly broken. They are like a cancer, destroying the community from within, distorting reality, lying to their users and stopping the real development being recognised by their noise.

    It has frustrated me for ages and only seems to be getting worse. I'm not the only one who has been utterly turned off by this either.
    Perhaps I will rekindle my enthusiasm for Android development and release my work somewhere else, but that is a very big perhaps. I'd rather just concentrate on writing code and development anyway.

    I'm a strong believer in collaboration anyway. More than one mind is better than, well, one mind, specially when you are on a similar page.

  4. I've always wanted to contribute, but still in the process of learning about kernel development.

    Is there a documentation of some sort or discussion thread regarding the logic/design behind IDLE2? I'd like to take a look and see if I can help some way.

    1. There is, but it is horrible out of date because the whole thing changed so much from the time I started, and the documentation lagged behind.

      Most of the info is here but there is a lot to read.

      The main bug is that after IDLE2 has been used, it seems to make suspend less efficient. I have spent an absolute shitload of hours trying all sorts of things to fix this, to no avail.

  5. I really enjoyed reading this. You're regularly on your IRC channel? Would gladly assist in your current projects, they seem pretty interesting :)

    1. I'm franco btw, stupid shit not displaying my Google account name.

    2. lol, you jave to add the reply as(chose google).

    3. I had Google selected but Blogger decided to call me Unknown. Fuck them :)

    4. I'm always on my IRC channel, but not always at the computer. I use a web based IRC which acts as a BNC, so you can leave a message if I'm not about, or just pm me on there.

  6. Hi, I've tried to read the source code of IDLE2. But it's too close to hardware to me. Is there any development documents of IDLE2? I would like to take to look and contribute if i can.

    1. Well, there is the forum thread:

      And the only documentation which I had access to is the S5PV210 TRM, which tells you the basics, but nothing OS specific, which is available here.

      The way I eventually decided to develop it made it use the platform suspend code paths to enter the low power state to save code duplication and reduce the possibility of bugs.

      IDLE2 has always had a bug which made suspend less efficient after it has been used, from the first version onwards. I don't know why or how, because I think I'm doing everything I should be before and after the IDLE2 state has been entered.

      This bug has caused me a mega amount of frustration tbh and wasted a shitload of my time.

      It seems as if SYSCON isn't entering the sleep state correctly after IDLE2 has been used. Sleep state is being entered and is persisting for the usual amount of time, however, power drain is increasing drastically. This suggests to me that the SoC isn't being switched off by SYSCON correctly, but I have no way of confirming that without lower level access.

      I can't really debug this issue without jtag, which is pretty damn impossible on a Nexus S. Maybe I should get a cheap S5PV210 dev board to do it on, I dunno.

  7. I understand you and all of your reasons (perhaps having been writing code for years :-). Hope you will go on outside Xda, and of course best regards ^.O

  8. I understand your frustration and have seen that on your XDA thread too. I generally remain silent but today let me tell you my experience.

    I am not a developer, I tried many kernels, even tried your this version of kernel "_thalamus_kernel-S5PC110-3.0.31-28JB_test-JB-20120810-205044" and even after that I tried many other kernels. But throughout this journey I learned a hard fact, more features don't make phone faster. I picked your above mentioned version of kernel and running it till date. And now I can confidently say that Nexus S cannot give more performance than this.

    You gave Nexus S a new life on JellyBean. You'll certainly be missed. Good luck for your future assignments.

  9. Of course I hope you change your idea and in a few days you'll make a new Nexus S kernel full of useful options like BLN, BNL (I mean the italian/french bank) and ludicrous CPU speed (above 2 Ghz, naturally ... :-D

  10. Sorry to hear you're moving on. I have nothing to do with development, just a ordinary 'user'. I can say, though, that I've been using your kernels for months. They've great-- stable, fast, and efficient. Thanks for all your hard work and good luck to you.