Jump to content

Please help with DSDT editing, fan speed not detecting


Ccc
 Share

4 posts in this topic

Recommended Posts

Could anyone please help with editing DSDT to detect fan speed?

Fan speed not detected by SMC monitor, HWMonitor, iStat Menus, iStat Pro.

The super I/O seems to be it8502e by RW everything.

 

my Laptop is dell inspiron 1464.

chipset HM55

CPU:i5-430m (c-state p-state enabled)

ATI 4330 512MB (QE/CI enabled)

Lion 10.7.2

Chameleon v2.1svn r1618

FakeSMC v4 rev530

 

 

Tried add Device (SMCD) and Method (FAN0, and add ACPISensor.kext or ITEIT87x.kext to /S/L/E, but still not working.

 

Here is the code I used before the Device (EC0):

Device (SMCD)
		    {
			    Name (_HID, "MONITOR")
			    Method (FAN0, 0, NotSerialized)
			    {
				    Store (^^EC0.FANH, Local0)
				    Store (^^EC0.FANL, Local1)
				    And (Local0, 0xFFFF, Local0)
				    And (Local1, 0xFFFF, Local1)
				    If (LNotEqual (Local0, Zero))
				    {
					    If (LEqual (Local0, 0xFFFF))
					    {
						    Store (Zero, Local0)
					    }
					    Else
					    {
						    Store (0x0100, Local2)
						    Multiply (Local0, Local2, Local3)
						    Add (Local1, Local3, Local4)
						    Divide (0x03938700, Local4, Local5, Local6)
						    Store (Local6, Local0)
					    }
				    }
				    Else
				    {
					    Store (Zero, Local0)
				    }
				    Return (Local0)
			    }
		    }

 

Here FANH and FANL are the high bits and low bits of fan speed that I can confirm in Win7 using everest, for example, FANH=0x0C, FANL=0x85, then fan speed=0x0C85 = 3205 rpm. but I couldn't understand why Divide (0x03938700, Local4, Local5, Local6).

so i changed it to below, seems correct and compile passed, but still not detecting fan speed.

 

Device (SMCD)
		    {
			    Name (_HID, "MONITOR")
			    Method (FAN0, 0, NotSerialized)
			    {
				    Store (^^EC0.FANH, Local0)
				    Store (^^EC0.FANL, Local1)
				    And (Local0, 0xFFFF, Local0)
				    And (Local1, 0xFFFF, Local1)
				    If (LNotEqual (Local0, Zero))
				    {
					    If (LEqual (Local0, 0xFFFF))
					    {
						    Store (Zero, Local0)
					    }
					    Else
					    {
						    Store (0x0100, Local2)
						    Multiply (Local0, Local2, Local3)
						    Add (Local1, Local3, Local4)
						    Store (Local4, Local0)
					    }
				    }
				    Else
				    {
					    Store (Zero, Local0)
				    }
				    Return (Local0)
			    }
		    }

Link to comment
Share on other sites

  • 1 year later...
  • 7 months later...
 Share

×
×
  • Create New...