Bug 55691 - Laptop overheats, no fan control - Toshiba u500
Summary: Laptop overheats, no fan control - Toshiba u500
Status: CLOSED INSUFFICIENT_DATA
Alias: None
Product: ACPI
Classification: Unclassified
Component: Power-Fan (show other bugs)
Hardware: All Linux
: P1 high
Assignee: Zhang Rui
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-03-24 05:37 UTC by nmc
Modified: 2013-10-14 11:06 UTC (History)
1 user (show)

See Also:
Kernel Version: 3.5.0-26-generic
Subsystem:
Regression: No
Bisected commit-id:


Attachments
acpidump (298.02 KB, text/plain)
2013-03-26 13:58 UTC, nmc
Details
/sys/class/thermal (2.67 KB, text/plain)
2013-03-26 13:59 UTC, nmc
Details
custom DSDT (505.46 KB, application/octet-stream)
2013-03-26 15:35 UTC, Zhang Rui
Details
/sys/class/thermal - fresh boot (2.67 KB, text/plain)
2013-03-27 05:28 UTC, nmc
Details
/sys/class/thermal - fresh boot + suspend (2.67 KB, text/plain)
2013-03-27 05:34 UTC, nmc
Details
customized DSDT (464.81 KB, application/octet-stream)
2013-03-27 07:20 UTC, Zhang Rui
Details
lspci output, as requested (2.15 KB, text/plain)
2013-06-25 14:58 UTC, nmc
Details

Description nmc 2013-03-24 05:37:16 UTC
Hello,

I have a Toshiba u500 laptop and I keep having an overheat problem (cpu temperatures frequently above 70C) - I've tried many different distros and many different kernel versions but the problem persists: when I turn on the laptop the fan will only come on when the CPU temperature gets very close to the critical point (i.e., when the temperature gets past 90C), and even then it is only active in short bursts (2 seconds, maximum).
I have also found out that suspending the laptop and turning it back on makes the fan turn on, but I am not sure if it is actively cooling (as opposed to being at a constant speed). I noticed that if I install one of the acpi packages in ubuntu and run 'acpi -t' to check the temperature, the fan will turn on for a minute or two at a speed that seems appropriate for the temperature.
Finally, I am certain that it is not a problem with the fan or with the cooling system, as the same laptop runs much much cooler with Windows 7.

Thank you for your attention and any help you may provide.
Comment 1 Zhang Rui 2013-03-26 08:31:36 UTC
please attach the acpidump output of your laptop.
please attach the output of "grep . /sys/class/thermal/*/*" of your laptop after a fresh boot.
Comment 2 nmc 2013-03-26 13:58:19 UTC
Created attachment 96231 [details]
acpidump

ACPI dump. Got a 'Wrong checksum for generic table!' message at the end.
Comment 3 nmc 2013-03-26 13:59:52 UTC
Created attachment 96241 [details]
/sys/class/thermal
Comment 4 nmc 2013-03-26 15:15:52 UTC
Somehow, running the grep command you asked for, turns on the fan. I had experienced something similar in a previous install where running 'acpi -t' would have the same effect.
Comment 5 Zhang Rui 2013-03-26 15:32:47 UTC
From the /sys/class/thermal output, we can see that all the ACPI controlled fans are in ON state (cur_state = 1).
But you said that the fan will not start until overheat in comment #0, please double check if the fan is spinning when you get the /sys/class/thermal output in comment #3.
Or please make sure that the fan is not spinning after a fresh boot and then get the output of "grep . /sys/class/thermal/*/*" again.
please attach the output of "grep . /sys/class/thermal/*/*" after resume from suspend.
Comment 6 Zhang Rui 2013-03-26 15:35:47 UTC
Created attachment 96251 [details]
custom DSDT

