Urgent help needed

Discussion in 'BIOS Mods' started by Lord_Azeroth, Jan 27, 2013.

  1. Lord_Azeroth

    Lord_Azeroth MDL Novice

    Jan 27, 2013
    29
    3
    0
    After buying an asus K70IO laptop(second hand) I stumbled uppon a problem, the laptop overheats.
    I cleaned it and re-applied artic silver 5 thermalpaste and still overheats(only the procesors, the gpu is fine).
    Now can someone mod the bios of this machine and edit the thermalpolicy of it? like when it is in idle fan speed should be at 50% and under load or exceeds 67 degrees celsius go to full speed.
    Or if someone knows a fan control program that will let me choose the manual fan speed it will be ok.


    Thanks in advance!
     
  2. LatinMcG

    LatinMcG Bios Borker

    Feb 27, 2011
    5,264
    1,422
    180
    no bios link.
    change is to be done in dsdt in _TZ
     
  3. redroad

    redroad MDL Guru

    Dec 2, 2011
    5,346
    6,024
    180
    Make sure you have the latest bios
     
  4. Recursion

    Recursion MDL Junior Member

    Dec 26, 2012
    75
    4
    0
    #4 Recursion, Jan 27, 2013
    Last edited: Jan 27, 2013
    I have written a fan control for FSC Xa 3530 in Linux and Windows. You can google it. For Acer there is also script acer_ec.pl. When you are lucky you can control the ec register and set the fan register to manual mode and override the speed settings. Then you can write your fan control like me?!
     
  5. LatinMcG

    LatinMcG Bios Borker

    Feb 27, 2011
    5,264
    1,422
    180
    #5 LatinMcG, Jan 28, 2013
    Last edited by a moderator: Apr 20, 2017
    i got your 3 messages and i replied to 1 .. in ami mod tool it said dsdt.aml not found. so i extracted with MMTool
    only reason i know somewhat what to do is cause i read up on it at insanelymac.com forum

    so im looking into dsdt code to see what the thermal control looks like.
    Code:
        Scope (_TZ)
        {
            Method (KELV, 1, NotSerialized)
            {
                And (Arg0, 0xFF, Local0)
                If (LGreaterEqual (Local0, 0x80))
                {
                    Subtract (0x0100, Local0, Local0)
                    Multiply (Local0, 0x0A, Local0)
                    Subtract (0x0AAC, Local0, Local0)
                    Return (Local0)
                }
                Multiply (Local0, 0x0A, Local0)
                Add (Local0, 0x0AAC, Local0)
                Return (Local0)
            }
            Method (CELC, 1, NotSerialized)
            {
                Subtract (Arg0, 0x0AAC, Local0)
                Divide (Local0, 0x0A, Local1, Local0)
                Return (Local0)
            }
            Name (PLCY, Zero)
            ThermalZone (THRM)
            {
                Method (_CRT, 0, NotSerialized)
                {
                    RCRT ()
                    Return (KELV (TCRT))
                }
                Method (_TMP, 0, NotSerialized)
                {
                    Store (0x05, Local1)
                    While (Local1)
                    {
                        Store (RTMP (), Local0)
                        If (LGreater (Local0, TCRT))
                        {
                            Decrement (Local1)
                        }
                        Else
                        {
                            Store (Zero, Local1)
                        }
                    }
                    Return (KELV (Local0))
                }
                Method (_PSL, 0, Serialized)
                {
                    If (LEqual (CPUN, 0x04))
                    {
                        Return (Package (0x04)
                        {
                            \_PR.P001, 
                            \_PR.P002, 
                            \_PR.P003, 
                            \_PR.P004
                        })
                    }
                    If (LGreaterEqual (CPUN, 0x02))
                    {
                        Return (Package (0x02)
                        {
                            \_PR.P001, 
                            \_PR.P002
                        })
                    }
                    Return (Package (0x01)
                    {
                        \_PR.P001
                    })
                }
                Method (_TSP, 0, NotSerialized)
                {
                    Multiply (TSP, 0x0A, Local0)
                    Return (Local0)
                }
                Method (_TC1, 0, NotSerialized)
                {
                    Return (TC1)
                }
                Method (_TC2, 0, NotSerialized)
                {
                    Return (TC2)
                }
                Method (_PSV, 0, NotSerialized)
                {
                    RPSV ()
                    If (PLCY)
                    {
                        Return (KELV (PPSV))
                    }
                    Else
                    {
                        Return (KELV (TPSV))
                    }
                }
                Method (_SCP, 1, NotSerialized)
                {
                    Store (Zero, PLCY)
                    Notify (THRM, 0x81)
                }
            }
        }
        Scope (_TZ)
        {
            Name (ATMP, 0x3C)
            Name (LTMP, 0x3C)
            Name (FANS, Zero)
            Method (RTMP, 0, NotSerialized)
            {
                If (\_SB.PCI0.SBRG.EC0.ECAV ())
                {
                    Store (\_SB.PCI0.SBRG.EC0.ECPU, Local0)
                    If (LLess (Local0, 0x80))
                    {
                        Store (Local0, LTMP)
                    }
                }
                Return (LTMP)
            }
            Method (RCRT, 0, NotSerialized)
            {
                If (\_SB.PCI0.SBRG.EC0.ECAV ())
                {
                    Store (\_SB.PCI0.SBRG.EC0.ECRT, Local0)
                    If (LLess (Local0, 0x80))
                    {
                        Store (Local0, TCRT)
                    }
                }
            }
            Method (RPSV, 0, NotSerialized)
            {
                If (\_SB.PCI0.SBRG.EC0.ECAV ())
                {
                    Store (\_SB.PCI0.SBRG.EC0.EPSV, Local0)
                    If (LLess (Local0, 0x80))
                    {
                        Store (Local0, TPSV)
                        Store (Local0, PPSV)
                    }
                }
            }
            Method (RFAN, 1, NotSerialized)
            {
                If (\_SB.PCI0.SBRG.EC0.ECAV ())
                {
                    Store (\_SB.PCI0.SBRG.EC0.TACH (Arg0), Local0)
                    Divide (Local0, 0x64, Local1, Local0)
                    Add (Local0, One, Local0)
                    If (LLessEqual (Local0, 0x3C))
                    {
                        Store (Local0, FANS)
                    }
                    Else
                    {
                        Store (FANS, Local0)
                    }
                }
                Else
                {
                    Store (Zero, Local0)
                }
                Return (Local0)
            }
            Method (RFSE, 0, NotSerialized)
            {
                If (\_SB.PCI0.SBRG.EC0.ECAV ())
                {
                    Store (\_SB.PCI0.SBRG.EC0.RFOV (Zero), Local1)
                    If (LLess (Local1, 0x80))
                    {
                        If (LLess (Local1, 0x0A))
                        {
                            Store (Zero, Local0)
                        }
                        Else
                        {
                            Store (One, Local0)
                        }
                    }
                    Else
                    {
                        If (LLess (Local1, 0xF5))
                        {
                            Store (0x02, Local0)
                        }
                        Else
                        {
                            Store (0x0F, Local0)
                        }
                    }
                }
                Else
                {
                    Store (Zero, Local0)
                }
                Return (Local0)
            }
            Method (TCHG, 0, NotSerialized)
            {
            }
            Method (THDL, 0, NotSerialized)
            {
            }
            Method (TMSS, 1, NotSerialized)
            {
            }
            Method (TMSW, 1, NotSerialized)
            {
            }
        }
    the code is semi complex but i believe we can adjust it with proper adjustments. (not too easy blindly.. its been a while for me.)
    heres whole dsdt in DSL text readable.. needs to be modded with proper adjustments then recompiled to machine language .AML then inserted to bios to flash.

    by the way i think its cause of _OSI "Windows 2009" not there.. shows 2006 aka Vista
    Code:
        Method (OSYS, 0, NotSerialized)
        {
            Store (0x10, Local0)
            If (CondRefOf (_OSI, Local1))
            {
                If (_OSI ("Windows 2000"))
                {
                    Store (0x12, Local0)
                }
                If (_OSI ("Windows 2001"))
                {
                    Store (0x13, Local0)
                }
                If (_OSI ("Windows 2001 SP1"))
                {
                    Store (0x13, Local0)
                }
                If (_OSI ("Windows 2001 SP2"))
                {
                    Store (0x13, Local0)
                }
                If (_OSI ("Windows 2001.1"))
                {
                    Store (0x14, Local0)
                }
                If (_OSI ("Windows 2001.1 SP1"))
                {
                    Store (0x14, Local0)
                }
                If (_OSI ("Windows 2006"))
                {
                    Store (0x15, Local0)
                }
            }
    heres the fixed rom with Windows 2009 added under 2006
    No slic .. i can add that next.
    http://www.mediafire.com/?ec7vfdcuuauhxwg
    slic version of above
    http://www.mediafire.com/?a1koo12sjd6o3ea
    first get familiarized with recovery methods for asus Ami bios.
     
  6. Lord_Azeroth

    Lord_Azeroth MDL Novice

    Jan 27, 2013
    29
    3
    0
    Thanks allot for your time spent, now to be clear- this laptop came with windows vista, i formated it and installed windows 7 64 bit official keys and everything . Now is it windows 7 to blame for the overheating? which file should i flash first?(preferably i would like to keep windows 7 on this laptop)
     
  7. Recursion

    Recursion MDL Junior Member

    Dec 26, 2012
    75
    4
    0
    It's very risky to flash. Make sure you have a recovery disk. Did you looked in Power Management from Windows? Normally it's make cpu runs at full speed but you can switch to an other power management. It's not always the dsdt or bios etc.
     
  8. Lord_Azeroth

    Lord_Azeroth MDL Novice

    Jan 27, 2013
    29
    3
    0
    ive tryed the windows power management, what it does cpu throttling...the problem is that i know that the fan can go at higher rpm while modifiyng the 00x90 bytes. asus nb probe always shows the fan at low and quiet setting, even when i edit the embedded controller and max out the fan
     
  9. Lord_Azeroth

    Lord_Azeroth MDL Novice

    Jan 27, 2013
    29
    3
    0
    also I used amibcp to edit my bios in showing all the options but when i enter fan control tab it shows nothing...
     
  10. Lord_Azeroth

    Lord_Azeroth MDL Novice

    Jan 27, 2013
    29
    3
    0
    also i can't find an utility to make a recovery cd....so this is do or die for me...
     
  11. LatinMcG

    LatinMcG Bios Borker

    Feb 27, 2011
    5,264
    1,422
    180
    since u have win7 key.. no slic needed. first link
     
  12. Lord_Azeroth

    Lord_Azeroth MDL Novice

    Jan 27, 2013
    29
    3
    0
    flashed with the non slic, bios works but windows dosent, gives a blue screen saying that acpi function not suported or something( it dissapers rapidly) trying now to boot into linux and copy an oficial bios file to the hardrive and relash from bios....God help me...!
     
  13. LatinMcG

    LatinMcG Bios Borker

    Feb 27, 2011
    5,264
    1,422
    180
    i think u have to reinstall windows due to ACPI now being controlled by dsdt "Windows 2009" (i seen this msg before)
     
  14. Lord_Azeroth

    Lord_Azeroth MDL Novice

    Jan 27, 2013
    29
    3
    0
    worth a shot, and if it fails then i wil try to boot linux and see if it works, and afterwards try to flash to the original bios from hardrive, hope it wont fail on me.
     
  15. LatinMcG

    LatinMcG Bios Borker

    Feb 27, 2011
    5,264
    1,422
    180
    linux will work.
    windows should work.
    if not flash original and we rework patched bios.. but im sure its cause it was changed from non acpi to acpi.
     
  16. Recursion

    Recursion MDL Junior Member

    Dec 26, 2012
    75
    4
    0
    so did you tried the acer_ec.pl script? my script is using the same register in the embedded controller. i can recommend read and write everywhere tool. also when program in pc it's all in little endian. you can find linux kenel module and a windows driver from me. look for fsc xa 3530 fan control.
     
  17. Lord_Azeroth

    Lord_Azeroth MDL Novice

    Jan 27, 2013
    29
    3
    0
    Sitrep: linux is working, burning a windows 7 disc now, and now that acpi is controling the fan do i need to install a different driver or program, like smartfan or it will just work perfectly?
     
  18. LatinMcG

    LatinMcG Bios Borker

    Feb 27, 2011
    5,264
    1,422
    180
    it should just work like vista
     
  19. Lord_Azeroth

    Lord_Azeroth MDL Novice

    Jan 27, 2013
    29
    3
    0
    you mean to say that windows 7 could not could not control the fan werry vell?
     
  20. Lord_Azeroth

    Lord_Azeroth MDL Novice

    Jan 27, 2013
    29
    3
    0
    tryed to format to windows, gives bluescreen that the system is not fully acpi compliant....i am now returning to linux, formating c drive and put the original bios file, hope it works