Saturday, September 13, 2008

EEE PC: Speed boost with modern kernels

If you are at all like me, you are probably not satisfied with the 70mhz "front side bus" speed of your eee PC 701 (2G/4G Surf). These has long been a module available which you can install to control the fsb speed and crank it from the default 70mhz to the full 100mhz. The difference is noticeable *immediately*. Especially of you are running Firefox with a streaming video (like YouTube clips).

Lately there has been a lot of talk about Ubuntu Intrepid. This is the next generation of Ubuntu, still currently in development. A week or so go I installed Intrepid and took it for a spin. While it seems to "work" on the eee PC there were still a few glitchy items. Such as, the Atheros WiFi nick is supported "out of the box". But for it to work, you have to disable the vendor specific driver that it chooses as a default. The new WiFi driver of choice is "ath5k". This is replacing what will soon be the deprecated madwifi driver. I must say, this new WiFi drive alone was worth the upgrade. But what about that eee.ko module for my higher bus speeds?

First, know that the code for the FSB speed boost is completely experimental. The author of the code warns that overclocking can cause undesired performance (such as freezing) and could also overheat your system. For that matter, the same code can be used to control the speed of the one and only system fan. Bottom line: do not slow it down!

You can get the code here: http://code.google.com/p/eeepc-linux/

If you are running the 2.6.27-2 kernel aka the 2.6.27-2-generic you will have issues. I did some digging and found this discussion taking place in a bug report. It seems that you can compile the module by changing all occurences of "&proc_root" with "NULL". I went through these steps and was able to compile the driver cleanly. If you would like to just download my module for the 2.6.27-2 kernel, you can grab it here. Or, to read the conversation I had with other folks in the eee User forums, you can check this out.

But then yesterday I ran an update check and saw that there was a new kernel released. I just had to have it since I am living on the bleeding edge of technology. Of course, I had some concerns about being able to compile my front side bus hack again. And as it turns out, I was justified in my paranoia. With the new kernel installed (and my 4G of flash practically gone) I was not able to compile the eee.ko module. Piss!

Now this kept me up a bit late last night, but I was able to get it to work. When compiling, I was being told that I was missing an include file called "bounds.h". It seems that this is only generated when you actually build a kernel. Now, this is usually included with your kernel-headers package because they know you need it to build a few things. Why was it left out? It must have been an oversight. After all, this is all experimental.

In an effort to generate that bounds.h file I downloaded the kernel source, ran a "make mrproper", a "make oldconfig" and then a "make". Then I made my way off to bed. When I woke up ... my build had failed because my drive was out of space. Piss! But then I found that the one file I needed had been generated. Woo-hoo!

Now, if you came here for the eee.ko module built against the 2.6.27-3 kernel, aka the 2.6.27-3-generic kernel, you can grab it here. That archive includes the bounds.h file which is only about 10 lines long. I don't think anyone else has been crazy enough to mess around in this realm, butI shared my findings with the masses here.

Links of interest on this topic:
eeepc-linux-2.6.27-2-generic.tgz
eeepc-linux-2.6.27-3-generic.tgz
An old but still very useful Blog post about this driver

No comments:

Post a Comment