Thursday, April 20, 2006

A small utility for controlling the fan

I’ve blogged about power management on my Toshiba Tecra M4 Tablet PC before, and have done a lot of thinking on how I could minimise fan noise and maximise the battery lifetime. I’ve blogged about my favourite program for undervolting and controlling processor speed, Notebook Hardware Control (which I can recommend), and I’ve blogged about discarding the Toshiba Power Management program.

Lately I’ve investigated how I could control the fan speed on my computer to minimise the noise the fan is making (which a lot of people has complained about). I started to dig to see if I could find any tools to remedy this problem. I knew that I wouldn’t install the Toshiba Power Management software again, since it has a bad habbit of interfering with the Notebook Hardware Control.

I found some utilities that claimed to control the fan, but none of them worked on my Tecra M4. So I set out on the journey to create a new utility. First of all I started to search for some system utilities that could provide me with an interface to the functionality I was looking for. I took a sneak peek into the Toshiba Power Management software, and found out that it used some functions in a DLL called TPeculiarity.dll. The dll exposes a few functions that seemed interesting for what I was looking for:

  • GetCoolingMethod
  • SetCoolingMethod

Of course there are no publicly available interfaces to these functions, so all we could do is guess. From previous experiences with APIs, I guessed that GetCoolingMethod would take a pointer to a pointer to an integer and fill it with the correct data on return. Using Visual Studio 2003 and C#, I could quickly create a small test project that verified that my assumptions were correct.

In my next post I’ll give you some more information on how I developed my utility!

No comments: