ProjectOSX

Welcome Guest!

Returning User? Login here.

Want membership privileges? Register here.

6 Pages V   1 2 3 > »   
Start a new topic Add Reply
> Acpimonitor, ACPIMonitor Plug-In Topic
THe KiNG
post Dec 9 2010, 08:38 PM
Post #1
Here we discuss the ACPIMonitor Plug-in

First, what is this?
- We use this driver to monitor Embedded Controller or Super I/O that is not supported by other FakeSMC HWSensors plug-ins.

Second, how to use it?
- To start using this driver, first we must know basic DSDT editing tehnique and also be lucky to have in DSDT Super I/O or Embedded Controller registers already set and figure out what are for. I will explain later how to use Everest Corporate or Ultimate Engenieer Edition to check those registers from Windows, maybe someone have an idea how to do it from OS X too...

Third, how driver works?
- Basicaly driver looks for a ACPI device that we must add it in DSDT and evaluates, based on a set of predefined keys, what we set there. A full list of allowed methods I will add later, but you can also look in source for what we have at this moment.
A short example:

CODE
Device (SMCD) // System Monitor and Controll Device
{
Name (_CID, "monitor") // Driver will look for this in order to load or not
Method (FSN0, 0, NotSerialized) // ACPIMonitor FAN 0 Speed
{
Store (^^PCI0.LPCB.EC.RPM1, Local0) // Store FAN 0 Tachometter to Local0
Return (Local0)
}

Method (TCPH, 0, NotSerialized) // ACPIMonitor CPU Heatsink Temperature
{
Store (^^PCI0.LPCB.EC.RTMP, Local0)
Return (Local0)
}
}


You can download the latest code from assembla using terminal like this:

QUOTE


Latest binary you will find in Downloads section

PLEASE POST HERE ONLY BUGS, IDEAS RELATED TO ACPIMonitor ONLY!

----------------------------
DSDT for Lion should be corrected as Jingu proposed
http://www.projectosx.com/forum/index.php?...ost&p=16192
Slice
post Dec 19 2010, 06:24 AM
Post #2
THe KiNG
I think it is not good to use SMCD for device name. The name is reserved for temperature!
CODE
    //Next step - temperature keys
    if (kIOReturnSuccess == TZDevice->evaluateInteger("SMCA", &tmp)){        
        value[0] = tmp;
        value[1] = 0x0;
        FakeSMCAddKey("TC0H", "sp78", 2, value, m_Binding);
        IOLog("FakeSMC_ACPI: %s registered\n", "TC0H");
    }
    if (kIOReturnSuccess == TZDevice->evaluateInteger("SMCB", &tmp)){        
        value[0] = tmp;
        value[1] = 0x0;
        FakeSMCAddKey("TN0H", "sp78", 2, value, m_Binding);
        IOLog("FakeSMC_ACPI: %s registered\n", "TN0H");
    }
    if (kIOReturnSuccess == TZDevice->evaluateInteger("SMCC", &tmp)){        
        value[0] = tmp;
        value[1] = 0x0;
        FakeSMCAddKey("TW0P", "sp78", 2, value, m_Binding);
        IOLog("FakeSMC_ACPI: %s registered\n", "TW0P");
    }
    if (kIOReturnSuccess == TZDevice->evaluateInteger("SMCD", &tmp)){        
        value[0] = tmp;
        value[1] = 0x0;
        FakeSMCAddKey("Th0H", "sp78", 2, value, m_Binding);
        IOLog("FakeSMC_ACPI: %s registered\n", "Th0H");
    }
    if (kIOReturnSuccess == TZDevice->evaluateInteger("SMCE", &tmp)){        
        value[0] = tmp;
        value[1] = 0x0;
        FakeSMCAddKey("Th1H", "sp78", 2, value, m_Binding);
        IOLog("FakeSMC_ACPI: %s registered\n", "Th1H");
    }

