# thinkpad t40, fan never shuts off

## blamothe

i have a thinkpad t40, and one of the reasons that i bought it was that it was centrino, which ment it ran cooler, which also meant that the annoyingly loud fan won't run as much.  when i installed linux on the thing, the fan constantly runs, but when it was in windows, it never did.  i think this is an acpi issure, but i have no idea how to use acpi.  is there any way i can get this fan to shut off when it doesn't need to run, and have the same behavior as it does in windows?  thanks

----------

## ozonator

I'm not an ACPI expert either, but one thing that comes to mind:  have you enabled cpu frequency scaling support in your kernel?  And, do you use something like cpudyn to throttle the cpu when it's idle?  If your cpu is running at full speed all the time, chances are what's happening is that your cpu is staying hot enough that the fan needs to be on constantly; if it slows when your system is idle, it will run much cooler, and likely require less help from the fan.

----------

## metalac

In kernel config there is also a FAN option.  This is what makes fan not run all the time on my Sony laptop.  If that doesn't help try getting the latest acpi patch from http://acpi.sf.net.

----------

## Diorf

you could try to use apm instead of acpi. On my T40p I use acpi and when I am on battery power the fan never comes in use.

I use cpufreqd to control the cpu speed and my laptop runs smoothly and I can still make it sleep and hibernation from the bios also work.

Use the SpeedStep Centrino to control the cpu frequency and add the powersave and performance governor.

You can then use /proc/cpufreq to view the current state of the processor and control it's frequency scaling

----------

## blamothe

i tried cpudyn and cpufreqd, loaded them each, one at a time, at runlevel default, then i tried to reboot and start x and let the computer sit there doing nothing.  each time, the fan would come on after about 4 or 5 minutes.  how do you use SpeedStep Centrino to control the cpu frequency (i am assuming this is in cpufreqd.conf).  also, there was no entry:  /proc/cpufreq.  this could be because i am using 2.6.0.  is there any other place that this could be, and if this fails, are there any other suggestions on how to get this fan to shut off?  thanks.

----------

## ozonator

 *blamothe wrote:*   

> i tried cpudyn and cpufreqd, loaded them each, one at a time, at runlevel default, then i tried to reboot and start x and let the computer sit there doing nothing.  each time, the fan would come on after about 4 or 5 minutes.  how do you use SpeedStep Centrino to control the cpu frequency (i am assuming this is in cpufreqd.conf).  also, there was no entry:  /proc/cpufreq.  this could be because i am using 2.6.0.  is there any other place that this could be, and if this fails, are there any other suggestions on how to get this fan to shut off?  thanks.

 

There are kernel options for enabling cpufreq support; in 2.6, it's under Power management -> CPU frequency scaling.  You'll need to enable freqency scaling and appropriate other options in that submenu (i.e., /proc/cpufreq interface, frequency table helpers, performance governors, and a driver for your CPU, which for you presumably would be Intel Enhanced Speedstep for a Pentium M).

As for cpufreq and cpudyn, use only one of them, since they both try to do the same thing:  adjust CPU frequency according to system load.  Of the two, cpudyn is less flexible but easier to config, and likely good enough for most uses.  Once you're sure you've booted with a kernel with the right options for cpufreq, start cpudyn and keep an eye on your cpu speed (in /proc/cpuinfo); if all is well, the speed will drop after your system is idle for a couple of seconds.

Best of luck!

----------

## blamothe

all this has helped alot, and the speed has droped considerably (from 1.4 ghz to 598 mhz), but the fan still doesn't shut off.  since the cpu is running so slow, i don't think thats whats keeping the fan on like that, but i am not sure what is.  does anyone have any other ideas?

----------

## Hypnos

I have the ACPI fan functionality as the module "fan", and this seems to work quite nicely on my machine.

You should check out the ACPI mailing lists -- they're quite friendly and helpful.

(Of course, before that, please read the docs on their website   :Wink:  )

----------

## NiXZe

Nothing in /proc/acpi/fan on a IBM ThinkPad T40p :<

----------

## Hypnos

Maybe disable/unload "thermal"?  Apart from that, you might have a buggy ACPI BIOS, which is a whole 'nother can of worms ... there are HOWTOs here on the forums and on the ACPI website.

