ProjectOSX

Welcome Guest!

Returning User? Login here.

Want membership privileges? Register here.

49 Pages V   1 2 3 > »   
Start a new topicClosed
> Monitoring With Fakesmc
Slice
post May 23 2010, 07:40 PM
Post #1
First of all thanks to Netkas for the new era in Hackintoshes - FakeSMC.
Now we joined our efforts to make a tool for monitoring temperatures, fans and other sensors or parameters.
Mozo - maintainer, me and usr-sse2 - team members.

The project is based on Netkas's 2.5 version but with plugin support. It is opensource and located at www.assembla.com.
Sources can be obtained by SVN
svn co http://subversion.assembla.com/svn/fakesmc

Plugins created:
IntelThermal - Intel CPU temperature monitoring.
LPCMonitor - temperatures and fans from ITE, Winbond and Fintek controllers. - now replaced by SuperIO plugin
TZplugin - temperature from ACPI device "Thermal Zone" - now excluded by ACPI monitor replacement
NVidia GPU temperature and FAN
Intel X3100 temperature
Radeon temperature
ACPI monitor - temperatures, fans, voltage, current - all that you can find in your DSDT. Manual DSDT modifying required. Look posts 10-23
For example
CODE
                //Slice - there is my ACPI monitor device
                Device (SPIO)
                {
                    Name (_CID, "monitor")
                                        Name (_STA, 0x0F)
                    Method (SMC0, 0, NotSerialized) //System FAN0
                    {
                        Store (\_TZ.TZ0.FRSP(), Local0)
                        Return (Local0)
                     }
                    
                    Method (SMCA, 0, NotSerialized) //CPU heatsink
                    {
                        Store (\_SB.PCI0.LPC0.EC0.RTMP, Local0)
                        Return (Local0)
                     }
                    
                }

Attached File  Screen_shot_2010_07_26_at_15.42.57.png ( 61.04K ) Number of downloads: 4487

How to install FakeSMC

To look the values you need iStatMenu or iStatPro.
The last one I have modified to show battery info.
Attached File  iStat_pro.wdgt_wBattery.zip ( 528.51K ) Number of downloads: 3106


To monitor Thermal Zone (- deprecated) you need AppleACPIThermal.kext.
Correct it dependency to your AppleACPIPlatform version.
Attached File  AppleACPIThermal.kext.zip ( 11.94K ) Number of downloads: 2627

About it look at the thread

Utility to check all SMC values
Attached File  SMC_util2.zip ( 9.16K ) Number of downloads: 4978


21.06.2010
Bugs corrected, devices added, improvements.
Now there are 2 plugins for the same purpose, use only one of them
SuperIO supports ITE, Winbond, Fintek
SMCITEController supports only ITE but more functions then SuperIO.

06.07.2010
Attached File  FakeSMC.kext_Tiger_rev277.zip ( 74.83K ) Number of downloads: 485


26.07.2010
New revision.
* Add Radeon support
* Add NSC support
* Add CPU freq monitor (CPUi.kext used together with IntelThermal.kext) for use with smcK utility.
* different enhancements
If you have ITE chip you can replace SuperIO plugin by SMCITEController plugin for use with smcK utility.
Attached File  smcK_Stat_i.app.zip ( 94.47K ) Number of downloads: 2008

28.07.2010
Bugs corrected, new devices added

13.09.2010
Updates. Mistakes with x3100.
Attached File  FakeSMC_rev405_Snow.zip ( 302.08K ) Number of downloads: 6943

Attached File  FakeSMC_rev405_Leo.zip ( 157.38K ) Number of downloads: 1038


