Jump to content

ALL Fan related issues HERE. Laptop fans, overheating, cold boot no fans +


00diabolic
 Share

Fan issues. Have them or not? How do you deal with them?  

137 members have voted

  1. 1. How many of you have experenced overheating due to fans not turning on on your laptop?

    • YES I have to go through steps to get my fans on. See question below.
      93
    • No I have no fan issues or I have intermitate fan issues.
      46
  2. 2. What do you have to do to deal with your fan not turning on?

    • Power unplug, or sleep trick. Seems to work on Toshibas
      28
    • Reboot when temp reaches certain number to get bios to turn fans on. Only Lenovo option that works
      44
    • I use software to handle my heat issues like coolbook because my fans never seem to spin fast when needed.
      11
    • My fans are on 100% full blast and are loud all the time. So I never overheat but I'm also losing my hearing.
      56
    • I found a kext that fixes my fan issues and I am not sharing the info with the 100's of affected users here. You suck SHARE your info.
      10


260 posts in this topic

Recommended Posts

Hai Guys,

 

Me and a friend both have almost the same problems with the fan :

 

I have a Lenovo N200 and the fan only works fulltime when i reboot after the system is overheating.

 

My friend has a Compaq C700 Series and his fan shutsdown when booting into osx and comes back when the system reaches 90 degrees and then cooles to abou 83 degrees and stops.

the only time to keep it working is if you let the system kinda overheat then boot into windows and then boot into osx, then it keeps turning at half speed.

 

Can anyone please help me out, we really need the fans to work properly.

 

What controls the fans inside osx???

 

cheers,

 

Jay

Link to comment
Share on other sites

Same as you, I have to monitor the temperature first. If it reached above 70C, then I have to reboot the laptop.

Then goes into other OS, say, Linux ... after that, reboot again to OSX.

Thanks for your reaction good to see that there are still people having problems to, no lets hope someone has had this to and fixed it and is going to help us.

 

 

 

 

So people come on and help us out please.

 

 

 

cheers,

 

 

 

Jay

Link to comment
Share on other sites

Hi all,

