Help - Search - Members - Calendar
Full Version: Monitoring With Fakesmc
Project OS X Forums > Snow Leopard Guides & Tutorials > Tools
Pages: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20
Slice
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)
                     }
                    
                }

Click to view attachment
How to install FakeSMC

To look the values you need iStatMenu or iStatPro.
The last one I have modified to show battery info.
Click to view attachment

To monitor Thermal Zone (- deprecated) you need AppleACPIThermal.kext.
Correct it dependency to your AppleACPIPlatform version.
Click to view attachment
About it look at the thread

Utility to check all SMC values
Click to view attachment

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
Click to view attachment

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.
Click to view attachment
28.07.2010
Bugs corrected, new devices added

13.09.2010
Updates. Mistakes with x3100.
Click to view attachment
Click to view attachment

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.
rals2007
Great!. Its working on my Wind, S10 Netbooks. I will test it more. smile.gif
Slice
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.
boombeng
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
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.
boombeng
I added
CODE
    <key>OSBundleRequired</key>
    <string>Root</string>

to the 3 plugins and get a kernel Panic on LPCMonitor
Clubber_77
Click to view attachment
rals2007
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.
Trauma
Great work!! This is working flawlessly here biggrin.gif

Click to view attachment

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?
THe KiNG
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
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
boombeng
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
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
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"];
THe KiNG
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
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
THe KiNG
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
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?
THe KiNG
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
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)
            }

        }
    }

THe KiNG
Sure no problem, I'll play with what we have so far...
BTW on fakesmc.cpp:
UInt32 line = 0x06;
should be
UInt64 line = 0x06;
a small cosmetic "bug" tongue.gif

L.E. Tried but failed, only way to get plug-ins loaded w/o panic was to put them on s/l/e, including fakesmc.kext
I got fan to display(on my lappie _TZ), but after few sec/refresh speed goes wrong with negative values or crazy speed over 3000 rpm
No idea what is wrong, calling same registers from everest on win gave me right values:



Well everest fail too to read RPM(display static 2400 rpm) but if I query those registers I get good values, e.g. reading ECPU gave me identical value with CPU temp on everst sensor...
boombeng
I understand better why it fails with Fintek F71882FG chip : in LPCMonitor plugin's source the fintek part is empty so there is not Fintek support for the moment wink.gif
Slice
Yes, I made it! See revision 38 at topic.

QUOTE (THe KiNG @ May 25 2010, 10:08 PM) *
Sure no problem, I'll play with what we have so far...
BTW on fakesmc.cpp:
UInt32 line = 0x06;
should be
UInt64 line = 0x06;
a small cosmetic "bug" tongue.gif

You mean unusable at PC architecture IRQ 6?
QUOTE
L.E. Tried but failed, only way to get plug-ins loaded w/o panic was to put them on s/l/e, including fakesmc.kext

Don't know why. I hate /Extra.