----------

## blamothe

i've looked and looked, and still nothing.  i've enabled cpufreq support, compiled everything in along with every acpi module, and used both cpufreq and cpudyn, which both work fine at scaling the cpu frequency by the way, but the fan still never stops.  i sometimes notice that the fan stays on when the processor is running at 600 mhz and the temperature is 86 degrees F.  there has got to be some way to fix this, or some driver/module that i am just not enabling that i should.  under windows, the fan almost never comes on, so i don't think that its a hardware issue, i just think that some linux driver isn't being loaded properly, but i just don't know which one.  also, when i run 

```
ls /proc/acpi/fan/
```

nothing shows up.  i am pretty sure that this must be part of the problem, but i just have no idea how to fix it.  any and all help would be appreciated.  thank you very much.

----------

## Hypnos

Opening the can of worms:

HOWTO: Fix Common ACPI Problems (DSDT, ECDT, etc.)

https://forums.gentoo.org/viewtopic.php?t=122145

----------

## NiXZe

in the computer the coling fan is on a big cooling block that is "connected" with booth the CPU and the graphics chip and as everybody know both these generate a loot of heat... so the fact that fan is always on is no problem for me.

however the emptyness off /proc/acpi/fan disturbs me.

And Hypnos thanks for your hints but unloading thermal don't help and yes the ACPI BIOS is buggy (name one machine that don't have a buggy ACPI BIOS in some way)

so for the HOWTO just now runing it and i've got some errors...

```

xzib iasl-linux-20030918 # ./iasl -tc dsdt.dsl 

Intel ACPI Component Architecture

ASL Optimizing Compiler / AML Disassembler version 20030918 [Sep 18 2003]

Copyright (C) 2000 - 2003 Intel Corporation

Supports ACPI Specification Revision 2.0b

dsdt.dsl  4321:                         Method (MHQC, 1, NotSerialized)

Warning  2019 -                                    ^ Not all control paths return a value (MHQC)

dsdt.dsl  4354:                         Method (MHGC, 0, NotSerialized)

Warning  2019 -                                    ^ Not all control paths return a value (MHGC)

dsdt.dsl  8503:                 Field (U7CS, DWordAcc, NoLock, Preserve)

Error    1047 -                           ^ Access width is greater than region size

dsdt.dsl  8505:                     PWKI,   1, 

Error    1051 -                        ^ Access width of Field Unit extends beyond region limit

dsdt.dsl  8506:                     PWUC,   6, 

Error    1051 -                        ^ Access width of Field Unit extends beyond region limit

ASL Input:  dsdt.dsl - 10916 lines, 376459 bytes, 5116 keywords

Compilation complete. 3 Errors, 2 Warnings, 0 Remarks, 2313 Optimizations

```

will get more info on this when i get the time.

Uppdate: got ride of the errors...

Change line 8502 From:

OperationRegion (U7CS, PCI_Config, 0x62, 0x02)

To:

OperationRegion (U7CS, PCI_Config, 0x62, 0x04)

(change the last hex number from 0x02 to 0x04)

now only the warnings is left...

More updates: warnings now gone only testing left.

added Return (0x00) on lines 4344, 4352, 4397

before these 3 lines there is a Noop command.... i asume these could be removed but i want to go in to the testing phrase first  :Wink: 

more updates to come... (need to insert this in the bios now and then check everything out.)

Update:

I want as much ACPI stuff as possible right so lets "enable" them the howto is talking about the kernel parm acpi_os_name i don't like kernel parms i want them built in (many modules have been hacked) so i added these lines:

 735: Store (0x02, \WNTF)

736: Store (0x01, \WNTF)

Note all line numbers are the numbers when the changes are made in the order that i have made it here.

now it's finaly time for a reboot  :Wink: 

Last Update:

Still no Fan *giving up for now* if someone wants the fixed dsdt.dsl it is available at http://www.usdata.cjb.net/~NiXZe/T40p/dsdt.dsl

----------

## asubedi

I am running sony vaio and my fan is running constantly... Didn't use to behave like this when I was using 2.4

----------

