The MASM Forum Archive 2004 to 2012

General Forums => The Workshop => Topic started by: formalproof on January 01, 2010, 10:01:25 AM

Title: CPU temperature detection on AMD Athlon XP
Post by: formalproof on January 01, 2010, 10:01:25 AM
I'd like to write a program in MASM to display the temperature of my AMD Athlon XP CPU.

According to page 110 of http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/31116.pdf , some kind of temperature value is accessible through "SB-TSI" and "F3xA4[CurTmp]".

Does anyone know what these are and how they can be accessed in MASM programs? The AMD manuals are difficult for me to understand, so I was unable to find this information. Can someone help me a bit?

Many thanks in advance.
Title: Re: CPU temperature detection on AMD Athlon XP
Post by: ecube on January 01, 2010, 11:39:07 AM
Minus reading it via a driver, the only way I know of in ring3 is via WMI, here's an example vbscript(.vbs) that does it, and it doesn't work for most CPU's. You can find MASM WMI code on the board somewhere.


strServer = "."

Set objWMI = GetObject("winmgmts://" & strServer & "/root\WMI")
Set objInstances = objWMI.InstancesOf("MSAcpi_ThermalZoneTemperature",48)

On Error Resume Next
For Each objInstance in objInstances
    With objInstance
        WScript.Echo .Active
        WScript.Echo Join(.ActiveTripPoint, ", ")
        WScript.Echo .ActiveTripPointCount
        WScript.Echo .CriticalTripPoint
        WScript.Echo .CurrentTemperature
        WScript.Echo .InstanceName
        WScript.Echo .PassiveTripPoint
        WScript.Echo .Reserved
        WScript.Echo .SamplingPeriod
        WScript.Echo .ThermalConstant1
        WScript.Echo .ThermalConstant2
        WScript.Echo .ThermalStamp
    End With
On Error Goto 0
Next

Title: Re: CPU temperature detection on AMD Athlon XP
Post by: formalproof on January 01, 2010, 12:17:46 PM
Would it be possible to write a program with ring 0 access? Would it be possible to write a driver in MASM? What exactly makes a program a driver in Windows XP? (My ASM textbook doesn't explain this.) I'd be grateful for any info you can give me.
Title: Re: CPU temperature detection on AMD Athlon XP
Post by: ecube on January 01, 2010, 12:23:37 PM
a driver is typically defined as "software that drives hardware" in our case it'd be software that communicates with the mobo to recieve the CPU temperature, and while it's not easy, it is possible. the program "speedfan" does it, but I think he did a lot of reversing and such. If you want to create a driver in win2k+(.drv, on 9x it's called vxd) check out http://www.freewebs.com/four-f/. As far as detecting CPU temp in kernel mode, I have no idea.
Title: Re: CPU temperature detection on AMD Athlon XP
Post by: formalproof on January 02, 2010, 10:18:44 AM
Turns out that reading the temperature through WMI doesn't work for me, since my system doesn't support MSAcpi_ThermalZoneTemperature or any of the other possible classes (such as CIM_TemperatureProbe).

So I guess the only way is to write a driver (and learn to write them), which seems like a massive undertaking.