My results:
CODE
                Device (WSEC)   //I think it is Winbond
                {
                    Name (TBSE, 0x0AAC)
                    Name (_HID, EisaId ("PNP0C02"))
                    Name (_CID, "monitor")     //my addition
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x004E,             // Range Minimum    
......
                    OperationRegion (TMIF, SystemMemory, 0xFF800160, 0x20)
                    Field (TMIF, ByteAcc, Lock, Preserve)
                    {
                        THS0,   8,     // thermometer, used by Thermal Zone
                        THS1,   8,     // unknown sensor
                        THS2,   8,    // one more
                                Offset (0x08),
                        FAN1,   8,    // FAN, the only one I have
                                Offset (0x10),
                        TSP0,   8,    // hot point?
                        TSC0,   8,   // critical temperature used by Thermal Zone
                        TSP1,   8,   // ??
                        TSC1,   8    // catastrophic value?
                    }

So I decided to exclude Thermal Zone plugin and create more advanced ACPI monitor with these sensors.
CODE
                    Method (SMC0, 0, NotSerialized) //System FAN0
                    {
                        Store (FAN1, Local0)
                        Return (Local0)
                     }
                    
                    Method (SMCA, 0, NotSerialized) //CPU heatsink
                    {
                        Store (THS0, Local0)
                        Return (Local0)
                     }
                    
                    Method (SMCB, 0, NotSerialized) //MCH Northbrige
                    {
                        Store (THS1, Local0)
                        Return (Local0)
                     }
                    
                    Method (SMCC, 0, NotSerialized) //AUX sensor
                    {
                        Store (THS2, Local0)
                        Return (Local0)
                     }

About temperature I know that it is Celsius (because of Thermal Zone usage) but what about FAN?
It is 1 byte value 0..255.
I checked and found that when the FAN stopped the value = 0xFF. Faster run - slow value.
So I invert it and multiply by 10 to get a range of 0..2550.
FanSpeed=(~Value)*10;
Now I have three state
Fan stopped 0rpm
Fan slow 920rpm
Fan fast 1260rpm
Dunno if it is correct values but it clear to see.
Click to view attachment
At the picture Heatsink A and B - my tests.
Airpot Card correspond to SMCkey TW0P and SMCC method. Don't know what is the sensor but it heated and cooled. It is temperature!

THe KiNG
Your turn!
aschar
Great new version rev 38 doesnt kp. My ITE IT8270F is not loading (kernel FakeSMCLPCMonitor: [Warning] Invalid ITE IT8720F reading).
Gigabyte EX58UD5
THe KiNG
QUOTE (Slice @ May 28 2010, 09:19 AM) *
You mean unusable at PC architecture IRQ 6?


No I mean it should be QWord not DWord, look on original ioreg on SMC is: <06 00 00 00 00 00 00 00> not <06 00 00 00> as with FakeSMC, I know is just cosmetic but I pay attention to details tongue.gif

QUOTE (Slice @ May 28 2010, 09:19 AM) *
Don't know why. I hate /Extra.


I don't tongue.gif
Testing with stuff on /S/L/E make it harder to recover in case of KP...and it does KP a lot if something is wrong..
IMHO is about dependencies to FakeSMC, something is wrong there...

QUOTE (Slice @ May 28 2010, 09:19 AM) *
My results:
CODE
                Device (WSEC)   //I think it is Winbond
                {
                    Name (TBSE, 0x0AAC)
                    Name (_HID, EisaId ("PNP0C02"))
                    Name (_CID, "monitor")     //my addition
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x004E,             // Range Minimum    
......
                    OperationRegion (TMIF, SystemMemory, 0xFF800160, 0x20)
                    Field (TMIF, ByteAcc, Lock, Preserve)
                    {
                        THS0,   8,     // thermometer, used by Thermal Zone
                        THS1,   8,     // unknown sensor
                        THS2,   8,    // one more
                                Offset (0x08),
                        FAN1,   8,    // FAN, the only one I have
                                Offset (0x10),
                        TSP0,   8,    // hot point?
                        TSC0,   8,   // critical temperature used by Thermal Zone
                        TSP1,   8,   // ??
                        TSC1,   8    // catastrophic value?
                    }

So I decided to exclude Thermal Zone plugin and create more advanced ACPI monitor with these sensors.
CODE
                    Method (SMC0, 0, NotSerialized) //System FAN0
                    {
                        Store (FAN1, Local0)
                        Return (Local0)
                     }
                    
                    Method (SMCA, 0, NotSerialized) //CPU heatsink
                    {
                        Store (THS0, Local0)
                        Return (Local0)
                     }
                    
                    Method (SMCB, 0, NotSerialized) //MCH Northbrige
                    {
                        Store (THS1, Local0)
                        Return (Local0)
                     }
                    
                    Method (SMCC, 0, NotSerialized) //AUX sensor
                    {
                        Store (THS2, Local0)
                        Return (Local0)
                     }

About temperature I know that it is Celsius (because of Thermal Zone usage) but what about FAN?
It is 1 byte value 0..255.
I checked and found that when the FAN stopped the value = 0xFF. Faster run - slow value.
So I invert it and multiply by 10 to get a range of 0..2550.
FanSpeed=(~Value)*10;
Now I have three state
Fan stopped 0rpm
Fan slow 920rpm
Fan fast 1260rpm
Dunno if it is correct values but it clear to see.
Click to view attachment
At the picture Heatsink A and B - my tests.
Airpot Card correspond to SMCkey TW0P and SMCC method. Don't know what is the sensor but it heated and cooled. It is temperature!

THe KiNG
Your turn!

GREAT!

OK so the plug-in looks for "monitor" and SMC0-x(those defined)
Just a check to be sure I'll do tests OK.
Really no idea on FAN rpm stuff, but if you got good results then could be fine, I'll test and report back.

About Voltages, ASUS stuff:
CODE
Method (HWV0, 0, NotSerialized) // Hardware Voltage 0
{
Return (Multiply (VCOR, 0x08))
}

Method (HWV1, 0, NotSerialized) // Hardware Voltage 1
{
Return (Multiply (V12V, 0x08))
}

Method (HWV3, 0, NotSerialized) // Hardware Voltage 2
{
Return (Multiply (V33V, 0x08))
}

Method (HWV4, 0, NotSerialized) // Hardware Voltage 3
{
Return (Multiply (V50V, 0x08))
}

"Translate" that, or we should use the same on our SMCx methods...
For the Power(W) and Current(A) I have zero idea what would be the formula...
I'll look on ATKD in windows since DSDT has nothing for it.

thanks!
anibalin
installing AppleACPIThermal and fakesmc in s/l/e does the trick. thanks.
Kano
it panic on my Hack
CPU:E5200
MB:MSI P43 Neo-F
blackCH
It panics here too. Asus P5K-VM board
Click to view attachment
oldnapalm
Thanks guys, great work.

It adds northbridge temp on ASUS P5E.



Plugins load if fakesmc is in /S/L/E, but don't if it's in /E/E.

Using PTKawainVi boot hangs at
CODE
NVDANV50HAL loaded and registered
NVDA Architecture: NV92

on GeForce 9800 GTX.
Slice
At the current moment we have pugins for the fakesmc to look the follow:
Intel CPU temperatures
LPC monitor (ITE or Winbond) - Northbridge and Fans - need to write its names into fakesmc.info.plist
ACPI monitor - Nothbridge, Fans, Voltages, Currents - needs to modify DSDT
NVidia card - GPU temperature and Fan
Intel X3100 - GPU temperature

But the work is not finished. The kexts are in stage of testing.
No ideas about ATI video cards.
Click to view attachment
smith@@
QUOTE (Slice @ May 30 2010, 07:33 PM) *
LPC monitor (ITE or Winbond) - Northbridge and Fans - need to write its names into fakesmc.info.plist
ACPI monitor - Nothbridge, Fans, Voltages, Currents - needs to modify DSDT



Ok, but what i must add with accuracy and precision in dsdt for "ACPI monitor" and what i must write in fakesmc.info.plist for LPC monitor..

Thanks Slice;)

Ps. P5Q deluxe
aschar
The fakesmc 2.6.2 source works here now with ITE IT8270f without dsdt patch showing cpu voltage and my 2 fans (speed seems to be correct fan1 is a 1500rpm showing 1500rpm). The Nvidia Plugin does not work yet. It shows GPU Diode on my GTX275 but no value (fan is not connected).

Debug Message 30.05.10 22:52:53 kernel PTKawainVi: started
30.05.10 22:52:53 kernel NVDA Device ID:5e6
30.05.10 22:52:53 kernel NVDA Architecture: NV200
30.05.10 22:52:53 kernel vmmon: Service start

Click to view attachment
blackCH
I got it working. Installed in S/L/E, otherwise it panics
LPCmonitor shows only Northbridge temp, no fans yet
Click to view attachment
Im on a ASUS-P5K VM.

Thanks Slice! Looks great


On my HP6720s (sta rosa platform) I dont get any extra sensors. On windows the sensors picked by Everest are CPU temperature, Motherboard temperature and CPU voltage.
The IC on board seems to be an ADM1021a ( http://www.onsemi.com/PowerSolutions/product.do?id=ADM1021A )
This is from the log:

CODE
5/30/10 11:33:53 PM    kernel    FakeSMC: Opensource SMC device emulator by netkas (C) 2009
5/30/10 11:33:53 PM    kernel    FakeSMC: Monitoring plugins support by mozodojo (C) 2010
5/30/10 11:33:59 PM    kernel    FakeSMCIntelThermal: [Debug] CPU family 0x6, model 0xf, stepping 0xd
5/30/10 11:33:59 PM    kernel    FakeSMCIntelThermal: [Debug] CPU Tjmax 95
5/30/10 11:33:59 PM    kernel    FakeSMCLPCMonitor: [Debug] Initialising...
5/30/10 11:33:59 PM    kernel    FakeSMCLPCMonitor: [Debug] Probing...
5/30/10 11:33:59 PM    kernel    FakeSMCLPCMonitor: Found unknown ITE with ID 0x3600
5/30/10 11:33:59 PM    kernel    FakeSMCLPCMonitor: [Debug] Starting...
5/30/10 11:33:59 PM    kernel    FakeSMCLPCMonitor: [Warning] Invalid vendor ID 0x0, must be 0x90
5/30/10 11:33:59 PM    kernel    FakeSMCLPCMonitor: [Debug] Freeing...
5/30/10 11:33:59 PM    kernel    FakeSMCLPCMonitor: [Debug] Initialising...
5/30/10 11:33:59 PM    kernel    FakeSMCLPCMonitor: [Debug] Probing...
5/30/10 11:33:59 PM    kernel    FakeSMCLPCMonitor: Found Unknown Winbond / Fintek with ID 0x3600


Only FakeSMCIntelThermal shows in the kextstat

alphamerik
Hi, thanks for posting this and the source! The kext you provided works great, but I am having a hard time getting the PlugIns to work. Adding the nVidia kext to the plugins folder doesn't seem to work.

When I compile the most recent fakesmc source and associated plugins it doesn't seem like any of the plugins are registered (only fakesmc shows up in dmesg). Any ideas or tips? Many thanks!
THe KiNG
QUOTE (alphamerik @ May 31 2010, 05:46 AM) *
Any ideas or tips? Many thanks!

As many before said, until they got mature, install all extensions on default path: /System/Library/Extensions
Or, if you did that, your Super I/O is not supported yet. Use Lavalys Everest to find out the model(check on sensors)

@Slice

Seems "monitor" is not implemented, so worked only with SMCx methods on _TZ device:
-CPU heatsink is done
-CPU FAN, no matter what I tried couldn't get rid on negative values, I used DSDT tachometer method to get some good values, share what you did in DSDT to try?
Here is what I used:

CODE
Method (SMC0, 1, NotSerialized) //Notebook FAN
{
Store (\_SB.PCI0.SBRG.EC0.TACH (Arg0), Local0) // Tach is orig method

If (LLessEqual (Local0, Zero)) // No effect still got negative values
{
Store (Zero, Local0)
}

If (LNotEqual (Local0, Zero)) // From original tachometer method
{
Store (0x80, Local1)
Store (0x02, Local2)
Multiply (Local1, Local2, Local3)
Multiply (Local0, Local3, Local4)
Divide (0x03938700, Local4, Local5, Local6)
Multiply (Local6, 0x0A, Local6)
Store (Local6, Local0)
}

Return (Local0)
}


With this one I got positive values from 130 to 1300 rpm, but sometimes(guess when fan is off?) I got also negative values :|

I have no other sensors to play on lappie, no datasheet avail for ITE IT8752TE so dunno what can I add more...

L.E. Something got wrong on latest revision of FakeSMCLPCMonitor:

CODE
May 31 11:00:53 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Initialising...
May 31 11:00:53 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Probing...
May 31 11:00:53 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Probing ITE...
May 31 11:00:53 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Probing Winbond...
May 31 11:00:53 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Freeing...
May 31 11:00:53 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Probing...
May 31 11:00:53 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Probing ITE...
May 31 11:00:53 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Probing Winbond...
May 31 11:00:53 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Freeing...
May 31 11:00:53 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Initialising...
May 31 11:00:53 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Probing...
May 31 11:00:53 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Probing ITE...
May 31 11:00:54 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Probing Winbond...
May 31 11:00:54 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Freeing...
May 31 11:00:54 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Initialising...
May 31 11:00:54 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Probing...
May 31 11:00:54 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Probing ITE...
May 31 11:00:54 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Probing Winbond...
May 31 11:00:54 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Freeing...
May 31 11:00:54 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Initialising...
May 31 11:00:54 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Probing...
May 31 11:00:54 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Probing ITE...
May 31 11:00:54 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Probing Winbond...
May 31 11:00:54 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Freeing...
May 31 11:00:54 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Probing...
May 31 11:00:54 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Probing ITE...
May 31 11:00:54 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Probing Winbond...
May 31 11:00:54 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Freeing...
May 31 11:00:54 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Initialising...
May 31 11:00:54 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Probing...
May 31 11:00:54 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Probing ITE...
May 31 11:00:54 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Probing Winbond...
May 31 11:00:54 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Freeing...
May 31 11:00:57 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Initialising...
May 31 11:00:57 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Probing...
May 31 11:00:57 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Probing ITE...
May 31 11:00:57 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Probing Winbond...
May 31 11:00:57 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Freeing...
May 31 11:01:01 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Initialising...
May 31 11:01:01 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Probing...
May 31 11:01:01 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Probing ITE...
May 31 11:01:01 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Probing Winbond...
May 31 11:01:01 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Freeing...
May 31 11:01:02 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Initialising...
May 31 11:01:02 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Probing...
May 31 11:01:02 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Probing ITE...
May 31 11:01:02 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Probing Winbond...
May 31 11:01:02 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Freeing...
May 31 11:01:02 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Initialising...
May 31 11:01:02 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Probing...
May 31 11:01:02 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Probing ITE...
May 31 11:01:02 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Probing Winbond...
May 31 11:01:02 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Freeing...
May 31 11:11:46 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Initialising...
May 31 11:11:46 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Probing...
May 31 11:11:46 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Probing ITE...
May 31 11:11:46 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Probing Winbond...
May 31 11:11:46 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Freeing...
May 31 11:11:50 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Initialising...
May 31 11:11:50 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Probing...
May 31 11:11:50 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Probing ITE...
May 31 11:11:50 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Probing Winbond...
May 31 11:11:50 THe-KiNG kernel[0]: FakeSMCLPCMonitor: [Debug] Freeing...
гык-sse2
About GTX275: currently there is no way to monitor GT200 cards, only GeForce 6...9 series, 'cause gt200 uses i2c sensor instead of internal GPU diode.
The kext is no longer named PTKawainVi, that old one doesn't work but hangs or panics. The FakeSMCnVidiaMonitor is in SVN, use it.
https://www.assembla.com/spaces/fakesmc

Slice, please, remove PTKawainVi and add SVN link here!
alphamerik
QUOTE (THe KiNG @ May 31 2010, 07:09 AM) *
As many before said, until they got mature, install all extensions on default path: /System/Library/Extensions
Or, if you did that, your Super I/O is not supported yet. Use Lavalys Everest to find out the model(check on sensors)


Have been installing in S/L/E exclusively.
My I/O is supported, the pre-built kext works fine and recognizes my system and HDD temperature sensors.

When I build the kext from source is when the plugins don't work, I compiled and moved the ACPI, Intel, LPC, and nVidia monitors. Built with 10.5 api on release mode. Compiling from newest Subversion.
blackCH
Compiled from source last kexts. Nvidia monitor plugin works with my 9500GT. Temperature stays always between 45c to 47c, Is that right?
x3100 monitor works also on my HP6720s, one of the values (GPU diode) stays always in 127, the other seems correct...
Looking very good! Thanks
alphamerik
Hey guys, I was able to get everything to work on 10.5, thanks again!

I had to modify the OSBundleLibraries key in Info.plist to allow things to load. 'kextload -nt' was a helpful tool here.
Are there any good utilities to monitor the nVidia diode? I am using atMonitor and the GPUT isn't recognized, not listing in iStat either. Assuming the diode is recognized here is the dmesg:
CODE
PTKawainVi: started
NVDA Device ID:611
NVDA Architecture: NV92


Any other utilities or a way to get GPU temp to work in atMonitor? Thanks esp to usr-sse2! smile.gif
гык-sse2
QUOTE (alphamerik @ May 31 2010, 08:42 PM) *
Hey guys, I was able to get everything to work on 10.5, thanks again!

I had to modify the OSBundleLibraries key in Info.plist to allow things to load. 'kextload -nt' was a helpful tool here.
Are there any good utilities to monitor the nVidia diode? I am using atMonitor and the GPUT isn't recognized, not listing in iStat either. Assuming the diode is recognized here is the dmesg:
CODE
PTKawainVi: started
NVDA Device ID:611
NVDA Architecture: NV92


Any other utilities or a way to get GPU temp to work in atMonitor? Thanks esp to usr-sse2! smile.gif

Hm: it's not listed in iStat settings? Download EvOToolsX or SMCTool and check the value of key TC0D. Is there such a key?
smith@@
Hi, with last revision i have in istat menu only cpu and hd, but not gpu (9800GT), fan and voltage. What i must insert in dsdt for fan and voltage? My dsdt is very "small". I have a p5q deluxe...

Thanks
Slice
SMC_util in topic
smith@@
iMac-di-smith-3:~ smith$ /Users/smith/Desktop/SMC_util2 -l
#KEY [ui32] 25 (bytes 00 00 00 19)
CIST [ui32] 84 (bytes 49 42 53 54)
OSK0 [ch8*] (bytes 6f 75 72 68 61 72 64 77 6f 72 6b 62 79 74 68 65 73 65 77 6f 72 64 73 67 75 61 72 64 65 64 70 6c)
$Num [ui8 ] (bytes 01)
NVPR [ch8*] (bytes 00 00 00 00 00 00)
BALG [ch8*] (bytes 00 00 00 00 00 00)
LSSB [ui16] 1 (bytes 01 01)
LSOF [ui8 ] (bytes 01)
REV [ch8*] (bytes 01 30 0f 00 00 03)
MOST [ch8*] (bytes 00 00 00 00 00 00)
ACID [ch8*] (bytes 00 00 00 00 00 00)
MSDS [ch8*] (bytes 00 00 00 00 00 00)
NATJ [ui8 ] (bytes 00)
MSSP [ui8 ] (bytes 00)
OSK1 [ch8*] (bytes 65 61 73 65 64 6f 6e 74 73 74 65 61 6c 28 63 29 41 70 70 6c 65 43 6f 6d 70 75 74 65 72 49 6e 63)
NATi [ui16] 0 (bytes 00 00)
CLKT [ui32] 178 (bytes 00 01 0d b2)
CLKH [ch8*] (bytes 00 00 70 80 00 01 19 40)
TC0D [sp78] (bytes 38 00)
TC1D [sp78] (bytes 33 00)
TC2D [sp78] (bytes 36 00)
TC3D [sp78] (bytes 39 00)
TG0D [sp78] (bytes 87 00)
NTOK [ui8 ] (bytes 01)
MSDW [ui8 ] (bytes 01)

-----

iMac-di-smith-3:~ smith$ /Users/smith/Desktop/SMC_util2 -f
Total fans in system: 0

Mistake: i have two fan (dissi and simple fan). DSDT problem due no code specific for fun? Voltage?

Also gpu not appear in istat 3
гык-sse2
QUOTE (Trauma @ May 24 2010, 09:05 PM) *
Great work!! This is working flawlessly here biggrin.gif

Click to view attachment

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?

There is a chance, but if we cope with writing SMC key, 'cause now iStat or FanControl just can't write SMC keys.
alphamerik
QUOTE (гык-sse2 @ May 31 2010, 06:22 PM) *
Hm: it's not listed in iStat settings? Download EvOToolsX or SMCTool and check the value of key TC0D. Is there such a key?


TC0D is CPU Die, you mean TG0D?

Ok, I got for everything to work in iStat and atMonitor, here is how:
  • Changed temperature slope/offset and calcs to same as architecture case 0x50.
  • Moved "char value[2];" declaration from .cpp to .h (variable callback scope?)
  • Added TG0P, TG0T, and TG0H FakeSMCAddKeyCallbacks identical to TG0D

Again, many many thanks! wink.gif
Slice
QUOTE (alphamerik @ May 31 2010, 10:57 PM) *
[*] Moved "char value[2];" declaration from .cpp to .h (variable callback scope?)

Bad practice!
Headers is intended to use multiple times but you have not to declare variable twice or more!

гык-sse2 == Gyk-sse2 He is one of the developer of the project.
(как твой ник смотрится когда нет русского языка?)
alphamerik
QUOTE (Slice @ May 31 2010, 08:23 PM) *
Bad practice!
Headers is intended to use multiple times but you have not to declare variable twice or more!


Okay, you are probably right, sorry I didn't mean to critique the code. My concern is the variable would go out of scope and not be available for the callback since it isn't malloced (or newed). Maybe static is a better answer? Or am I just an idiot?

QUOTE (Slice @ May 31 2010, 08:23 PM) *
гык-sse2 == Gyk-sse2 He is one of the developer of the project.
(как твой ник смотрится когда нет русского языка?)


This is what I thought, excellent work and many thanks for offering your support.
blackCH
rev 93 doesnt recognize the onboard Winbond W83627DHG

before:
CODE
5/31/10 3:15:12 PM    kernel    FakeSMCLPCMonitor: Found Winbond W83627DHG


I had northbridge temp reading

rev 93:
CODE
5/31/10 10:24:36 PM    kernel    FakeSMCLPCMonitor: [Debug] Initialising...
5/31/10 10:24:36 PM    kernel    FakeSMCLPCMonitor: [Debug] Probing...
5/31/10 10:24:36 PM    kernel    FakeSMCLPCMonitor: [Debug] Probing ITE...
5/31/10 10:24:36 PM    kernel    FakeSMCLPCMonitor: [Debug] Probing Winbond...
5/31/10 10:24:36 PM    kernel    FakeSMCLPCMonitor: [Debug] Freeing...
....etc


no northbridge temp
Mojodojo
Check the latest 95. Must work now like it was. Who have any bug report, can add ticket on assembla so we'll know, what's going wrong.
boombeng
I didn't find how to post Tickets on the repo so I'll post feedback here smile.gif

With latest 95 LPCMonitor fails to load with this error :

CODE
31/05/10 23:40:51    com.apple.kextd[10]    Failed to load /System/Library/Extensions/fakesmc.kext/Contents/PlugIns/FakeSMCLPCMonitor.kext - (libkern/kext) link error.
31/05/10 23:40:51    com.apple.kextd[10]    Load org.mozodojo.FakeSMCLPCMonitor failed; removing personalities.
31/05/10 23:40:51    com.apple.kextd[10]    Failed to load /System/Library/Extensions/fakesmc.kext/Contents/PlugIns/FakeSMCLPCMonitor.kext - (libkern/kext) link error.
31/05/10 23:40:51    com.apple.kextd[10]    Load org.mozodojo.FakeSMCLPCMonitor failed; removing personalities.
31/05/10 23:40:52    kernel    kxld[org.mozodojo.FakeSMCLPCMonitor]: The following symbols are unresolved for this kext:
31/05/10 23:40:52    kernel    kxld[org.mozodojo.FakeSMCLPCMonitor]:     __ZTV7SuperIO
31/05/10 23:40:52    kernel    Can't load kext org.mozodojo.FakeSMCLPCMonitor - link failed.
31/05/10 23:40:52    kernel    Failed to load executable for kext org.mozodojo.FakeSMCLPCMonitor.
31/05/10 23:40:52    kernel    Kext org.mozodojo.FakeSMCLPCMonitor failed to load (0xdc008016).
31/05/10 23:40:52    kernel    Failed to load kext org.mozodojo.FakeSMCLPCMonitor (error 0xdc008016).
31/05/10 23:40:52    kernel    kxld[org.mozodojo.FakeSMCLPCMonitor]: The following symbols are unresolved for this kext:
31/05/10 23:40:52    kernel    kxld[org.mozodojo.FakeSMCLPCMonitor]:     __ZTV7SuperIO
31/05/10 23:40:52    kernel    Can't load kext org.mozodojo.FakeSMCLPCMonitor - link failed.
31/05/10 23:40:52    kernel    Failed to load executable for kext org.mozodojo.FakeSMCLPCMonitor.
31/05/10 23:40:52    kernel    Kext org.mozodojo.FakeSMCLPCMonitor failed to load (0xdc008016).
31/05/10 23:40:52    kernel    Failed to load kext org.mozodojo.FakeSMCLPCMonitor (error 0xdc008016).


Thank you very much guys
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2012 Invision Power Services, Inc.