For some ASUS nVidia 9800 there is more correct FakeSMCnVclock
New FakeSMCIntelMonitor is a replacement for IntelThermal+CPUi. Also provides CPU voltage.
29.10.2010 One bug corrected. Check link above.
i3-2120 GA-H61M-S1 UEFI, Radeon HD6670-UEFI, ALC887(VoodooHDA 2.8.6), OS⌘10.9.5, OS⌘ 10.7.5 Clover FakeSMC_plugins_3.3.1 Realtek LAN v3.1.2
Onixs
post May 24 2010, 12:52 AM
Post #2
Great!. Its working on my Wind, S10 Netbooks. I will test it more. smile.gif
Asus P8H67M-Pro . Intel Ivy Bridge i5 3330 . 16GB DDR3-1333MHZ . Geforce GT430 (2GB) . ALC887. OSX: Yosemite
Slice
post May 24 2010, 07:05 AM
Post #3
QUOTE (rals2007 @ May 24 2010, 04:52 AM) *
Great!. Its working on my Wind, S10 Netbooks. I will test it more. smile.gif

Screenshot, please.
i3-2120 GA-H61M-S1 UEFI, Radeon HD6670-UEFI, ALC887(VoodooHDA 2.8.6), OS⌘10.9.5, OS⌘ 10.7.5 Clover FakeSMC_plugins_3.3.1 Realtek LAN v3.1.2
boombeng
post May 24 2010, 09:46 AM
Post #4
Hi, thx for this great work but it doesn't work on my MSI P45T C51, no more cpu temp when this new fakesmc is loaded, i can only monitor smart hdd
Slice
post May 24 2010, 10:50 AM
Post #5
QUOTE (boombeng @ May 24 2010, 01:46 PM) *
Hi, thx for this great work but it doesn't work on my MSI P45T C51, no more cpu temp when this new fakesmc is loaded, i can only monitor smart hdd

It is really strange. I install plugin, reboot and see it is not loaded.
Load manually - works.
Clear caches, delete mkext and so on.
Next day this plugin loaded at boot and works fine.
i3-2120 GA-H61M-S1 UEFI, Radeon HD6670-UEFI, ALC887(VoodooHDA 2.8.6), OS⌘10.9.5, OS⌘ 10.7.5 Clover FakeSMC_plugins_3.3.1 Realtek LAN v3.1.2
boombeng
post May 24 2010, 11:10 AM
Post #6
I added
CODE
    <key>OSBundleRequired</key>
    <string>Root</string>

to the 3 plugins and get a kernel Panic on LPCMonitor
Clubber_77
post May 24 2010, 01:11 PM
Post #7
Attached File  Clubber_77.zip ( 358.35K ) Number of downloads: 476
Onixs
post May 24 2010, 01:52 PM
Post #8
QUOTE (Slice @ May 24 2010, 04:05 PM) *
Screenshot, please.


i too have a random KP. Tried loading in /Extra or S/L/E. I thought i had it working, but seems its not stable dur to the KP regarding the Thermal plugins.
Asus P8H67M-Pro . Intel Ivy Bridge i5 3330 . 16GB DDR3-1333MHZ . Geforce GT430 (2GB) . ALC887. OSX: Yosemite
Trauma
post May 24 2010, 05:05 PM
Post #9
Great work!! This is working flawlessly here biggrin.gif

Attached File  SMCMON.jpg ( 52.07K ) Number of downloads: 2068


Thx!

EDIT: Would it be possible to label the fans ? ex: CPU, front, back.... like in real macs.
EDIT 2: I know we are talking about monitoring, but is there any chance to have the fan speed profiles working?

This post has been edited by Trauma: May 24 2010, 07:34 PM
THe KiNG
post May 24 2010, 07:37 PM
Post #10
Finally! smile.gif
Was hard to read on apple.ru tongue.gif

I do have same KP on LPC plugin on W83667HG, have to put it on mkext to get it loaded, but KP.
What I noticed playing with old version, it dosen't like more then 3 fans, when I added 4(since first 4 are all on BANK0 so no need to play with BSEL) i got KP sad.gif
Also got stuck on divisor stuff, still don't get that code...

Here are my ASUS DSDT entry's for it:

CODE
Device (SIOR)
{
Name (_HID, EisaId ("PNP0C02"))
Name (_UID, 0x2E)
Name (_CRS, ResourceTemplate ()
{
IO (Decode16,
0x0290, // Range Minimum
0x0290, // Range Maximum
0x00, // Alignment
0x10, // Length
)
})
OperationRegion (HWRE, SystemIO, 0x0290, 0x0A)
Field (HWRE, ByteAcc, NoLock, Preserve)
{
Offset (0x05),
HIDX, 8,
HDAT, 8
}

IndexField (HIDX, HDAT, ByteAcc, NoLock, Preserve)
{
Offset (0x04),
CHNM, 1, // SYSFANOUT_SEL. SYSFANOUT Output Mode Selection.
CFNM, 1, // CPUFANOUT_SEL. CPUFANOUT Output Mode Selection.
CHNS, 2, // SYSFANOUT_MODE. SYSFANOUT Mode Control.
CFNS, 2, // CPUFANOUT_MODE. CPUFANOUT Mode Control.
Offset (0x05),
SYST, 8, // SYSTIN Target Temperature Register/ SYSFANIN Target Speed Register
TRGT, 8, // CPUTIN Target Temperature Register/ CPUFANIN Target Speed Register
TTRG, 8, // Tolerance of Target Temperature or Target Speed Register
Offset (0x08),
SSDN, 8, // SYSFANOUT Stop Value Register
CSDN, 8, // CPUFANOUT Stop Value Register
SSUP, 8, // SYSFANOUT Start-up Value Register
CSUP, 8, // CPUFANOUT Start-up Value Register
SSTP, 8, // SYSFANOUT Stop Time Register
CSTP, 8, // CPUFANOUT Stop Time Register
Offset (0x20),
VCOR, 8, // CPUVCORE reading / Vcore Voltage
V12V, 8, // VIN0 reading / +12 Voltage
Offset (0x23),
V33V, 8, // 3VCC reading / +3.3 Voltage
V50V, 8, // VIN1 reading / +5 Voltage
VIN2, 8, // VIN2 reading
VIN3, 8, // VIN3 reading
Offset (0x27),
MBTE, 8, // SYSFAN temperature source reading / MotherBoard Temperature
FAN1, 8, // SYSFANIN reading (BANK0) / MotherBoard FAN(CHASSIS1 FAN Speed)
FAN2, 8, // CPUFANIN reading (BANK0) / CPU FAN Speed
FAN3, 8, // AUXFANIN reading (BANK0) / POWER FAN Speed
Offset (0x3F),
CFN3, 8, // AUXFANIN1 reading (BANK0) / CHASSIS2 FAN Speed
Offset (0x47),
FDR1, 8, // Fan Divisor Register I
Offset (0x4B),
FD13, 8, // Fan Divisor Register II
FD15, 8,
Offset (0x4E),
BSEL, 4, // Register 50h ~ 5Fh Bank Select Register
Offset (0x4F),
Offset (0x50),
TSR1, 8,
, 7,
TSR2, 1,
Offset (0x53),
FAN4, 8, // AUXFANIN2 reading (BANK5) / CHASSIS3 FAN Speed
Offset (0x59),
FND4, 8,
Offset (0x5D),
FD21, 8
}

Name (SNCT, 0x00)
Name (E1BK, 0x00)
Method (HWV0, 0, NotSerialized)
{
Return (Multiply (VCOR, 0x08))
}

Method (HWV1, 0, NotSerialized)
{
Return (Multiply (V12V, 0x08))
}
..........................


Didnt got time to comment all...

Waiting for news smile.gif

Thanks!
Slice
post May 24 2010, 08:20 PM
Post #11
Sure, the work is only at initial stage.
There is NVidia GPU temperature reading at alpha stage.
Battery temperature is near. etc.

THeKiNG
If you prepare some Device in DSDT for a kext may attach to by IONameMatch and include ACPI methods like
CODE
Method (GFN1, 0, Unserialized)
{
  Store (SIOR.FAN1, Local0)
Return (Local0)
}
Then I can create a plugin with reading
CODE
        if (kIOReturnSuccess == SIORDevice->evaluateInteger("GFN1", &tmp))
            Fan1speed = ((int)tmp;

and assign some SMC key to the value
i3-2120 GA-H61M-S1 UEFI, Radeon HD6670-UEFI, ALC887(VoodooHDA 2.8.6), OS⌘10.9.5, OS⌘ 10.7.5 Clover FakeSMC_plugins_3.3.1 Realtek LAN v3.1.2
boombeng
post May 24 2010, 08:50 PM
Post #12
Well, it works when it is in S/L/E but I still don't have more sensor in istat
In kexstat we can see LPC monitor and SMC IntelThermal are loaded

CODE
89    0 0xffffff7f80dda000 0x4000     0x4000     org.mozodojo.FakeSMCLPCMonitor (1.0) <34 7 4 3>
87    0 0xffffff7f80dd5000 0x3000     0x3000     org.mozodojo.FakeSMCIntelThermal (1.1) <34 7 4 3>

In log :

CODE
24/05/10 22:33:02    kernel    FakeSMCLPCMonitor: [Debug] Initialising...
24/05/10 22:33:02    kernel    FakeSMCLPCMonitor: [Debug] Probing...
24/05/10 22:33:02    kernel    FakeSMCLPCMonitor: [Debug] Freeing...
24/05/10 22:33:02    kernel    FakeSMCLPCMonitor: [Debug] Initialising...
24/05/10 22:33:02    kernel    FakeSMCLPCMonitor: [Debug] Probing...
24/05/10 22:33:02    kernel    FakeSMCLPCMonitor: [Debug] Freeing...
24/05/10 22:33:02    kernel    FakeSMCLPCMonitor: [Debug] Initialising...
24/05/10 22:33:02    kernel    FakeSMCLPCMonitor: [Debug] Probing...
24/05/10 22:33:02    kernel    FakeSMCLPCMonitor: [Debug] Freeing...


Motherboard has a Fintek F71882FG that uses the same ID as F71882

Ioreg :
CODE
    | +-o FakeSMC  <class FakeSMC, id 0x1000001dd, !registered, !matched, activ$
    | +-o SMC  <class IOACPIPlatformDeviceCh, id 0x1000001ed, registered, match$
    | | +-o AppleSMC  <class AppleSMC, id 0x1000002f6, registered, matched, act$
    | |   +-o SMCWatchDogTimer  <class SMCWatchDogTimer, id 0x1000002f8, regist$
    | |   +-o AppleSMCClient  <class AppleSMCClient, id 0x10000048c, !registere$
    | |   +-o AppleSMCClient  <class AppleSMCClient, id 0x10000048d, !registere$


QUOTE
There is NVidia GPU temperature reading at alpha stage.

And what about ATI ? tongue.gif

Thanks again, smile.gif
THe KiNG
post May 25 2010, 03:29 AM
Post #13
QUOTE (Slice @ May 24 2010, 11:20 PM) *
THeKiNG
If you prepare some Device in DSDT for a kext may attach to by IONameMatch and include ACPI methods like
CODE
Method (GFN1, 0, Unserialized)
{
  Store (SIOR.FAN1, Local0)
Return (Local0)
}
Then I can create a plugin with reading
CODE
        if (kIOReturnSuccess == SIORDevice->evaluateInteger("GFN1", &tmp))
            Fan1speed = ((int)tmp;

and assign some SMC key to the value

Great!
I'll do this and let you know.
But we need to make sure the names aren't used on other methods, so IMO we can use something like this:
CODE
Name (SMC0, Zero) // FAN1 key
Method (RFN1, 0, NotSerialized)
{
Store (FAN1, SMC0)
Return (SMC0)
}

Then you can make it look for SMC0 to SMCZ, guess those are sufficient for what we need tongue.gif
And create a set like this:
SMC0=FAN1/System FAN
SMC1=FAN2/CPU FAN
SMC2=FAN3/Power FAN
SMC3=AUX1 FAN/Exhaust1
SMC4=AUX2 FAN/Exhaust2
// Guess 5 FANS are enough for most configurations...
Then:
SMC5=Temperature1/CPU Heatsync
SMC6=Temperature2/NorthBridge
SMC7=Temperature3
SMC8=Temperature4
SMC9=Temperature5

SMCA=CPU VCORE
SMCB=+12V
SMCC=+3.3V
SMCD=+5V
SMCE=
SMCF=
...
What do you think?
Slice
post May 25 2010, 06:25 AM
Post #14
QUOTE (Trauma @ May 24 2010, 08:05 PM) *
EDIT: Would it be possible to label the fans ? ex: CPU, front, back.... like in real macs.

You can make it by yourself in fakesmc.info.plist
CODE
            <key>SMCKeys</key>
            <dict>

                <key>F0ID</key>
                <string>CPU</string>
                <key>F1ID</key>
                <string>Chassis</string>
                <key>F2ID</key>
                <string>Front</string>

QUOTE
EDIT 2: I know we are talking about monitoring, but is there any chance to have the fan speed profiles working?

Usually fan profile works with good DSDT. You have to set _OSI="Darwin" and related Names like OSFL, OSTP etc.
Next, you must have working AppleLPC, and in some configs AppleACPIEC. And sometimes AppleACPIThermal.kext

QUOTE (THe KiNG @ May 25 2010, 06:29 AM) *
Great!
I'll do this and let you know.
But we need to make sure the names aren't used on other methods, so IMO we can use something like this:
CODE
Name (SMC0, Zero) // FAN1 key
Method (RFN1, 0, NotSerialized)
{
Store (FAN1, SMC0)
Return (SMC0)
}

Then you can make it look for SMC0 to SMCZ, guess those are sufficient for what we need tongue.gif
And create a set like this:
SMC0=FAN1/System FAN
SMC1=FAN2/CPU FAN
SMC2=FAN3/Power FAN
SMC3=AUX1 FAN/Exhaust1
SMC4=AUX2 FAN/Exhaust2
// Guess 5 FANS are enough for most configurations...
Then:
SMC5=Temperature1/CPU Heatsync
SMC6=Temperature2/NorthBridge
SMC7=Temperature3
SMC8=Temperature4
SMC9=Temperature5

SMCA=CPU VCORE
SMCB=+12V
SMCC=+3.3V
SMCD=+5V
SMCE=
SMCF=
...
What do you think?

Let it be as you propose. I only need a list of SMC keys corresponding to the SMCx
CODE
[keyDisplayNames setValue:@"Mem Controller" forKey:@"Tm0P"];
[keyDisplayNames setValue:@"Mem Bank A1" forKey:@"TM0P"];
[keyDisplayNames setValue:@"Mem Bank A2" forKey:@"TM1P"];
[keyDisplayNames setValue:@"Mem Bank A3" forKey:@"TM2P"];
[keyDisplayNames setValue:@"Mem Bank A4" forKey:@"TM3P"];
[keyDisplayNames setValue:@"Mem Bank A5" forKey:@"TM4P"];
[keyDisplayNames setValue:@"Mem Bank A6" forKey:@"TM5P"];
[keyDisplayNames setValue:@"Mem Bank A7" forKey:@"TM6P"];
[keyDisplayNames setValue:@"Mem Bank A8" forKey:@"TM7P"];
[keyDisplayNames setValue:@"Mem Bank B1" forKey:@"TM8P"];
[keyDisplayNames setValue:@"Mem Bank B2" forKey:@"TM9P"];
[keyDisplayNames setValue:@"Mem Bank B3" forKey:@"TMAP"];
[keyDisplayNames setValue:@"Mem Bank B4" forKey:@"TMBP"];  
[keyDisplayNames setValue:@"Mem Bank B5" forKey:@"TMCP"];
[keyDisplayNames setValue:@"Mem Bank B6" forKey:@"TMDP"];
[keyDisplayNames setValue:@"Mem Bank B7" forKey:@"TMEP"];
[keyDisplayNames setValue:@"Mem Bank B8" forKey:@"TMFP"];
[keyDisplayNames setValue:@"Mem module A1" forKey:@"TM0S"];
[keyDisplayNames setValue:@"Mem module A2" forKey:@"TM1S"];
[keyDisplayNames setValue:@"Mem module A3" forKey:@"TM2S"];
[keyDisplayNames setValue:@"Mem module A4" forKey:@"TM3S"];
[keyDisplayNames setValue:@"Mem module A5" forKey:@"TM4S"];
[keyDisplayNames setValue:@"Mem module A6" forKey:@"TM5S"];
[keyDisplayNames setValue:@"Mem module A7" forKey:@"TM6S"];
[keyDisplayNames setValue:@"Mem module A8" forKey:@"TM7S"];
[keyDisplayNames setValue:@"Mem module B1" forKey:@"TM8S"];
[keyDisplayNames setValue:@"Mem module B2" forKey:@"TM9S"];
[keyDisplayNames setValue:@"Mem module B3" forKey:@"TMAS"];
[keyDisplayNames setValue:@"Mem module B4" forKey:@"TMBS"];
[keyDisplayNames setValue:@"Mem module B5" forKey:@"TMCS"];
[keyDisplayNames setValue:@"Mem module B6" forKey:@"TMDS"];
[keyDisplayNames setValue:@"Mem module B7" forKey:@"TMES"];
[keyDisplayNames setValue:@"Mem module B8" forKey:@"TMFS"];
[keyDisplayNames setValue:@"CPU A" forKey:@"TC0H"];
[keyDisplayNames setValue:@"CPU A" forKey:@"TC0D"];
[keyDisplayNames setValue:@"CPU B" forKey:@"TC1D"];
[keyDisplayNames setValue:@"CPU C" forKey:@"TC2D"];
[keyDisplayNames setValue:@"CPU D" forKey:@"TC3D"];
[keyDisplayNames setValue:@"CPU A" forKey:@"TCAH"];
[keyDisplayNames setValue:@"CPU B" forKey:@"TCBH"];
[keyDisplayNames setValue:@"CPU C" forKey:@"TCCH"];
[keyDisplayNames setValue:@"CPU D" forKey:@"TCDH"];
[keyDisplayNames setValue:@"GPU" forKey:@"TG0P"];
[keyDisplayNames setValue:@"Ambient" forKey:@"TA0P"];
[keyDisplayNames setValue:@"HD Bay 1" forKey:@"TH0P"];
[keyDisplayNames setValue:@"HD Bay 2" forKey:@"TH1P"];
[keyDisplayNames setValue:@"HD Bay 3" forKey:@"TH2P"];
[keyDisplayNames setValue:@"HD Bay 4" forKey:@"TH3P"];
[keyDisplayNames setValue:@"Optical Drive" forKey:@"TO0P"];
[keyDisplayNames setValue:@"Heatsink A" forKey:@"Th0H"];
[keyDisplayNames setValue:@"Heatsink B" forKey:@"Th1H"];
[keyDisplayNames setValue:@"Heatsink C" forKey:@"Th2H"];
[keyDisplayNames setValue:@"GPU Diode" forKey:@"TG0D"];
[keyDisplayNames setValue:@"GPU Heatsink" forKey:@"TG0H"];
[keyDisplayNames setValue:@"GPU Heatsink 2" forKey:@"TG1H"];
[keyDisplayNames setValue:@"Power supply 2" forKey:@"Tp1C"];
[keyDisplayNames setValue:@"Power supply 1" forKey:@"Tp0C"];
[keyDisplayNames setValue:@"Power supply 1" forKey:@"Tp0P"];
[keyDisplayNames setValue:@"Enclosure Base" forKey:@"TB0T"];
[keyDisplayNames setValue:@"Enclosure Base 2" forKey:@"TB1T"];
[keyDisplayNames setValue:@"Enclosure Base 3" forKey:@"TB2T"];
[keyDisplayNames setValue:@"Enclosure Base 4" forKey:@"TB3T"];
[keyDisplayNames setValue:@"Northbridge 1" forKey:@"TN0P"];
[keyDisplayNames setValue:@"Northbridge 2" forKey:@"TN1P"];
[keyDisplayNames setValue:@"Northbridge" forKey:@"TN0H"];
[keyDisplayNames setValue:@"Expansion Slots" forKey:@"TS0C"];
[keyDisplayNames setValue:@"Airport Card" forKey:@"TW0P"];

[keyDisplayNames setValue:@"PCI Slot 1 Pos 1" forKey:@"TA0S"];
[keyDisplayNames setValue:@"PCI Slot 1 Pos 2" forKey:@"TA1S"];
[keyDisplayNames setValue:@"PCI Slot 2 Pos 1" forKey:@"TA2S"];
[keyDisplayNames setValue:@"PCI Slot 2 Pos 2" forKey:@"TA3S"];
[keyDisplayNames setValue:@"Ambient 2" forKey:@"TA1P"];
[keyDisplayNames setValue:@"Power supply 2" forKey:@"Tp1P"];
[keyDisplayNames setValue:@"Power supply 3" forKey:@"Tp2P"];
[keyDisplayNames setValue:@"Power supply 4" forKey:@"Tp3P"];
[keyDisplayNames setValue:@"Power supply 5" forKey:@"Tp4P"];
[keyDisplayNames setValue:@"Power supply 6" forKey:@"Tp5P"];
i3-2120 GA-H61M-S1 UEFI, Radeon HD6670-UEFI, ALC887(VoodooHDA 2.8.6), OS⌘10.9.5, OS⌘ 10.7.5 Clover FakeSMC_plugins_3.3.1 Realtek LAN v3.1.2
THe KiNG
post May 25 2010, 09:23 AM
Post #15
QUOTE (Slice @ May 25 2010, 09:25 AM) *
Let it be as you propose. I only need a list of SMC keys corresponding to the SMCx

OK! Here we go:

CODE
// Fan Keys:

SMC0 = F0ID "System Fan"
SMC1 = F1ID "Processor Fan"
SMC2 = F2ID "Power Fan"
SMC3 = F3ID "Intake Fan"
SMC4 = F4ID "Exhaust Fan"
SMC5 = F5ID "Aux Fan"
SMC6 = To be filled
SMC7 = To be filled
SMC8 = To be filled
SMC9 = To be filled

// Temperature Keys:

SMCA = TC0H "CPU Heatsink"
SMCB = TN0H "MCP/MCH/Northbridge Heatsink"
SMCC = TW0P "AUX Sensor"
SMCD = To be filled
SMCE = To be filled
SMCF = To be filled
SMCG = To be filled
SMCH = To be filled
SMCI = To be filled
SMCJ = To be filled

// Voltage Keys (V):

SMCK = VCAC "CPU Core Voltage"
SMCL = Vp0C "+12V Voltage"
SMCM = Vp1C "+3.3V Voltage"
SMCN = Vp2C "+5V Voltage"

// Current Values (A):

SMCO = ICAC "CPU Core Current"
SMCP = Ip0C "+12V Current"
SMCQ = Ip1C "+3.3V Current"
SMCR = Ip2C "+5V Current

// Power Keys (W):

SMCS = PC0C "CPU Core Power"
SMCT = To be filled
SMCU = To be filled
SMCV = To be filled
SMCW = To be filled
SMCX = To be filled
SMCY = To be filled
SMCZ = To be filled


What do you think?
Slice
post May 25 2010, 09:31 AM
Post #16
OK! It will be standard.
And what about the device containing this methods?

PS.
For Thermal Zone I use key TN0P aka Northbridge
For NVidia GPU - TG0D - GPU diode
LPC monitor uses keys: TN0P, Th0H,
For Intel CPU keys TC0D, TC1D...
And Fans 0-5
i3-2120 GA-H61M-S1 UEFI, Radeon HD6670-UEFI, ALC887(VoodooHDA 2.8.6), OS⌘10.9.5, OS⌘ 10.7.5 Clover FakeSMC_plugins_3.3.1 Realtek LAN v3.1.2
THe KiNG
post May 25 2010, 10:59 AM
Post #17
QUOTE (Slice @ May 25 2010, 12:31 PM) *
OK! It will be standard.
And what about the device containing this methods?

USE the built-in one? => SIOR?
Or create a new one like ATKD?
Slice
post May 25 2010, 11:57 AM
Post #18
May be write
Name (_CID, "monitor")
?
So I can write IONameMatch="monitor"

But other question
CODE
                   Name (SMC0, Zero) // FAN1 key
                    Method (RFN1, 0, NotSerialized)
                    {
                        Store (FAN1, SMC0)
                        Return (SMC0)
                    }

I can't read SMC0 because it will not be refreshed by the request.
I need to read RFN1. So I think it is better to write
CODE
                    Method (SMC0, 0, NotSerialized)
                    {
                        Store (FAN1, Local0)
                        Return (Local0)
                    }

I already do it for Thermal zone
CODE
            Method (_TMP, 0, NotSerialized) // get current temp
            {
                Store (\_SB.PCI0.LPCB.WSEC.C2K (\_SB.PCI0.LPCB.WSEC.THS0), Local0)
                Return (Local0)
            }


Another question. What about units to convert values?
For Thermal Zone I know that it is Kelvin*10 and convert it to Celsius in the driver.
What you do? Convert to appropriate units in DSDT so I read it 1:1 or I need to do some conversion in the driver?
i3-2120 GA-H61M-S1 UEFI, Radeon HD6670-UEFI, ALC887(VoodooHDA 2.8.6), OS⌘10.9.5, OS⌘ 10.7.5 Clover FakeSMC_plugins_3.3.1 Realtek LAN v3.1.2
THe KiNG
post May 25 2010, 12:48 PM
Post #19
Yes you right about SMC0-Z stuff must be on method.
But can we use Local0 for all or on each Method we use another like Local1 and so?

We can try this:

CODE
    Method (OSDW, 0, NotSerialized)
    {
        If (CondRefOf (_OSI, Local0))
        {
            If (_OSI ("Darwin"))
            {
                Return (One)
            }
        }

        Return (Zero)
    }


CODE
Device (SMCK)
{
Name (_HID, EisaId ("PNP0C02"))
Name (_CID, "monitor")
Method (_STA, 0, NotSerialized)
{
If (OSDW ())
{
Return (0x0F)
}
Return (Zero)
}

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

Method (SMC1, 0, NotSerialized)
{
Store (FAN2, Local0)
Return (Local0)
}
}

IASL dosen't complain, so we can't know w/o to try tongue.gif

About conversions stuff lemme look on DSDT code and see, but first lets get main stuff working.
Slice
post May 25 2010, 02:30 PM
Post #20
I think Local0 is local for {} or inside a Name/Method as I see at whole DSDT.
It's a pity I can't give you a test driver at the moment. I am on three days trip and will be here only on friday. Wait, please.

But you can test by imitating Thermal Zone. The driver at topic.
CODE
    Scope (_TZ)
    {
        ThermalZone (THM)
        {
            Method (_TMP, 0, NotSerialized) // get current temp
            {
                Store (FAN1, Local0)
                Return (Local0)
            }

        }
    }

i3-2120 GA-H61M-S1 UEFI, Radeon HD6670-UEFI, ALC887(VoodooHDA 2.8.6), OS⌘10.9.5, OS⌘ 10.7.5 Clover FakeSMC_plugins_3.3.1 Realtek LAN v3.1.2

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