

Similarly, if we use Arg0 as 1 (One) it will return the value in RPM for FAN 2 But what we learned here is, If we execute method TACH with Arg0 as 0 (Zero) it will give us the speed in RPM of FAN 1. Once we know that, we could write a simple ACPI code to return the value in RPMs like: // GRPM means get RPMĪs you can see this is very expensive method. So, we know that we have to store the value from TAH0 or TAH1 (depends on Arg0) and then we have to multiply it by 2 and then we have to divide it by 0x0041CDB4 (4312500) to get the value in RPMs. In order to find that formula, if you have a look at Method TACH in dsdt, you will see: Method (TACH, 1, Serialized)ĭivide (0x0041CDB4, Local0, Local1, Local0)

So, now we can read the value from these registers in some units and then we will have to use some formula to convert that unit to RPM.

So, searching for TAH0 or TAH1 we can see that they are located at offset 0x93 Note: Instead of using RWEverything if you have a look at method TACH you can see that it stores the values in TAH0 and TAH1 depending upon the Args supplied. TSTP, 16, // TSTP stores current fan value in some bytes TAH1, 16, // TAH1 stands for FAN2 (in case your laptop has 2 fans) So, when we search for Offset 0x93 in the DSDT we get a result like this: Offset (0x93), If you observe, the FAN speed is at offset 0x93 of EC (Use RWEverything to find out) There are multiple methods in our DSDT that allow us to read and control system FAN.įor example to read FAN speed, there are two ways. But in ASUS machines there is a method that takes arguments and does this job automatically. Write a value to the EC and then release the object. Like, if it was HP instead of ASUS you would have to acquire a mutex object. The system FAN is generally controlled by the embedded controller (EC) but there are methods in ACPI that can let you read and control your system FAN.Īs you might know, ASUS machines are the best for hackintosh as they have the best written ACPI code. If someone get's it working using this SSDT on machines prior to haswell. I do not have hardware below Haswell so can't test. After a lot of playing around with ASUS acpi tables I have finally come up with a SSDT that will work nearly on all ASUS laptops (Haswell or above) for reading FAN RPM, CPU TEMP and also Custom Controlling FAN.