I also have had this ever irritating heating issue after retail installation. :(

 

I'd had modified distros running on my laptop-I can't explain how I got it though, but I never had an issue( as far as remember)-without a hitch, but now, on retail, cpu temp stays at 53-56'c when idle.

The fan(s) seem working fine, but then why-heat? :P

 

I've tried quiet few of suggested methods from this board, but this issue wouldn't go away.

 

So, is it normal getting temp increase due to running a retail version?

I'm asking this rather silly sounding question because when I looked at system profiler, the amount of vram allocation was increased from 64mb( when using modified distro) to 144mb(retail) and may be generating extra heat?

If this is the case then I'd be more than happy to settle with the heat issue and stop trying because running a retail version is so much better than running a modified ones. -_-

 

Cheers.

Link to comment
Share on other sites

  • 2 months later...

For anybody, who have coldboot fan issues (fan is not spiinnig, or spinning slowly few enough for cooling, and the machine overheats, then reboots), try this:

 

Notes:

 

1. You must have AppleACPIPlatform.kext installed in \System\Library\Extensions, and used by system (type kextstat in terminal to see if it's loaded, or look into the \System\Library\Extensions folder and if AppleACPIPlatform.kext is blue then it's used by system)

 

2. You must have AppleACPIThermal.kext in the AppleACPIPlatform.kext's Contents\Plugins folder

 

3. You must have Chameleon2 bootloader or any other loader/efi emulator capable of handling custom dsdt. Chameleon2 can handle DSDT.aml file, when it's in the root (/) directory. If you have one installed here with fixes, use this as source file for the process, if you don't have one, then use DSDTSE v1.3.5 or newer for create one.

 

4. The tool DSDTSE is required for the process, put it to your application folder

 

The fix:

 

1. Open your DSDT.aml with DSDTSE. The tool decompiles it, and gives you a window with programming codes. There are several methods for fixing the coldboot issue, for the hp compaq nx7300/7400 do this(it maybe works on another typecoded or another branded machines too):

 

On hp nx7300 you may see this somewhere in the code:

     ThermalZone (TZ0)
       {
           Name (_AL0, Package (0x01)
           {
               C324
           })
           Name (_AL1, Package (0x01)
           {
               C325
           })
           Name (_AL2, Package (0x01)
           {
               C326
           })
           Name (_AL3, Package (0x01)
           {
               C327
           })
           Method (_AC0, 0, NotSerialized)
           {
               Return (C315 (C30A, 0x00))
           }

           Method (_AC1, 0, NotSerialized)
           {
               Return (C315 (C309, 0x00))
           }

           Method (_AC2, 0, NotSerialized)
           {
               Return (C315 (C308, 0x00))
           }

           Method (_AC3, 0, NotSerialized)
           {
               Return (C315 (C307, 0x00))
           }

           Method (_CRT, 0, Serialized)
           {
               Return (C315 (0x04, 0x00))
           }

           Method (_TMP, 0, Serialized)
           {
               If (LEqual (C30E, 0x00))
               {
                   \_TZ.C31B ()
                   Store (0x01, C30E)
               }

               Return (C31D (0x00))
           }
       }

 

This is the description of a thermal zone, called tz0. If your system have only one cooling fan this is the descriptor of the cpu cooling scheme.

The _ALx methods are describing a fan mode(each paired with a fan speed somewhere in the file),_AL3 has the slowest, but not 0rpm fan speed(the 0 rpm described somewhere else in the file as Zero), _AL0 has the fastest(usually full fan speed).

The _ACx methods describing each threshold temperature paired with each fan speed. _AC3 belongs to the slowest but not 0 rpm fan speed and _AC0 belongs to the full fan speed. Each _ACx calls a function, which retrieves the current treshold speed associated with its fan mode from an array. When the temperature value retrieved, the _ACx passes it with a Return to his caller.

The _TMP method works like an _ACx, but its return value is not the threshold temp of each mode. Its return value is the current temperature from the sensor.

There is also a _HOT or a _CRT (or both)method. The _HOT returns a critical temp. If it's reached the computer goes to sleep, prevent the overheat damage of the system. The _CRT does exactly the same, but it returns the critical temperature of shutdown.

 

The system is continuously comparing the return value of the _TMP(current temperature) with the return value of the _HOT and/or the _CRT, to prevent damage of the system, and with the _ACx-es(temperature threshold values for each fan mode) to determine which fan mode must be activated.If a current temperature value(_TMP) is bigger or equal with an _ACx temp value the system sets the corresponding ALx mode ON, and the fan speeds up....

 

So...I decided to install iDeneb 10.5.8 to my friend's HP Compaq nx7300, i installed it , and the next day the coldboot issue showed up. After googling a lot and reading this topic too ;) ) , I thought, the coldboot issue showed up because at that moment, when the OSX boots the current cpu temp of a cold booted machine doesn't reach a threshold value. That's why the fan remains slow or stopped till the next reboot, when the current cpu temperature reaches the treshold. So I had to find out a solution, which fools the system.

If the _TMP method returns an extremely big value(bigger from the _AC0 temp, but smaller from the _HOT or _CRT threshold temp), the fan begins on maximum speed and stays here when the system boots. It doesn't matter it's cold boot or not.

You can read the default temperature thresholds for the fan modes and the critical temperature's default value from the ioreg. To do this, push the "Get" button below the registry label in DSDTSE's main window, the IOREG utilit??? appears. On a HP nx7300/7400 you can found the values you need for the TZ0 at the IOSERVICE:/AppleACPIPlatformexpert/TZ0/AppleACPIThermalZone entry.

On the bottom of the right panel you can see the critical temp for shutdown/sleep in hex value(0xsomething). If you convert the value to decimal, and you divide the decimal number with 10, you will get the temp treshold values in Kelvin.(Kelvin value minus 273.16 gives you the Celsius value)

On the top of the right panel you can see numbers, open 0 with the arrow, then open the 0 or 1 or 2 or 3 somewhere you can see temperature values in hex format (0xsomething). With the same method described above, you can get the Celsius treshold values of these fan modes. but you don't need to do that. You must choose the biggest hex value from these temp values of mode 0 1 2 3.... Call this hex value the MAX. You must choose a value between the MAX and the critical temp hex value. For me it was 0xE00. It's 85.4 Celsius. Add it has only 3 digits, add a 0 before the first (0xE00 becomes 0x0E00).

 

So the hack:

 

original code:

Method (_TMP, 0, Serialized)
           {
               If (LEqual (C30E, 0x00))
               {
                   \_TZ.C31B ()
                   Store (0x01, C30E)
               }

               Return (C31D (0x00)) //the acpi gives the sensor temp here for the system
           }
       }

 

 