May be collect here DSDT samples with working ACPImonitor?
CODE
Device (LPCB)
{
Name (_ADR, 0x001F0000)
Device (WSEC)
{
Name (TBSE, 0x0AAC)
Name (_HID, EisaId ("PNP0C02"))
Name (_CID, "monitor")
Name (_CRS, ResourceTemplate ()
{
IO (Decode16,
0x004E, // Range Minimum
0x004E, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x0068, // Range Minimum
0x0068, // Range Maximum
0x01, // Alignment
0x08, // Length
)
Memory32Fixed (ReadWrite,
0xFF800000, // Address Base
0x00100000, // Address Length
)
Memory32Fixed (ReadWrite,
0xFFC00000, // Address Base
0x00100000, // Address Length
)
})
OperationRegion (MBOX, SystemMemory, 0xFF800000, 0x0200)
Field (MBOX, ByteAcc, Lock, Preserve)
{
Offset (0x101),
MBX0, 8,
MBX1, 8,
MBX2, 8,
MBX3, 8,
MBX4, 8,
MBX5, 8,
MBX6, 8,
MBX7, 8,
MBX8, 8,
MBX9, 8
}

OperationRegion (TMIF, SystemMemory, 0xFF800160, 0x20)
Field (TMIF, ByteAcc, Lock, Preserve)
{
THS0, 8,
THS1, 8,
THS2, 8,
THS3, 8,
Offset (0x08),
FAN1, 8,
Offset (0x10),
TSP0, 8, // 0x7e = 126
TSC0, 8, // 0x7e = 126
TSP1, 8, // 0x61 = 97
TSC1, 8 // 0x64 = 100
}

OperationRegion (KBMP, SystemMemory, 0xFF800180, 0x70)
Field (KBMP, ByteAcc, Lock, Preserve)
{
}

Method (C2K, 1, NotSerialized) //celsius to kelvin
{
Store (Arg0, Local0)
If (LLessEqual (Local0, 0x10))
{
Store (0x1E, Local0)
}

If (LGreaterEqual (Local0, 0x7F))
{
Store (0x1E, Local0)
}

Add (Multiply (Local0, 0x0A), TBSE, Local0) // TBSE=0x0AAC
Return (Local0)
}

Method (SMC0, 0, NotSerialized) //System FAN0
{
Store (FAN1, Local0)
Return (Local0)
}

Method (SMCA, 0, NotSerialized) //CPU heatsink
{
Store (THS2, Local0)
Return (Local0)
}

Method (SMCB, 0, NotSerialized) //MCH Northbridge
{
Store (THS1, Local0)
Return (Local0)
}

Method (SMCE, 0, NotSerialized) //AUX sensor
{
Store (THS3, Local0)
Return (Local0)
}
/*
Method (SMCD, 0, NotSerialized) //AUX sensor Th0H
{
Store (TSP0, Local0)
Return (Local0)
}

Method (SMCE, 0, NotSerialized) //AUX sensor Th1H
{
Store (TSP1, Local0)
Return (Local0)
}
*/
}
Пожалуйста, прочитайте ЧаВо!
i3-2120 GA-H61M-S1, Radeon HD6670, ALC887(VoodooHDA 2.8.4), OS⌘10.9.1, OS⌘ 10.7.5 Clover FakeSMC_plugins_3.3.1 Realtek LAN v3.1.2
THe KiNG
post Dec 19 2010, 10:40 AM
Post #3
QUOTE (Slice @ Dec 19 2010, 08:24 AM) *
THe KiNG
I think it is not good to use SMCD for device name. The name is reserved for temperature!
May be collect here DSDT samples with working ACPImonitor?

Well Mozodojo modified those in the latest source...
Yes we need to set those in a list.

Another thing that needs attention is about SMC keys we use versus mac model, e.g. on MCP7x platform there is TC0D(guess standard for all CPU's) but no key for heatsink TC0H, instead it use TC0P CPU Proximity, and TC0F no idea what is for.
Same goes for GPU, it has TG0D, TG0P and TG0F.

Latest iStat reads correct TC0P(i have to try TC0F too), not the free version.

So the question is what we want, correct keys injected for correct mac model, or just monitoring them but it may have unknown result in OS functions...
Mojodojo
post Dec 19 2010, 11:02 AM
Post #4
QUOTE (THe KiNG @ Dec 19 2010, 12:40 PM) *
Well Mozodojo modified those in the latest source...
Yes we need to set those in a list.

Another thing that needs attention is about SMC keys we use versus mac model, e.g. on MCP7x platform there is TC0D(guess standard for all CPU's) but no key for heatsink TC0H, instead it use TC0P CPU Proximity, and TC0F no idea what is for.
Same goes for GPU, it has TG0D, TG0P and TG0F.

Latest iStat reads correct TC0P(i have to try TC0F too), not the free version.

So the question is what we want, correct keys injected for correct mac model, or just monitoring them but it may have unknown result in OS functions...


It is iStat function(feature) not an OS. In my experiments I've found Mac OS and its drivers doesn't care about any sensor keys. I am using custom model name and iStat Menus probing and binding all sensor it knows.

This post has been edited by Mojodojo: Dec 19 2010, 11:07 AM
GA-Z87X-UD3H • Haswell i5-4670K • 8Gb G.Skill Sniper • Zotac GTX 680 • D-Link DWA-556 Wi-Fi • ALC898 & Creative Recon3D USB & Asus Xonar U3 USB
THe KiNG
post Dec 19 2010, 11:39 AM
Post #5
QUOTE (Mojodojo @ Dec 19 2010, 01:02 PM) *
It is iStat function(feature) not an OS. In my experiments I've found Mac OS and its drivers doesn't care about any sensor keys. I am using custom model name and iStat Menus probing and binding all sensor it knows.

Well I tried to use MacBookAir3,1 as model name and AGPM complained about GPU SMC missing key, so is not just cosmetic, OS X may look for those setting PM policy...
FormerlyKnownAs
post Dec 19 2010, 03:41 PM
Post #6
QUOTE (THe KiNG @ Dec 9 2010, 08:38 PM) *
CODE
Device (SMCD) // System Monitor and Controll Device
{
Name (_HID, "monitor") // Driver will look for this in order to load or not
Method (FSN0, 0, NotSerialized) // ACPIMonitor FAN 0 Speed
{
Store (^^PCI0.LPCB.EC.RPM1, Local0) // Store FAN 0 Tachometter to Local0
Return (Local0)
}

Method (TCPH, 0, NotSerialized) // ACPIMonitor CPU Heatsink Temperature
{
Store (^^PCI0.LPCB.EC.RTMP, Local0)
Return (Local0)
}
}


Should that not be:
CODE
Device (SMCD) // System Monitor and Controll Device
{
Name (_CID, "monitor") // Driver will look for this in order to load or not
Method (FSN0, 0, NotSerialized) // ACPIMonitor FAN 0 Speed
{
Store (^^PCI0.LPCB.EC.RPM1, Local0) // Store FAN 0 Tachometter to Local0
Return (Local0)
}

Method (TCPH, 0, NotSerialized) // ACPIMonitor CPU Heatsink Temperature
{
Store (^^PCI0.LPCB.EC.RTMP, Local0)
Return (Local0)
}
}

?
10.6.4 retail, SW RAID0, Chameleon 2 (Some variant of!), DSDT tickled a little b1t
Intel Core 2 Quad Processor Q9450
MSI Platinum/ Zilent P45 - EFI BIOS v1.0 current backup - asus p5q pro turbo
XFX Radeon HD5770 1GD DDR5
4GB Crucial DDR2 PC2 8500 1066MHz
THe KiNG
post Dec 19 2010, 05:14 PM
Post #7
No, b/c driver it looks for IONameMatch (name in ioreg), _CID is CompatibleID(compatible in ioreg).
FormerlyKnownAs
post Dec 19 2010, 06:17 PM
Post #8
QUOTE (THe KiNG @ Dec 19 2010, 05:14 PM) *
No, b/c driver it looks for IONameMatch (name in ioreg), _CID is CompatibleID(compatible in ioreg).



Ok but with latest iasl I get an error with:
CODE
Device (SMCD)
{
Name (_HID, "monitor")
Method (FSN0, 0, NotSerialized)
{
Store (^^SIOR.HWF1, Local0)
Return (Local0)
}

Method (FSN1, 0, NotSerialized)
{
Store (^^SIOR.HWF2, Local0)
Return (Local0)
}
}



/Users/D/Documents/OSX Install Files/Asus P5Q Pro/DSDT/DSDT-19-12-10.dsl 1953: Name (_HID, "monitor")
Error 4124 - Non-hex letters must be upper case ^ (monitor)


I must use:

Name (_HID, "MONITOR")

I which case it doesn't match!?
So I change IONamematch in both plists and ....
D

This post has been edited by FormerlyKnownAs: Dec 19 2010, 06:48 PM
10.6.4 retail, SW RAID0, Chameleon 2 (Some variant of!), DSDT tickled a little b1t
Intel Core 2 Quad Processor Q9450
MSI Platinum/ Zilent P45 - EFI BIOS v1.0 current backup - asus p5q pro turbo
XFX Radeon HD5770 1GD DDR5
4GB Crucial DDR2 PC2 8500 1066MHz
THe KiNG
post Dec 19 2010, 06:51 PM
Post #9
Latest iasl is, lets say too strict..., sometimes is good, sometimes is a PITA.
Why do you think apple and rest of vendors use 2005 version?

Anyway to fix your issue you have several ways.

Most simple is to edit also the info.plist and instead monitor, replace with MONITOR, if you like latest iasl that much or until we set a better solution for this.
FormerlyKnownAs
post Dec 19 2010, 07:03 PM
Post #10
QUOTE (THe KiNG @ Dec 19 2010, 06:51 PM) *
Latest iasl is, lets say too strict..., sometimes is good, sometimes is a PITA.
Why do you think apple and rest of vendors use 2005 version?

Anyway to fix your issue you have several ways.

Most simple is to edit also the info.plist and instead monitor, replace with MONITOR, if you like latest iasl that much or until we set a better solution for this.


OK I replaced IONamematch with MONITOR in both plist, and I'm back to the same problem I have when using _CID, "monitor"

I have 2 Fans on HWF1 and HWF2.
If I make separate DSDT entries under FSN0 and FSN1 only one fan returns a value in iStat [always (named in iStats Menu) Fan1 returns zero] - doesn't matter which order I list the HWFx in DSDT.
**would attach grab but don;t have the option with safari?**

If I make just one DSDT entry for either HWF1 or HWF2 under FSN0 a value is returned in iStat Menu for whichever I've listed.

Current DSDT entry:
CODE
Device (SMCD)
{
Name (_HID, "MONITOR")
Method (FSN0, 0, NotSerialized)
{
Store (^^SIOR.HWF1, Local0)
Return (Local0)
}

Method (FSN1, 0, NotSerialized)
{
Store (^^SIOR.HWF2, Local0)
Return (Local0)
}
}


Any help really appreciated.
D

This post has been edited by FormerlyKnownAs: Dec 20 2010, 08:15 PM
10.6.4 retail, SW RAID0, Chameleon 2 (Some variant of!), DSDT tickled a little b1t
Intel Core 2 Quad Processor Q9450
MSI Platinum/ Zilent P45 - EFI BIOS v1.0 current backup - asus p5q pro turbo
XFX Radeon HD5770 1GD DDR5
4GB Crucial DDR2 PC2 8500 1066MHz
Sebinouse
post Dec 20 2010, 08:01 PM
Post #11
I've been trying to load this kext for a long time now, without any success (even with the former FakeSMCACPIMonitor.kext). It never seems to be loaded !
  • With FakeSMC and ACPIMonitor in /E/E
  • With ACPIMonitor in E/E/FakeSMC/Contents/PlugIns

CODE
20/12/10 19:32:28    com.apple.kextd[10]    /Extra/Extensions/FakeSMC.kext/Contents/PlugIns/ACPIMonitor.kext - no dependency found for org.netkas.FakeSMC.
20/12/10 19:32:28    com.apple.kextd[10]    Can't load /Extra/Extensions/FakeSMC.kext/Contents/PlugIns/ACPIMonitor.kext - failed to resolve dependencies.
20/12/10 19:32:28    com.apple.kextd[10]    Failed to load /Extra/Extensions/FakeSMC.kext/Contents/PlugIns/ACPIMonitor.kext - (libkern/kext) dependency resolution failure.


I tried these two configurations with this DSDT edit inside two locations :
CODE
// Fan Speed SMC
Method (SMC0, 0, NotSerialized)
{
Store (\_SB.PCI0.LPC.EC.HFSP, Local0)
Return (Local0)
}
// CPU temp SMC
Method (SMCA, 0, NotSerialized)
{
Store (\_SB.PCI0.LPC.EC.TMP0, Local0)
Return (Local0)
}
// Northbridge temp SMC ?
Method (SMCB, 0, NotSerialized)
{
Store (\_SB.PCI0.LPC.EC.TMP1, Local0)
Return (Local0)
}
// GPU temp SMC ?
Method (SMCC, 0, NotSerialized)
{
Store (\_SB.PCI0.LPC.EC.TMP4, Local0)
Return (Local0)
}

After
CODE
Scope (_TZ)
{

or
CODE
                Device (EC)
                {
                    Name (_HID, EisaId ("PNP0C09"))
                    Name (_UID, Zero)
                    Name (_GPE, 0x1C)
                    Method (_REG, 2, NotSerialized)


Any idea where to begin to get this to load properly ? huh.gif

This post has been edited by Sebinouse: Dec 20 2010, 08:04 PM
Lenovo X60t (6363-AQ8)
    Intel CoreDuo 1,67 GHz (L2400)
    3 Go / 320 Go / GMA950 / FW 400 / SD Card
    Bluetooth / Wifi AR5BXB6 / Tablet

    WinXP / MacOSX 10.6.5 (DSDT patch and vanilla SLE)
FormerlyKnownAs
post Dec 20 2010, 08:20 PM
Post #12
You haven't added:
Name (_HID, "monitor")
To either a dummy SMC device or to your superIO device in DSDT - whichever device you've add your acpimonitor methods to.

The plugin is looking for that call - This is clearly stated in the 1st post and discussed in my last few posts above!

D

This post has been edited by FormerlyKnownAs: Dec 20 2010, 08:23 PM
10.6.4 retail, SW RAID0, Chameleon 2 (Some variant of!), DSDT tickled a little b1t
Intel Core 2 Quad Processor Q9450
MSI Platinum/ Zilent P45 - EFI BIOS v1.0 current backup - asus p5q pro turbo
XFX Radeon HD5770 1GD DDR5
4GB Crucial DDR2 PC2 8500 1066MHz
Sebinouse
post Dec 20 2010, 08:24 PM
Post #13
QUOTE (FormerlyKnownAs @ Dec 20 2010, 09:20 PM) *
You haven't added:
Name (_HID, "monitor")
To either a dummy SMC device or to your superIO device in DSDT.

The plugin is looking for that call - This is clearly stated in the 1st post and discussed in my last few posts above!

D


And ... you're right ! Sorry for that !
CODE
Name (_HID, "monitor") // Driver will look for this in order to load or not

Lenovo X60t (6363-AQ8)
    Intel CoreDuo 1,67 GHz (L2400)
    3 Go / 320 Go / GMA950 / FW 400 / SD Card
    Bluetooth / Wifi AR5BXB6 / Tablet

    WinXP / MacOSX 10.6.5 (DSDT patch and vanilla SLE)
Sebinouse
post Dec 20 2010, 09:13 PM
Post #14
Thanks a lot ! laugh.gif
Adding a dummy device did the trick !
CODE
Device (SMCD) // System Monitor and Controll Device
{
Name (_HID, "monitor") // Driver will look for this in order to load or not
Method (FSN0, 0, NotSerialized) // ACPIMonitor FAN 0 Speed
{
Store (\_SB.PCI0.LPC.EC.HFSP, Local0) // Store FAN 0 Tachometter to Local0
Return (Local0)
}

Method (TCPH, 0, NotSerialized) // ACPIMonitor CPU Heatsink Temperature
{
Store (\_SB.PCI0.LPC.EC.TMP0, Local0)
Return (Local0)
}
}

SMC_utils gives :
CODE
  F0Ac  [fpe2]  6 (bytes 00 18)
  F0ID  [ch8*]  (bytes 53 79 73 74 65 6d 20 46 61 6e)
  Th0H  [sp78]  (bytes 3d 00)

I need further investigation to get these things right (Fan Speed 6 rpm ??? blink.gif )

This post has been edited by Sebinouse: Dec 21 2010, 03:44 PM
Lenovo X60t (6363-AQ8)
    Intel CoreDuo 1,67 GHz (L2400)
    3 Go / 320 Go / GMA950 / FW 400 / SD Card
    Bluetooth / Wifi AR5BXB6 / Tablet

    WinXP / MacOSX 10.6.5 (DSDT patch and vanilla SLE)
Sebinouse
post Dec 21 2010, 12:20 AM
Post #15
I have some trouble to properly read my Fan Speed. Here is what SMC_Utils report :
CODE
  F0Ac  [fpe2]  6 (bytes 00 18)
  F0ID  [ch8*]  (bytes 53 79 73 74 65 6d 20 46 61 6e)

And this is INDEPENDENT from the actual Fan Speed ! angry.gif

On Thinkpads, the ACPI entry "Fan Speed in rpm" is HFNI : EC register 0x84 (LSB), 0x85 (MSB) ; "Fan Control" is HFSP : EC register 0x2f (8 bits).

I am able to control HFSP with DSDT (Hotkey), and I can monitor the change with ACPIMonitor. But whenever I try to read HFNI, I get "6" (or 0x06 ?) whatever control mode (and, therefore, actual fan speed) I select .

I found this on a linux acpi source code :
QUOTE
FIRMWARE BUG: always read 0x84 first, otherwise incorrect readings might result.

How can I do that with ACPIMonitor.kext ?

Here is a part of my DSDT (if it helps ...) :

CODE
Device (EC)
{
Name (_HID, "PNP0C09") // Driver will look for this in order to load or not
Name (_UID, Zero)
Name (_GPE, 0x1C)
Method (_REG, 2, NotSerialized)
{
If (LEqual (Arg0, 0x03))
{
Store (Arg1, H8DR)
}
}


OperationRegion (ECOR, EmbeddedControl, Zero, 0x0100)
Field (ECOR, ByteAcc, NoLock, Preserve)
{
HDBM, 1,
, 1,
, 1,
HFNE, 1,
, 1,
, 1,
HLDM, 1,
Offset (0x01),
HDIM,
...
Offset (0x2A),
HATR, 8,
HT0H, 8,
HT0L, 8,
HT1H, 8,
HT1L, 8,
HFSP, 8,
, 6,
HMUT, 1,
Offset (0x31),
...
Offset (0x78),
TMP0, 8,
TMP1, 8,
TMP2, 8,
TMP3, 8,
TMP4, 8,
TMP5, 8,
TMP6, 8,
TMP7, 8,
Offset (0x81),
HIID, 8,
Offset (0x83),
HFNI, 8,
Offset (0x88),
...
}
Lenovo X60t (6363-AQ8)
    Intel CoreDuo 1,67 GHz (L2400)
    3 Go / 320 Go / GMA950 / FW 400 / SD Card
    Bluetooth / Wifi AR5BXB6 / Tablet

    WinXP / MacOSX 10.6.5 (DSDT patch and vanilla SLE)
THe KiNG
post Dec 21 2010, 05:46 AM
Post #16
ACPIMonitor is an interface b/w ACPI and what you set there and our virtual SMC.
What you gave him is what it will pass to FakeSMC.

The registers you have on embedded controller are mostly tachometers.
What I posted in the first post is just an example of how to implement it for FAN's, that dosen't have inside a formula for calculating rpm.

An example from my ASUS notebook:

CODE
Method (FSN0, 0, NotSerialized) // Notebook FAN
{
Store (^^EC0.TAH0, Local0)
Store (0x80, Local1)
Store (0x02, Local2)
Multiply (Local1, Local2, Local3)
Multiply (Local0, Local3, Local4)
Divide (0x03938700, Local4, Local5, Local6)
Multiply (Local6, 0x0A, Local6)
Return (Local6)
}
Sebinouse
post Dec 21 2010, 10:49 AM
Post #17
QUOTE (THe KiNG @ Dec 21 2010, 06:46 AM) *
ACPIMonitor is an interface b/w ACPI and what you set there and our virtual SMC.
What you gave him is what it will pass to FakeSMC.

The registers you have on embedded controller are mostly tachometers.
What I posted in the first post is just an example of how to implement it for FAN's, that dosen't have inside a formula for calculating rpm.


OK, my formula is quite simple :
CODE
speed = (MSB << 8) | LSB


What I really don't know is how to get MSB and LSB !

I know where they are (^^EC offset 0x84 and ^^EC offset 0x85), I guess they are both 8 bit long and my problem is that I don't know what I get when I call ^^EC.HFNI (^^EC offset 0x84 .... but what lenght ... )

Is there a way to store directly ^^EC from offset 0x84 and ^^EC from offset 0x85 without calling ^^EC.HFNI ? (the DSDT of my "Device (EC)" is in my previous post)

Thanks rolleyes.gif

This post has been edited by Sebinouse: Dec 21 2010, 03:46 PM
Lenovo X60t (6363-AQ8)
    Intel CoreDuo 1,67 GHz (L2400)
    3 Go / 320 Go / GMA950 / FW 400 / SD Card
    Bluetooth / Wifi AR5BXB6 / Tablet

    WinXP / MacOSX 10.6.5 (DSDT patch and vanilla SLE)
Slice
post Dec 21 2010, 11:15 AM
Post #18
QUOTE (THe KiNG @ Dec 21 2010, 09:46 AM) *
An example from my ASUS notebook:

CODE
            Method (FSN0, 0, NotSerialized) // Notebook FAN
            {
                Store (^^EC0.TAH0, Local0)
                Store (0x80, Local1)
                Store (0x02, Local2)
                Multiply (Local1, Local2, Local3)
                Multiply (Local0, Local3, Local4)
                Divide (0x03938700, Local4, Local5, Local6)
                Multiply (Local6, 0x0A, Local6)
                Return (Local6)
            }

May be it's a time to simplify the formula?
I am ready to rewrite ACPIMonitor.
Пожалуйста, прочитайте ЧаВо!
i3-2120 GA-H61M-S1, Radeon HD6670, ALC887(VoodooHDA 2.8.4), OS⌘10.9.1, OS⌘ 10.7.5 Clover FakeSMC_plugins_3.3.1 Realtek LAN v3.1.2
THe KiNG
post Dec 21 2010, 12:00 PM
Post #19
QUOTE (Slice @ Dec 21 2010, 01:15 PM) *
May be it's a time to simplify the formula?
I am ready to rewrite ACPIMonitor.

I don't think a complete rewrite is necessary, but adjustments and more keys implementation yes.

Especial on FAN's, problem is that we have two situations:
- First, where the DSDT contain correct FAN read/write methods, especial found on ASUS machines since it use ACPI intense.
- Second, where we have FAN(s) implemented but wrong(most cases) or we don't have it at all and we figure the EC/SuperIO registers from various sources.

Now, I don't know if tachometer/rpm formula is the same for all fan's(you should know better) but we can do two implementations types for FAN's, one that use tachometers form registers, and one that simple reads rpm as we set(as is now)

e.g. use FSN%d for direct rpm and FTN%d for tachometers.

What do you think?

Another thing, I managed to get FAN On/Off using EC registers based on CPU temp, problem is that FAN speed reports latest rpm instead 0 when is off.
Sebinouse
post Dec 21 2010, 12:18 PM
Post #20
QUOTE (THe KiNG @ Dec 21 2010, 01:00 PM) *
I don't think a complete rewrite is necessary, but adjustments and more keys implementation yes.

Especial on FAN's, problem is that we have two situations:
- First, where the DSDT contain correct FAN read/write methods, especial found on ASUS machines since it use ACPI intense.
- Second, where we have FAN(s) implemented but wrong(most cases) or we don't have it at all and we figure the EC/SuperIO registers from various sources.

Now, I don't know if tachometer/rpm formula is the same for all fan's(you should know better) but we can do two implementations types for FAN's, one that use tachometers form registers, and one that simple reads rpm as we set(as is now)

e.g. use FSN%d for direct rpm and FTN%d for tachometers.

That seems great laugh.gif


QUOTE (THe KiNG @ Dec 21 2010, 01:00 PM) *
I managed to get FAN On/Off using EC registers based on CPU temp, problem is that FAN speed reports latest rpm instead 0 when is off.

Can you share how you do so ? I am VERY interested in this !
Lenovo X60t (6363-AQ8)
    Intel CoreDuo 1,67 GHz (L2400)
    3 Go / 320 Go / GMA950 / FW 400 / SD Card
    Bluetooth / Wifi AR5BXB6 / Tablet

    WinXP / MacOSX 10.6.5 (DSDT patch and vanilla SLE)

6 Pages V   1 2 3 > » 
Add Reply Start a new topic
2 User(s) are reading this topic (2 Guests and 0 Anonymous Users)
0 Members: