Sunday, 6 September 2015

Panicking Linux kernels and a deleted Windows Store

Hello, anyone who still reads this...

I actually built a linux kernel today, well several in fact.

Linux ulysses 4.2.0-4-desktop #1 SMP PREEMPT Sun Sep 6 14:29:35 BST 2015 x86_64 GNU/Linux

Doesn't it look nice? It's a mildly modified version of the Arch Linux stock kernel to turn some silly shit off, like NUMA and paravirtualisation and hypervisor guest (which all just add pointless overhead), bump to 1000Hz and compile with -march=native.

The great thing is it doesn't panic after most reboots like the Arch 4.1.6 one does...

Funnily enough, I ran their 3.14-lts kernel for a few days and wondered why the interactivity was a bit lacking - it's because it is obscurely compiled with preemption disabled and 100Hz. Crazy...

...but the real point of this post is the following:

If you have Windows 10, and don't want all the shite so called 'modern apps' which come with it, you can execute a PowerShell command (as a normal user, not elevated) which removes them:

Get-AppxPackage | Remove-AppxPackage

Unfortunately it also removes the Store for some obscure reason (you'd have thought Microsoft would have stopped you uninstalling the store, but hey).

It is possible to get it back, and the point of this blog post wasn't to bore people about buggy kernels, it's to record the command so I don't have to look it up the next time:

Get-AppxPackage -AllUsers | Where-Object {$_.Name -like "*store*"} | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}

Sunday, 1 September 2013

Nexus 7 (2013) - potential development

So I decided to buy a Nexus 7 (2013) model when it came out in the UK, after having no Android devices since I spat my dummy out and gave up development about 10 months or so ago.

First thing I've noticed with it is that there are some odd latency issues now and again, and I bet it's related to hotplugging/mpdecision/msm_rq_stats et al. Wouldn't it be great to dump all that shit completely and just use the core C states?

So, I'm gonna dig into it and see what I can do with it, once I've set up a development system and have reminded myself how to build Android kernels.

Sunday, 31 March 2013

Shrinking disk free space with Windows 8

So it has been a while since I blogged, because I haven’t been doing any development. I figured it was stupid to abandon this blog, so I’m going to occasionally blog with things I consider relevant and useful to readers.

So, a couple of days ago I noticed that my free space on my SSD was much lower than it should have been, in the order of about 20GB. I don’t check it particularly often, so I had absolutely no idea how long it had been like that.

I decided to use Disk Usage, which is a simple command line program similar to the UNIX ‘du’ command, but for Windows.

I fired up an administrator command prompt and set to work.


When I did it, I noticed that C:\Windows was 35GB, which I considered to be unusual. So I continued to drill down as per the image below:


I eventually discovered that C:\Windows\System32\config was over 17GB in size.

Navigating to that folder in Windows Explorer showed 18 items, the largest of which was far less than the 17GB reported by du. I displayed hidden items in explorer, and discovered that there were over 46000 old .blf and .regtrans-ms files which hadn’t been automatically deleted by Windows.

They were all dated over a month ago apart from 3 or 4 current ones so I figured deleting all the old ones would be safe, knowing I had a backup image if anything went horribly wrong.

So, after 46000 items were deleted and my SSD was 17GB better off, I did a bit of digging to see if it is a common issue. I found a thread on Microsoft Community which suggests it happens now and again.

As per normal support forums, people have their convictions that some arbitrary act fixed the issue ‘for them’, so it *must* be the problem. Nvidia 3D vision was blamed by one because the files apparently stopped generating themselves after they removed 3D vision, and following that, others automatically started blaming it like a flock of sheep.

I remember that mentality from my kernel development days, and it is pretty unhelpful in getting the problem fixed.

I find it unlikely that Nvidia 3D vision is at fault for the following reasons:

  • I purchased my Nvidia card and installed the drivers, including 3D vision, in December. The 46000 files were all generated in February over a period of a few days, then stopped. All whilst 3D vision was happily installed.
  • How and why would a Nvidia driver stop Windows from dealing with it’s registry backups correctly and how could it possibly interfere with that process anyway?

Personally, I have no idea what caused it, and I wouldn’t really like to speculate. I suspect something was locking files for some reason causing the old backups not to be deleted, as to what, who knows.

So, if you notice a lot of disk space being eaten on a Windows 8 box, check for arbitrary hidden .blf and .regtrans-ms files in C:\Windows\System32\config

Just for info, if it looks like this, it is normal:


Saturday, 10 November 2012

Goodbye XDA, Goodbye Android development

So today I finally requested my XDA account be deleted after toying with the idea for some weeks, although they didn't comply with my request to have everything deleted, posts, threads etc, so I have taken that up with them and will continue until it has all been deleted.

The non-contributing morons who comment from the sidelines have finally got what they wanted, but I feel very good about my decision to leave.
I don't want to be part of a community full of fakes, liars and idiots who contribute nothing who think they can criticise someone who has spent countless hours doing various stuff for the community.

I know I said I was scaling back in the last post I made, but this time, I'm finishing completely. I've utterly lost interest in Android kernel development and pretty much in the entire Android platform.