the fix:

Method (_TMP, 0, Serialized)
           {
               If (LEqual (C30E, 0x00))
               {
                   \_TZ.C31B ()
                   Store (0x01, C30E)
               }

               (C31D (0x00)) //call the function wich read the current temp from 
               Return (0x0E00) //the sensor,but gives something else to the caller
               //(the value between the biggest fan speed's threshold temp and _CRT)
           }
       }

 

Modify these things in your file and save it in DSDTSE to the DSDT folder in the /Library/Application Support/ dsdtse's folder(i don' know its name, because i'm not on mac currently, you have to find it).

Then hit compile in the right window of DSDTSE, and when everything went fine(NO error, no or some warnings...), you have a new dsdt.aml file in DSDTSE's application support folder. You can close the DSDTSE now.

Make a backup of your current DSDT.aml file(usually stays in / or /Extra, if any), and then replace it with the newly created DSDT.aml.

If everything went fine, the next cold boot you have your CPU fan at full speed and it stays here. It's noisy, but it protects your cpu from overheating.

 

But I think there is a better method, which I haven't tested yet, due to the nx7300 is not mine. Can somebody test it to me?

 

So, the fix:

 

As described above, you can read the default threshold temperatures of the fan modes from IOREG. See what is the mode number of the mode with the second smaller value(actually you determine, which is the second slowest fan mode's identifier number). For the nx7300 it's the 2 so you have to modify the _AC2.

This fix fools the system to activate the fans at mode2 on 0 Celsius :)

0Celsius has a hex value: 0x0AAB

 

original code:

Method (_AC2, 0, NotSerialized)
           {
               Return (C315 (C308, 0x00))//system retrieves the current treshold value  
               //for mode _AL2 from the ACPI table
           }

 

modified code:

Method (_AC2, 0, NotSerialized)
           {
               C315 (C308, 0x00)//system retrieves the current treshold value for
               //mode _AL2 from the ACPI table
               Return (0x0AAB) //but gets the value of 0 Celsius, so the fan spins on 
               //mode 2's speed even on cold boot
           }

 

In this fix you only modify these things, don't modify the _TMP method. You can change the other_ACx-es like i described above with your custom treshold temperatures, which give you the option to make your own power strategy for the system(if you want a fan mode to switch on at x celsius, then add x with 273.1 and multiply the result with 10, now you got a result value in decimal, so convert it to hex and if it's only 3 hex digits long put a 0 before the first digit (0x0hexvalue), now you got the return value for the current _ACx, insert it to the code like in _AC2).The compiling, saving and booting with the DSDT.aml is the same like I described before in the _TMP fix's description.

 

I hope I can help somebody with this howto. Sorry for my poor english :)

 

If anyone interested, there is the ACPI specification, which describes the thermal management(that I described above and more infos) and the other functions of DSDT.

 

Good news: Modifiing the DSDT with the _TMP fix doesn't makes cpu temp monitor applications reading the incorrect temperature, for example this tool reads the current temperature correctly.

 

Bad news: Your cpu can fried with the _TMP method, if ALL of(NOT ANY of these, just ALL!!) these circumstances are valid for your system:

1. your computer doesn't have any other thermal zone than the cpu's(which is usually the tz0, I hacked)

2. And the other thermal zones doesn't have _CRT methods to prevent system damage

3. And your CPU stops because phisical failure of the fan motor or the fan cable or the fan propeller,etc physical thingy.

 

So I recommend the _ACx method if it works for you, and If not, I recommend this tool with the _TMP method to monitor cpu temperature on the menu bar.

  • Like 1
Link to comment
Share on other sites

  • 1 month later...

I wanted to ask weather your friend with nx7300 has both cores functioning? There is a well known problem with getting both cores to work on nx7300. It seams your quite knowledgeable when it comes to technical hackintosh stuff - do You think it would be possible to fix dual core freezes with some correction of dsdt?

