Support in other languages: 
Showing results for 
Search instead for 
Do you mean 
Reply
Community Moderator
yigit
Posts: 13,403
Registered: ‎12-07-2009
Location: Česká republika
0

Re: Fan never stops DSDT / BIOS hacking thread

it'd be hard to find a solution for different systems in a same threads.so i moved this thread into g570 fan issue thread.


http://www.ki-themes.com
Fanfold Paper
mark2
Posts: 13
Registered: ‎12-07-2011
Location: michigan

Re: Fan never stops DSDT / BIOS hacking thread

[ Edited ]

my fan stops.

 

You need to change the DSDT file.  Inserting the DSDT into your boot process is beyond the scope of this forum post.

 

The FAN thermal objects are primarily useless, but the FN00 PowerResource objects for those fans do work.  (Well, they don't in their current state, but...)  The EC doesn't seem to signal any kind of thermal trips to the acpi.  From my understanding, it should be calling the thermal devices' power resource's OFF functions when the temps fall below a threshold under where the active trip point is (55c).

 

Fix the FN0x power resources:

                /* Return (VFN0) */
                Return (\_SB_.PCI0.LPCB.EC0_.FAN1)

Change any reference to VFN0 into \_SB_.PCI0.LPCB.EC0_.FAN1... change VNF1 into FAN2

 

Change your power resource fan _ON methods to look like this

            Method (_ON, 0, Serialized)
            {
                Store ("acpi hack: _ON for fan 00", Debug)
                Store (One, \_SB_.PCI0.LPCB.EC0_.FAN1)
                Store (One, \_SB_.PCI0.LPCB.EC0_.INIT)
            }

 

 Change the OFF method to look like this (notice fan1's off references fan2 and vice versa)

            Method (_OFF, 0, Serialized)
            {
                Store ("acpi hack: _OFF for fan 00", Debug)
                P8XH (0x04, 0x0D, Zero)
                P8XH (0x04, 0x0D, One)
                Store (Zero, \_SB_.PCI0.LPCB.EC0_.FAN1)

                //check the other fan
                If (LEqual (\_SB_.PCI0.LPCB.EC0_.FAN2, Zero)) {
                    Store (Zero, \_SB_.PCI0.LPCB.EC0_.INIT)
                }
                P8XH (0x04, 0x1D, Zero)
                P8XH (0x04, 0x1D, One)
            }

 

Assuming you have fixed the temperature with the ENDD CTMP switch, you should have properly working ACPI functions.  These don't seem to be called properly, even if you have fixed up the trip points  (changing the _PSV trip point doesn't seem to do anything)

 

Now, the ACPI functions work, but the fans still don't stop.  It is my belief that the bios or EC should be triggering certain ACPI functions, but they are not.  I could be wrong, maybe there is more ACPI to fix.  I think it's missing the _NTT function or something.  You can control the fans with a userspace script and the "acpi_call" kernel module.  The script can simply poll the temperature (because you fixed the ENDD in the _TMP function).   Something like this should do: (but it's not working 100%)

 

#!/bin/bash
#fancntl.sh
# don't forget to insmod the acpi_call module.
#`insmod /home/mark/Projects/acpi_call/acpi_call.ko`

MODE='';
while true;
do
   #TMPR=`sensors | grep temp1 | cut -c 15-19 |sed 's/+//'`;
   TMPR=`cat /sys/devices/virtual/thermal/thermal_zone0/temp`;
   FANON=`echo "$TMPR > 55000" | bc`;
   FANOFF=`echo "$TMPR < 49000" | bc`;
   if [ $FANON -ne 0 ] && [ "$MODE" != "FANON" ]
   then
        echo "Fan on: $TMPR";
        `echo '\_TZ_.FN00._ON'_ > /proc/acpi/call`
        `echo '\_TZ_.FN01._ON_' > /proc/acpi/call`
        MODE="FANON";
        echo "$MODE";
   fi
   if [ $FANOFF -ne 0 ] && [ "$MODE" != "FANOFF" ]
   then
        echo "Fan off: $TMPR";
        `echo '\_TZ_.FN00._OFF' > /proc/acpi/call`
        `echo '\_TZ_.FN01._OFF' > /proc/acpi/call`
        MODE="FANOFF";
        echo "$MODE";
   fi
   sleep 5;
done

 

Note that this script requries "sensors" from lm_sensors package.  You can probably rewrite it to use acpi_call to \_TZ_.TZ00._TMP, but you have to grep dmesg to get the result and you can't always be sure that somethign else isn't writing to dmesg, meaing you might not have the result in the last few lines of dmesg | tail.  Update: you can cat /sys/devices/virtual/thermal/thermal_zone0/temp to get the temp in celcius (times 1000).

 

If you do these things, you will be shutting OFF the fan, the system does not turn them back on (unless you sleep).  You must monitor the temps and turn the fans back on or you will overheat the system.  If you don't want to do these things, wait for a new Insyde software EC version.

 

For Windows users, I'm not sure what kind of userspace script you can use to poll the temps and control the fan.  It's probably better to wait for a more official fix.  If you know of some ACPI tools that you can script please, speak up.

 

SCSI Port
rzrfreefr
Posts: 238
Registered: ‎10-11-2011
Location: france
0

Re: Fan never stops DSDT / BIOS hacking thread

[ Edited ]

brillant !!!

 

I think I will adapt it to use the coretemp sensors because there is also a bug in TZ00 :



cat /sys/devices/virtual/thermal/thermal_zone0/temp
0

 

I plan to share my fixed DSDT file in the lenovo yahoo group if you care 

 

edit: I just see that that bug  could be fixed in previous post 

--
http://rzr.online.fr/q/lenovo# g470 s103t (Please Contact me if your s10-3T is booting win7 or support bluetooth, 3g)
Lenovo S10-3t | Model Name : 0651 | Mfg Date: 2010/06/08
Lenovo G470 | Model Name : 20078 | M fg Date: 11/03/23 | BIOS: 40CN23WW(V2.09) 06/20/2011 | CPU: i5-2410M | Linux version 3.3.4lenovog470+ (root@lap) (gcc version 4.6.3 (Debian 4.6.3-4) ) #8 SMP Tue May 1 10:23:48 CEST 2012
OS:GNU/Linux/Debian
Fanfold Paper
mark2
Posts: 13
Registered: ‎12-07-2011
Location: michigan
0

Re: Fan never stops DSDT / BIOS hacking thread

[ Edited ]

I plan to share my fixed DSDT file in the lenovo yahoo group if you care  


@rzfreefr
  What's the yahoo group url?

 

Nevermind, found it.  Can't delete this post 

 

http://tech.groups.yahoo.com/group/Lenovo/

SCSI Port
rzrfreefr
Posts: 238
Registered: ‎10-11-2011
Location: france
0

Re: Fan never stops DSDT / BIOS hacking thread

thx I will also share some debian packages of kernel

 

It looks that we have different version of it but I will work it out

 

 

 

diff --git a/DSDT.dsl b/DSDT.dsl
index 1f635aa..4a0258e 100644
--- a/DSDT.dsl
+++ b/DSDT.dsl
@@ -1,23 +1,22 @@
 /*
  * Intel ACPI Component Architecture
- * AML Disassembler version 20110623-64 [Nov  4 2011]
- * Copyright (c) 2000 - 2011 Intel Corporation
- * 
- * Disassembly of /tmp/fwts_iasl_28219_DSDT.dat, Fri Dec 16 13:57:28 2011
+ * AML Disassembler version 20100528
+ *
+ * Disassembly of dsdt.dat, Thu Dec  8 10:41:02 2011
+ *
  *
  * Original Table Header:
  *     Signature        "DSDT"
- *     Length           0x0000938E (37774)
- *     Revision         0x01 **** 32-bit table (V1), no 64-bit math support
- *     Checksum         0xFB
+ *     Length           0x0000934A (37706)
+ *     Revision         0x01 **** ACPI 1.0, no 64-bit math support
+ *     Checksum         0x69
  *     OEM ID           "LENOVO"
- *     OEM Table ID     "CB-01   "
+ *     OEM Table ID     "CB-02   "
  *     OEM Revision     0x00000001 (1)
  *     Compiler ID      "ACPI"
  *     Compiler Version 0x00040000 (262144)
  */
-
-DefinitionBlock ("/tmp/fwts_iasl_28219_DSDT.aml", "DSDT", 1, "LENOVO", "CB-01   ", 0x00000001)
+DefinitionBlock ("dsdt.aml", "DSDT", 1, "LENOVO", "CB-01   ", 0x00000001)

--
http://rzr.online.fr/q/lenovo# g470 s103t (Please Contact me if your s10-3T is booting win7 or support bluetooth, 3g)
Lenovo S10-3t | Model Name : 0651 | Mfg Date: 2010/06/08
Lenovo G470 | Model Name : 20078 | M fg Date: 11/03/23 | BIOS: 40CN23WW(V2.09) 06/20/2011 | CPU: i5-2410M | Linux version 3.3.4lenovog470+ (root@lap) (gcc version 4.6.3 (Debian 4.6.3-4) ) #8 SMP Tue May 1 10:23:48 CEST 2012
OS:GNU/Linux/Debian
Fanfold Paper
mark2
Posts: 13
Registered: ‎12-07-2011
Location: michigan
0

Re: Fan never stops DSDT / BIOS hacking thread

Those differences could just be from two different decompiler versions.  I used dmidecode and acpidump, not fwts.  I changed the one revision from CB-01 to CB-02 just to see if my dsdt was actually active.

Punch Card
smaaz
Posts: 20
Registered: ‎10-15-2011
Location: Pakistan
0

Re: Fan never stops DSDT / BIOS hacking thread

I have bios 40cn23ww (2.09), can any one tell me how can i upload a costum bios ?

 

http://www.bios-mods.com/forum/printthread.php?tid=7046

 

need to upload above bios but whn i try it gives an error " insydeflash cant load the driver, please close all applications. If you run this utility in win7, please run as administrator"

 

so how can i upload this bios i have no experience of doing so and certainly dont want to kill my laptop, but i cant stand always on fan also :smileyfrustrated:

 

Community Moderator
yigit
Posts: 13,403
Registered: ‎12-07-2009
Location: Česká republika
0

Re: Fan never stops DSDT / BIOS hacking thread

hi smaaz.

please, note that flashing un-official bios update will void your warranty. if you break your mainboard, warranty won't cover the replacement.


http://www.ki-themes.com
Punch Card
smaaz
Posts: 20
Registered: ‎10-15-2011
Location: Pakistan
0

Re: Fan never stops DSDT / BIOS hacking thread

then bring a fix for this problem, as my fan is collecting alot of dust because of its not stop functioning. I live in Pakistan and there is no official service center of Lenovo what if my fan blows of due to always on or dust blockage .. seriously this is very bad support .. moreover a brand new laptop with such a problem is another bad example of lenovo quality certainly. And i am not the only one many other users have same problem and have been complaining for months. What is your technical team doing? What are you people paying them for ?

Community Moderator
yigit
Posts: 13,403
Registered: ‎12-07-2009
Location: Česká republika
0

Re: Fan never stops DSDT / BIOS hacking thread

can you check (did you) if the issue persists on safe mode? it could be hardware issue and you may need to replace thermal grease.

please note: i don't work for lenovo, i'm volunteer.


http://www.ki-themes.com