For the hell of it, I’ve decided to play with the kernel that runs on my Huawei U8150. Like most other Android devices running Froyo, the U8150 comes with a kernel based on Linux version
2.6.32 (to be specific, it’s actually
126.96.36.199-perf). In traditional Linux version numbering, the farther the number is to the right, the less indicative it is of a major update, and more it represents a security or stability fix. Basically, something in the “9” slot isn’t introducing any new features or breaking backward compatibility. The “perf” is just some internal tag Huawei threw in there to make us feel like we have a fancy phone. Do you feel special now?
As Linux is open-source software, I have it in my power to download upstream patches to the 2.6.32 branch and play as much as I like with getting them to compile and run on my device. As of August 13, 2011 kernel.org shows that the 2.6.32 branch has patches all the way up to version
188.8.131.52. Just imagine all the zesty security flaws, performance regressions and general bugs that have been patched since the version of code which is running on our U8150 was released!
Hack hack hack… repeat.
bunzip2 -c patch-184.108.40.206-10.bz2 | patch -p1 bunzip2 -c patch-220.127.116.11-11.bz2 | patch -p1 bunzip2 -c patch-18.104.22.168-12.bz2 | patch -p1 ./compile adb reboot fastboot boot release/noma_20110813v10_boot.img
Not all the patches apply cleanly, but I only saw a few hunks failing, and they didn’t seem to be in relation to anything very critical (remember, Linux runs on at least a dozen platforms, and all we need is ARM support!). Somewhere around 22.214.171.124 I started getting compilation errors, so I stopped at 126.96.36.199. And just so y’all know I ain’t messin’ with you, I have screen shots!
So I feel pretty sweet, but this whole exercise was basically pointless, as the Broadcom 4319 wireless hardware in this phone has closed-source drivers, and the pre-compiled kernel module expects kernel
188.8.131.52-perf. I tried fudging the
EXTRAVERSION in the Makefile but it didn’t work; there must be some incompatibility introduced somewhere in that bunch of patches. Other than Wi-Fi, everything else worked fine (bluetooth, multi-touch gestures, phone calls, 3G data, etc).
Despite this being (practically) a complete waste of time, we have learned that
patch, and friends are fun! It’s all for the lulz anyways, isn’t it?!