I don't see the point in spending hundreds of hours on something to be told that I haven't done anything for the community by some prick hiding behind a computer screen who has done *nothing* for the community as far as I can tell.
Or another prick who implied that I had 'given up', as if I *must* carry on developing and releasing kernels without the option of stopping development on a frustratingly slow, laggy and obsolete device.
I'm sorry, but with all due respect you people have a lot to learn about what you can and can't expect, mostly about what you can't expect. Stop demanding things of people who *give* their time, their life and their energy for free. It's unfair, cheeky and downright insulting.
Take a look at your own conduct first and foremost, then realise why I bite and come across as apparently 'arrogant and egotistical'.

Anyway, I have always believed that the bigger, better person knows when enough is enough and moves on to better things. It's pointless trying to change the unchangeable or fix what is utterly broken, it just makes you look foolish, and I am no fool.

Moving on is exactly what I am doing and I feel surprisingly good about it, like a rather large weight has been lifted off my shoulders.

I'll be deleting all the uploaded binaries and making my public git repos private or deleting them either later today or tomorrow, so if you want anything, download or fork it now, because it'll be gone otherwise.
The reason why I am doing this is that there is not much point in leaving my binaries and source out there when it doesn't contribute anything to the community, and apparently never has. That would be foolish.

I would like to apologise to the people that have been supportive, have helped and haven't made unwelcome comments or criticisms from the sidelines. The thing is, I never really wanted to do public releases and the attention and demands caused me to completely burn out.

I started kernel development because I wasn't happy with what was on offer and wanted some changes.

I started projects like IDLE2 for something to do because I was off work sick with severe depression and had a ton of time on my hands and needed to occupy my brain, although I ended up heaping too much on myself. The moron that claimed that it was 'just' a port clearly hasn't looked at the code, or he doesn't understand it. It's about 10% port and 90% original after I rewrote it several times in the pursuit of perfection, so put that in your pipe and smoke it...

I didn't start it to be bitched at, demanded on, criticised for my alleged 'lack of contribution' or otherwise because I do that to myself anyway and don't need help there.

By the way, I've got a Galaxy Nexus for sale if anyone wants one.


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. :)

Friday, 10 August 2012

Future development plans…

I've made an executive decision to roll back to 3.0.31 for the next crespo (Nexus S) release and not apply any mainline patches. This will also give me chance to clean the garbage out of my git which I should have never carried over from the ICS kernel.

There are a few reasons for this:

  1. Mainline stable updates often introduce subtle issues/bugs. I can recall many bugs which have been introduced by merging mainline ‘stable’ code.
  2. They are of little benefit, if any benefit at all to our phones. If you look through a lot of the fixes in mainline stable, it's all for very large systems. All those 3.0.39 mm patches for instance, after looking through them all, they are all for huge systems and will not benefit our devices in the slightest.
  3. Mainline stable has become a complete farce, with far too much code being merged. There are far too many updates, there is far too much code churn. It is supposed to be stable, updates should be small, infrequent and well tested to fix critical bugs or security issues only, but that appears to have been forgotten, with new features being added, unnecessary code refactoring, and general churn that shouldn’t be happening.

My tests on maguro (Nexus Prime) show that between 3.0.31 and 3.0.40, boot time slowed by 4 seconds, which is approximately 15% on that device. This doesn't make me happy, and although I haven't tested specifically on crespo (Nexus S) yet because I’m still waiting for it back from repair, I expect the impact to be just as severe.

And this slowdown is for what benefit? Extra subtle bugs. Having the latest version number. Meh.

As regards user experience, the .31 kernel certainly 'feels' quicker than the .40 kernel on maguro, and 'feel' and perception is what it is about as far as I am concerned.

So, from now on, I won't be applying any mainline stable updates to any of my 3.0 based kernels, except patches for exploitable critical security vulnerabilities.

Latest is certainly not always best, especially when there is as much code churn as there is within the 3.0 kernel.

Saturday, 4 August 2012

Stable Nexus S kernel release 3.0.39-27 (ICS & JB)

So, finally another stable release. This is the first stable release for JB and will be the final release for ICS.

As per usual, my releases aren’t about pointless features. They concentrate on stability and performance.

The most interesting thing about this release is the memory management performance backports which were merged into 3.0.39.

Changelog compared to 3.0.36-14:

  • For ICS, base as is per 3.0.36-14. For JB, base is AOSP 3.0.31 merged up to 3.0.39 from mainline.
  • Various other compiler warnings have been fixed
  • Interactive governor with interactivity boost now in use instead of ondemand as it provides a smoother user experience on JellyBean and apparently also on ICS.
  • Fixed a NULL pointer dereference in the i2c code which was causing occasional kernel panics for some users.


  • Deadline I/O scheduler adjusted for flash for lowest I/O latencies
  • Config: As stock AOSP with the following modifications: Deadline I/O scheduler, Interactive CPU governor, Tiny Preempt RCU, Voodoo sound, cifs, utf8
  • Wifi PM_FAST for bcm4329 (ICS) and bcmdhd (JB)

Features not implemented for this release:

  • IDLE2 – although the code / implementation is stable, there are some issues with the actual powersaving which is being attained, or not, as the case may be due to a bug which I haven’t found yet. Bricking my Nexus S didn’t help with that either, so IDLE2 development is paused until I get by Nexus S back from repair

ICS, JB and i9023 version available here.