Link to comment
Share on other sites

Anyone solve the fan issues with a cold boot?

I try everything but no effect.......

Can anyone help me and tell me what details step should i do?

thank you, thank you very much!

My bios can't make a DSDT path,it must be used? so sad i am.

 

For anybody, who have coldboot fan issues (fan is not spiinnig, or spinning slowly few enough for cooling, and the machine overheats, then reboots), try this:

 

Notes:

 

1. You must have AppleACPIPlatform.kext installed in \System\Library\Extensions, and used by system (type kextstat in terminal to see if it's loaded, or look into the \System\Library\Extensions folder and if AppleACPIPlatform.kext is blue then it's used by system)

 

2. You must have AppleACPIThermal.kext in the AppleACPIPlatform.kext's Contents\Plugins folder

 

3. You must have Chameleon2 bootloader or any other loader/efi emulator capable of handling custom dsdt. Chameleon2 can handle DSDT.aml file, when it's in the root (/) directory. If you have one installed here with fixes, use this as source file for the process, if you don't have one, then use DSDTSE v1.3.5 or newer for create one.

 

4. The tool DSDTSE is required for the process, put it to your application folder

 

The fix:

 

1. Open your DSDT.aml with DSDTSE. The tool decompiles it, and gives you a window with programming codes. There are several methods for fixing the coldboot issue, for the hp compaq nx7300/7400 do this(it maybe works on another typecoded or another branded machines too):

 

On hp nx7300 you may see this somewhere in the code:

 ThermalZone (TZ0)
{
Name (_AL0, Package (0x01)
{
C324
})
Name (_AL1, Package (0x01)
{
C325
})
Name (_AL2, Package (0x01)
{
C326
})
Name (_AL3, Package (0x01)
{
C327
})
Method (_AC0, 0, NotSerialized)
{
Return (C315 (C30A, 0x00))
}

Method (_AC1, 0, NotSerialized)
{
Return (C315 (C309, 0x00))
}

Method (_AC2, 0, NotSerialized)
{
Return (C315 (C308, 0x00))
}

Method (_AC3, 0, NotSerialized)
{
Return (C315 (C307, 0x00))
}

Method (_CRT, 0, Serialized)
{
Return (C315 (0x04, 0x00))
}

Method (_TMP, 0, Serialized)
{
If (LEqual (C30E, 0x00))
{
\_TZ.C31B ()
Store (0x01, C30E)
}

Return (C31D (0x00))
}
}

 

This is the description of a thermal zone, called tz0. If your system have only one cooling fan this is the descriptor of the cpu cooling scheme.

The _ALx methods are describing a fan mode(each paired with a fan speed somewhere in the file),_AL3 has the slowest, but not 0rpm fan speed(the 0 rpm described somewhere else in the file as Zero), _AL0 has the fastest(usually full fan speed).

The _ACx methods describing each threshold temperature paired with each fan speed. _AC3 belongs to the slowest but not 0 rpm fan speed and _AC0 belongs to the full fan speed. Each _ACx calls a function, which retrieves the current treshold speed associated with its fan mode from an array. When the temperature value retrieved, the _ACx passes it with a Return to his caller.

The _TMP method works like an _ACx, but its return value is not the threshold temp of each mode. Its return value is the current temperature from the sensor.

There is also a _HOT or a _CRT (or both)method. The _HOT returns a critical temp. If it's reached the computer goes to sleep, prevent the overheat damage of the system. The _CRT does exactly the same, but it returns the critical temperature of shutdown.

 

The system is continuously comparing the return value of the _TMP(current temperature) with the return value of the _HOT and/or the _CRT, to prevent damage of the system, and with the _ACx-es(temperature threshold values for each fan mode) to determine which fan mode must be activated.If a current temperature value(_TMP) is bigger or equal with an _ACx temp value the system sets the corresponding ALx mode ON, and the fan speeds up....

 

So...I decided to install iDeneb 10.5.8 to my friend's HP Compaq nx7300, i installed it , and the next day the coldboot issue showed up. After googling a lot and reading this topic too :blink: ) , I thought, the coldboot issue showed up because at that moment, when the OSX boots the current cpu temp of a cold booted machine doesn't reach a threshold value. That's why the fan remains slow or stopped till the next reboot, when the current cpu temperature reaches the treshold. So I had to find out a solution, which fools the system.