it seems that there are some AML errors in your ACPI table, could you please redo the test (grep . /sys/class/thermal/*/* when fan is cool and when resume from suspend) with the customized DSDT table?

HOWTO override the dsdt can be found at
https://lesswatts.org/projects/acpi/overridingDSDT.php
Comment 7 nmc 2013-03-27 05:28:28 UTC
Created attachment 96321 [details]
/sys/class/thermal - fresh boot

When I ran this command the CPU had been under full load for some time (from a fresh boot), and the fan was coming on for very short bursts (other than those bursts it was simply not running). After I closed the program that was causing that load, the fan appeared to be running. It appears that the grep command does affect something in the fan control.
Comment 8 nmc 2013-03-27 05:34:32 UTC
Created attachment 96331 [details]
/sys/class/thermal - fresh boot + suspend

This is the output from the grep command after a fresh boot and suspend sequence (i.e., I didn't run the command before suspending the laptop).
Comment 9 nmc 2013-03-27 05:35:17 UTC
Thank you for the help thus far! Can I try to override the DSDT or is there anything you want me to do before that?
Comment 10 Zhang Rui 2013-03-27 07:20:56 UTC
Created attachment 96341 [details]
customized DSDT

please apply this custom dsdt, and do the following
1. echo 1 > /sys/module/acpi/parameters/aml_debug_output
2. try to burn the processors by large workload (the temperature should goes up but the fan is not spinning at this time)
3. dmesg > dmesg-1
4. cat /sys/class/thermal/thermal_zone0/temp (the fan should begin to spinning a few seconds later, right?)
5. dmesg > dmesg-2
6. wait until the fan begins to sping
7. dmesg > dmesg-3
so that I can see what happens during step 2/4/6.
Comment 11 nmc 2013-03-27 17:49:48 UTC
Is there a way to apply your DSDT without (re)building the kernel?
Comment 12 Zhang Rui 2013-03-28 01:45:12 UTC
I do not think so.
is there any reason that you can not do this?
Comment 13 Aaron Lu 2013-03-28 02:17:16 UTC
(In reply to comment #11)
> Is there a way to apply your DSDT without (re)building the kernel?

If your kernel config has CONFIG_ACPI_INITRD_TABLE_OVERRIDE=y, then see Documentation/acpi/initrd_table_override.txt for details on how to override dsdt with initrd.
Comment 14 nmc 2013-03-30 05:21:44 UTC
(In reply to comment #12)
> I do not think so.
> is there any reason that you can not do this?

Other than the time it takes, do I have to redo it every time I want to update the kernel?
Comment 15 nmc 2013-03-30 05:22:56 UTC
(In reply to comment #13)
> (In reply to comment #11)
> > Is there a way to apply your DSDT without (re)building the kernel?
> 
> If your kernel config has CONFIG_ACPI_INITRD_TABLE_OVERRIDE=y, then see
> Documentation/acpi/initrd_table_override.txt for details on how to override
> dsdt with initrd.

Sadly, it appears it doesn't (Ubuntu 12.04)...but thanks for the answer!
Comment 16 Zhang Rui 2013-06-24 02:45:49 UTC
I just add some debug information in the custom dsdt to see what causes the problem.
so please give it a try, or else I'll close this bug report as I can not debug this issue. :)
Comment 17 Zhang Rui 2013-06-24 02:46:11 UTC
BTW, please attach the lspci output of your laptop.
Comment 18 nmc 2013-06-25 14:58:06 UTC
Created attachment 106001 [details]
lspci output, as requested
Comment 19 nmc 2013-06-25 14:59:33 UTC
Can you please provide more info on how to include/use the custom DSDT you have provided?
Comment 21 Aaron Lu 2013-06-27 01:58:40 UTC
BTW, I would be surprise if Ubuntu doesn't set this config by default.

Fedora provides this:
[aaron@aaronlu linux]$ grep ACPI_INITRD /boot/config-3.9.6-200.fc18.x86_64 
CONFIG_ACPI_INITRD_TABLE_OVERRIDE=y
Comment 22 Aaron Lu 2013-07-10 07:58:35 UTC
BTW, from Ubuntu's manual page, it seems they support an easier way to override DSDT in initrd:

       /etc/mkinitrd/DSDT
              If  this file exists, it will be appended to the initrd in a way
              that causes it to be loaded by ACPI.

http://manpages.ubuntu.com/manpages/dapper/man8/mkinitrd.8.html

So you just need to move the new dsdt file to /etc/mkinitrd/DSDT and re-generate initrd file should be OK.
Comment 23 Zhang Rui 2013-10-14 11:06:44 UTC
Bug closed as there is no response from the bug reporter.
please feel free if you can do the test requested in comment #10.

Note You need to log in before you can comment on or make changes to this bug.