If the _TMP method returns an extremely big value(bigger from the _AC0 temp, but smaller from the _HOT or _CRT threshold temp), the fan begins on maximum speed and stays here when the system boots. It doesn't matter it's cold boot or not.

You can read the default temperature thresholds for the fan modes and the critical temperature's default value from the ioreg. To do this, push the "Get" button below the registry label in DSDTSE's main window, the IOREG utilit??? appears. On a HP nx7300/7400 you can found the values you need for the TZ0 at the IOSERVICE:/AppleACPIPlatformexpert/TZ0/AppleACPIThermalZone entry.

On the bottom of the right panel you can see the critical temp for shutdown/sleep in hex value(0xsomething). If you convert the value to decimal, and you divide the decimal number with 10, you will get the temp treshold values in Kelvin.(Kelvin value minus 273.16 gives you the Celsius value)

On the top of the right panel you can see numbers, open 0 with the arrow, then open the 0 or 1 or 2 or 3 somewhere you can see temperature values in hex format (0xsomething). With the same method described above, you can get the Celsius treshold values of these fan modes. but you don't need to do that. You must choose the biggest hex value from these temp values of mode 0 1 2 3.... Call this hex value the MAX. You must choose a value between the MAX and the critical temp hex value. For me it was 0xE00. It's 85.4 Celsius. Add it has only 3 digits, add a 0 before the first (0xE00 becomes 0x0E00).

 

So the hack:

 

original code:

Method (_TMP, 0, Serialized)
{
If (LEqual (C30E, 0x00))
{
\_TZ.C31B ()
Store (0x01, C30E)
}

Return (C31D (0x00)) //the acpi gives the sensor temp here for the system
}
}

 

 

the fix:

Method (_TMP, 0, Serialized)
{
If (LEqual (C30E, 0x00))
{
\_TZ.C31B ()
Store (0x01, C30E)
}

(C31D (0x00)) //call the function wich read the current temp from 
Return (0x0E00) //the sensor,but gives something else to the caller
//(the value between the biggest fan speed's threshold temp and _CRT)
}
}

 

Modify these things in your file and save it in DSDTSE to the DSDT folder in the /Library/Application Support/ dsdtse's folder(i don' know its name, because i'm not on mac currently, you have to find it).

Then hit compile in the right window of DSDTSE, and when everything went fine(NO error, no or some warnings...), you have a new dsdt.aml file in DSDTSE's application support folder. You can close the DSDTSE now.

Make a backup of your current DSDT.aml file(usually stays in / or /Extra, if any), and then replace it with the newly created DSDT.aml.

If everything went fine, the next cold boot you have your CPU fan at full speed and it stays here. It's noisy, but it protects your cpu from overheating.

 

But I think there is a better method, which I haven't tested yet, due to the nx7300 is not mine. Can somebody test it to me?

 

So, the fix:

 

As described above, you can read the default threshold temperatures of the fan modes from IOREG. See what is the mode number of the mode with the second smaller value(actually you determine, which is the second slowest fan mode's identifier number). For the nx7300 it's the 2 so you have to modify the _AC2.

This fix fools the system to activate the fans at mode2 on 0 Celsius -_-

0Celsius has a hex value: 0x0AAB

 

original code:

Method (_AC2, 0, NotSerialized)
{
Return (C315 (C308, 0x00))//system retrieves the current treshold value 
//for mode _AL2 from the ACPI table
}

 

modified code:

Method (_AC2, 0, NotSerialized)
{
C315 (C308, 0x00)//system retrieves the current treshold value for
//mode _AL2 from the ACPI table
Return (0x0AAB) //but gets the value of 0 Celsius, so the fan spins on 
//mode 2's speed even on cold boot
}

 

In this fix you only modify these things, don't modify the _TMP method. You can change the other_ACx-es like i described above with your custom treshold temperatures, which give you the option to make your own power strategy for the system(if you want a fan mode to switch on at x celsius, then add x with 273.1 and multiply the result with 10, now you got a result value in decimal, so convert it to hex and if it's only 3 hex digits long put a 0 before the first digit (0x0hexvalue), now you got the return value for the current _ACx, insert it to the code like in _AC2).The compiling, saving and booting with the DSDT.aml is the same like I described before in the _TMP fix's description.

 

I hope I can help somebody with this howto. Sorry for my poor english :)

 

If anyone interested, there is the ACPI specification, which describes the thermal management(that I described above and more infos) and the other functions of DSDT.

 

Good news: Modifiing the DSDT with the _TMP fix doesn't makes cpu temp monitor applications reading the incorrect temperature, for example this tool reads the current temperature correctly.

 

Bad news: Your cpu can fried with the _TMP method, if ALL of(NOT ANY of these, just ALL!!) these circumstances are valid for your system:

1. your computer doesn't have any other thermal zone than the cpu's(which is usually the tz0, I hacked)

2. And the other thermal zones doesn't have _CRT methods to prevent system damage

3. And your CPU stops because phisical failure of the fan motor or the fan cable or the fan propeller,etc physical thingy.

 

So I recommend the _ACx method if it works for you, and If not, I recommend this tool with the _TMP method to monitor cpu temperature on the menu bar.

 

 

the DSDT must be used? My bios can't make a DSDT path.Have any other ideas?Thanks.

Link to comment
Share on other sites

  • 1 month later...
I wanted to ask weather your friend with nx7300 has both cores functioning? There is a well known problem with getting both cores to work on nx7300. It seams your quite knowledgeable when it comes to technical hackintosh stuff - do You think it would be possible to fix dual core freezes with some correction of dsdt?

 

I have just one core working with ideneb 10.5.8, i 've tried couple of things but no success :(

 

Anyone solve the fan issues with a cold boot?

I try everything but no effect.......

Can anyone help me and tell me what details step should i do?

thank you, thank you very much!

My bios can't make a DSDT path,it must be used? so sad i am.

 

 

 

 

the DSDT must be used? My bios can't make a DSDT path.Have any other ideas?Thanks.

 

You must use DSDTSE(see the link in my old post) to extract the dsdt table from the bios. Then it will decompile it, you can see codes in aml language. You can search the tmp method, replace it, recompile and put the freshly created dsdt.dsl on your osx system disk's root path. Then the bootloader(need chameleon or similar) will handle the dsdt loading on startup. :) Every ACPI bios had dsdt table, so i think there is olnly a misunderstanding here. If not, please contact me and we will find some answer.

Link to comment
Share on other sites

  • 2 months later...

So I observed an interesting happening. I upgraded my ram and my fan patterns changed. Before I had a setup with the I8kfan.kext, during boot when it loads it's pretty much equivalent to unplugging the power cord to start the fans so that was nice I didn't have to unplug the cord. But this week I upgraded my ram. Everything works as usual but after some time working on my laptop the fan dies completely, and you can't start it. The power cord trick doesn't work and reloading the I8kfan.kext doesn't work. So now I'm in a bit of a pickle. Before unplugging the power cord was my safety net, now it's kind of scary.

Link to comment
Share on other sites

  • 1 year later...

Hardware EEEpc 1005HA (or any other EEEpc whith the same reported problems)

OSX 10.6.7

Using nawcom Legacy kernel darwin 10.7: http://blog.nawcom.com/?p=640

 

Ok guys for all of you that have a problem with:

 

1.Fans not working

-This usually comes after the 10.6.7 update. After a lot of research this is due to a install of a newer kext: "AppleACPIplatform"

-Just go back to the version: 1.3 from 1.3.5

AppleACPIPlatform 1.3: http://dl.dropbox.com/u/2374229/AppleACPIPlatform.kext.zip

 

2.Brightness after wake from sleep:

-This happens due to the appleintegratedframebuffer 1.6.10

-Rollback to 1.6.6

AppleIntegratedFramebuffer: http://dl.dropbox.com/u/2374229/AppleIntel...buffer.kext.zip

 

3. HotKeys:

-Just install AsusHotKeys Driver or edit your DSDT:

AsusHotkeys: http://dl.dropbox.com/u/2374229/AsusHotkeys.kext.zip

 

Inform me if anything doesn't work or need any help….

 

twitter.com/jimmykane9

Link to comment
Share on other sites

 Share

×
×
  • Create New...